Blame verbosearg.diff

dfdd5e
--- ./rpmio/macro.c.orig
dfdd5e
+++ ./rpmio/macro.c
dfdd5e
@@ -1141,7 +1141,10 @@ static size_t doExpand(MacroBuf mb, rpmMacroEntry me, ARGV_t argv)
dfdd5e
 
dfdd5e
 static size_t doVerbose(MacroBuf mb, rpmMacroEntry me, ARGV_t argv)
dfdd5e
 {
dfdd5e
-    mbAppend(mb, rpmIsVerbose() ? '1' : '0');
dfdd5e
+    if (argv[1] != NULL)
dfdd5e
+	mbAppendStr(mb, rpmIsVerbose() ? argv[1] : "");
dfdd5e
+    else
dfdd5e
+	mbAppend(mb, rpmIsVerbose() ? '1' : '0');
dfdd5e
     return 0;
dfdd5e
 }
dfdd5e
 
dfdd5e
@@ -1282,7 +1285,7 @@ static struct builtins_s {
dfdd5e
     { "uncompress",	doUncompress,	1,	ME_FUNC },
dfdd5e
     { "undefine",	doUndefine,	1,	ME_FUNC },
dfdd5e
     { "url2path",	doFoo,		1,	ME_FUNC },
dfdd5e
-    { "verbose",	doVerbose,	0,	ME_FUNC },
dfdd5e
+    { "verbose",	doVerbose,	-1,	ME_FUNC },
dfdd5e
     { "warn",		doOutput,	1,	ME_FUNC },
dfdd5e
     { NULL,		NULL,		0 }
dfdd5e
 };
dfdd5e
@@ -1347,7 +1350,7 @@ doExpandThisMacro(MacroBuf mb, rpmMacroEntry me, ARGV_t args, size_t *parsed)
dfdd5e
 	int nargs = argvCount(args) - 1;
dfdd5e
 	int needarg = (me->nargs != 0);
dfdd5e
 	int havearg = (nargs > 0);
dfdd5e
-	if (needarg != havearg) {
dfdd5e
+	if (((me->flags & ME_PARSE) || me->nargs >= 0) && needarg != havearg) {
dfdd5e
 	    mbErr(mb, 1, "%%%s: %s\n", me->name, needarg ?
dfdd5e
 		    _("argument expected") : _("unexpected argument"));
dfdd5e
 	    goto exit;