Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Add %k for package locking status; goes with the newly committed pkg-lock(8)
Matthew Seaman committed 12 years ago
commit a528264db2741ace18bb011d60d5be2e03294c62
parent 55772b3
1 file changed +24 -2
modified libpkg/pkg_printf.c
@@ -123,7 +123,7 @@
 * i  pkg          additional info
 *
 * j
-
 * k
+
 * k  pkg          lock status
 *
 * l  pkg          license logic
 *
@@ -228,6 +228,7 @@ typedef enum _fmt_code_t {
	PP_PKG_DEPENDENCY_ORIGIN,
	PP_PKG_DEPENDENCY_VERSION,
	PP_PKG_ADDITIONAL_INFO,
+
	PP_PKG_LOCK_STATUS,
	PP_PKG_LICENSE_LOGIC,
	PP_PKG_MAINTAINER,
	PP_PKG_NAME,
@@ -308,6 +309,7 @@ static const struct pkg_printf_fmt fmt[] = {
	[PP_PKG_DEPENDENCY_ORIGIN] =	{ 'd',  'o',  PP_PKG|PP_d, },
	[PP_PKG_DEPENDENCY_VERSION] =	{ 'v',  'v',  PP_PKG|PP_d, },
	[PP_PKG_ADDITIONAL_INFO] =	{ 'i',  '\0', PP_ALL,      },
+
	[PP_PKG_LOCK_STATUS] =		{ 'k',  '\0', PP_ALL,	   },
	[PP_PKG_LICENSE_LOGIC] =	{ 'l',  '\0', PP_ALL,      },
	[PP_PKG_MAINTAINER] =		{ 'm',  '\0', PP_ALL,      },
	[PP_PKG_NAME] =			{ 'n',  '\0', PP_ALL,      },
@@ -1421,6 +1423,20 @@ format_add_info(struct sbuf *sbuf, struct pkg *pkg, struct percent_esc *p)
}

/*
+
 * %k -- Locked flag. boolean.  Accepts field-width, left-align.
+
 * Standard form: 0, 1.  Alternate form1: no, yes.  Alternate form2:
+
 * false, true
+
 */
+
static inline struct sbuf *
+
format_lock_status(struct sbuf *sbuf, struct pkg *pkg, struct percent_esc *p)
+
{
+
	bool	locked;
+

+
	pkg_get(pkg, PKG_LOCKED, &locked);
+
	return (bool_val(sbuf, locked, p));
+
}
+

+
/*
 * %l -- Licence logic. string.  Accepts field-width, left-align.
 * Standard form: and, or, single. Alternate form 1: &, |, ''.
 * Alternate form 2: &&, ||, ==
@@ -1717,7 +1733,7 @@ parse_escape(const char *f, unsigned context, struct percent_esc *p)
	done = false;
	for (fmt_code = PP_PKG_SHLIBS; fmt_code < PP_END_MARKER; fmt_code++) {
		if ((fmt[fmt_code].context & context) == context &&
-
		    fmt[fmt_code].fmt_main == *f &&
+
		    fmt[fmt_code].fmt_main == f[0] &&
		    (fmt[fmt_code].fmt_sub == '\0' ||
		     fmt[fmt_code].fmt_sub == f[1]))	{
			p->fmt_code = fmt_code;
@@ -1926,6 +1942,9 @@ process_format(struct sbuf *sbuf, const char *f, va_list ap)
	case PP_PKG_ADDITIONAL_INFO:
		s = format_add_info(sbuf, (struct pkg *) data, p);
		break;
+
	case PP_PKG_LOCK_STATUS:
+
		s = format_lock_status(sbuf, (struct pkg *) data, p);
+
		break;
	case PP_PKG_LICENSE_LOGIC:
		s = format_license_logic(sbuf, (struct pkg *) data, p);
		break;
@@ -2162,6 +2181,9 @@ pkg_sbuf_vprintf(struct sbuf *sbuf, const char *format, va_list ap)
{
	const char	*f;

+
	assert(sbuf != NULL);
+
	assert(format != NULL);
+

	for (f = format; *f != '\0'; f++) {
		if (*f == '%') {
			f = process_format(sbuf, f, ap);