Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Make pkg info -D show correctly messages with new format
Baptiste Daroussin committed 10 years ago
commit 58fd84e656849db51f400cd14c09709be8b8af37
parent 07d8082
4 files changed +70 -3
modified libpkg/pkg.c
@@ -1864,7 +1864,7 @@ pkg_message_from_str(struct pkg *pkg, const char *str, size_t len)
}

ucl_object_t*
-
pkg_message_to_ucl(struct pkg *pkg)
+
pkg_message_to_ucl(const struct pkg *pkg)
{
	struct pkg_message *msg;
	ucl_object_t *array;
modified libpkg/pkg_printf.c
@@ -1237,9 +1237,52 @@ format_license_name(struct sbuf *sbuf, const void *data, struct percent_esc *p)
struct sbuf *
format_message(struct sbuf *sbuf, const void *data, struct percent_esc *p)
{
+
	struct sbuf		*buf, *bufmsg;
	const struct pkg	*pkg = data;
+
	struct pkg_message	*msg;
+
	char			*message;
+

+
	bufmsg = sbuf_new_auto();
+
	LL_FOREACH(pkg->message, msg) {
+
		if (sbuf_len(bufmsg) > 0)
+
			sbuf_putc(bufmsg, '\n');
+
		switch(msg->type) {
+
		case PKG_MESSAGE_ALWAYS:
+
			sbuf_printf(bufmsg, "Always:\n");
+
			break;
+
		case PKG_MESSAGE_UPGRADE:
+
			sbuf_printf(bufmsg, "On upgrade");
+
			if (msg->minimum_version != NULL ||
+
			    msg->maximum_version != NULL) {
+
				sbuf_printf(bufmsg, " from %s", pkg->name);
+
			}
+
			if (msg->minimum_version != NULL) {
+
				sbuf_printf(bufmsg, ">%s", msg->minimum_version);
+
			}
+
			if (msg->maximum_version != NULL) {
+
				sbuf_printf(bufmsg, "<%s", msg->maximum_version);
+
			}
+
			sbuf_printf(bufmsg, ":\n");
+
			break;
+
		case PKG_MESSAGE_INSTALL:
+
			sbuf_printf(bufmsg, "On install:\n");
+
			break;
+
		case PKG_MESSAGE_REMOVE:
+
			sbuf_printf(bufmsg, "On remove:\n");
+
			break;
+
		}
+
		sbuf_printf(bufmsg, "%s\n", msg->str);
+
	}
+
	sbuf_finish(bufmsg);
+
	if (sbuf_len(bufmsg) == 0)
+
		message = NULL;
+
	else
+
		message = sbuf_data(bufmsg);

-
	return (string_val(sbuf, pkg->message ? pkg->message->str : NULL, p));
+
	buf = string_val(sbuf, message, p);
+
	sbuf_delete(bufmsg);
+

+
	return (buf);
}

/*
modified libpkg/private/pkg.h
@@ -751,7 +751,7 @@ int pkg_arch_to_legacy(const char *arch, char *dest, size_t sz);
bool pkg_is_config_file(struct pkg *p, const char *path, const struct pkg_file **file, struct pkg_config_file **cfile);
int pkg_message_from_ucl(struct pkg *pkg, const ucl_object_t *obj);
int pkg_message_from_str(struct pkg *pkg, const char *str, size_t len);
-
ucl_object_t* pkg_message_to_ucl(struct pkg *pkg);
+
ucl_object_t* pkg_message_to_ucl(const struct pkg *pkg);
char* pkg_message_to_str(struct pkg *pkg);

#endif
modified tests/frontend/messages.sh
@@ -92,4 +92,28 @@ EOF
		-o match:"^Upgrading from >1.0 < 3.0.*" \
		-o match:"^Upgrading from higher than 1.0.*" \
		pkg -o REPOS_DIR="${TMPDIR}" -o PKG_CACHEDIR="${TMPDIR}" upgrade -y
+
OUTPUT='test-5.20_3:
+
Always:
+
Always print
+

+
On remove:
+
package being removed
+

+
On install:
+
package being installed
+

+
On upgrade:
+
package is being upgraded
+

+
On upgrade from test<1.0:
+
Upgrading from lower than 1.0
+

+
On upgrade from test>1.0:
+
Upgrading from higher than 1.0
+

+
On upgrade from test>1.0<3.0:
+
Upgrading from >1.0 < 3.0
+

+
'
+
	atf_check -o inline:"${OUTPUT}" pkg info -D test
}