[popt] Applied patches/popt-1.16-6.fc23/popt-1.16-help.patch.
authorDavid Korth <gerbilsoft@gerbilsoft.com>
Mon, 7 Sep 2015 20:19:36 +0000 (16:19 -0400)
committerDavid Korth <gerbilsoft@gerbilsoft.com>
Mon, 7 Sep 2015 20:19:36 +0000 (16:19 -0400)
extlib/popt/popthelp.c

index d8a6eb5..4e2e92e 100644 (file)
@@ -116,7 +116,7 @@ static struct poptOption poptHelpOptions2[] = {
   { "defaults", '\0', POPT_ARG_NONE, &show_option_defaults, 0,
        N_("Display option defaults in message"), NULL },
 #endif
-  { "", '\0',  0, NULL, 0, N_("Terminate options"), NULL },
+  { NULL, '\0',        0, NULL, 0, N_("Terminate options"), NULL },
     POPT_TABLEEND
 } ;
 
@@ -562,8 +562,11 @@ static size_t maxArgWidth(const struct poptOption * opt,
     if (opt != NULL)
     while (opt->longName || opt->shortName || opt->arg) {
        if (poptArgType(opt) == POPT_ARG_INCLUDE_TABLE) {
-           if (opt->arg)       /* XXX program error */
-               len = maxArgWidth(opt->arg, translation_domain);
+           void * arg = opt->arg;
+           /* XXX sick hack to preserve pretense of ABI. */
+           if (arg == poptHelpOptions) arg = poptHelpOptionsI18N;
+           if (arg)    /* XXX program error */
+               len = maxArgWidth(arg, translation_domain);
            if (len > max) max = len;
        } else if (!F_ISSET(opt, DOC_HIDDEN)) {
            len = sizeof("  ")-1;
@@ -654,19 +657,22 @@ static void singleTableHelp(poptContext con, FILE * fp,
 
     if (table != NULL)
     for (opt = table; opt->longName || opt->shortName || opt->arg; opt++) {
+       void * arg = opt->arg;
        if (poptArgType(opt) != POPT_ARG_INCLUDE_TABLE)
            continue;
-       sub_transdom = getTableTranslationDomain(opt->arg);
+       /* XXX sick hack to preserve pretense of ABI. */
+       if (arg == poptHelpOptions) arg = poptHelpOptionsI18N;
+           sub_transdom = getTableTranslationDomain(arg);
        if (sub_transdom == NULL)
            sub_transdom = translation_domain;
            
        /* If no popt aliases/execs, skip poptAliasOption processing. */
-       if (opt->arg == poptAliasOptions && !(con->numAliases || con->numExecs))
+       if (arg == poptAliasOptions && !(con->numAliases || con->numExecs))
            continue;
        if (opt->descrip)
            xx = POPT_fprintf(fp, "\n%s\n", D_(sub_transdom, opt->descrip));
 
-       singleTableHelp(con, fp, opt->arg, columns, sub_transdom);
+       singleTableHelp(con, fp, arg, columns, sub_transdom);
     }
 }
 
@@ -843,22 +849,25 @@ static size_t singleTableUsage(poptContext con, FILE * fp, columns_t columns,
            translation_domain = (const char *)opt->arg;
        } else
        if (poptArgType(opt) == POPT_ARG_INCLUDE_TABLE) {
+           void * arg = opt->arg;
+           /* XXX sick hack to preserve pretense of ABI. */
+           if (arg == poptHelpOptions) arg = poptHelpOptionsI18N;
            if (done) {
                int i = 0;
                if (done->opts != NULL)
                for (i = 0; i < done->nopts; i++) {
                    const void * that = done->opts[i];
-                   if (that == NULL || that != opt->arg)
+                   if (that == NULL || that != arg)
                        /*@innercontinue@*/ continue;
                    /*@innerbreak@*/ break;
                }
                /* Skip if this table has already been processed. */
-               if (opt->arg == NULL || i < done->nopts)
+               if (arg == NULL || i < done->nopts)
                    continue;
                if (done->opts != NULL && done->nopts < done->maxopts)
-                   done->opts[done->nopts++] = (const void *) opt->arg;
+                   done->opts[done->nopts++] = (const void *) arg;
            }
-           columns->cur = singleTableUsage(con, fp, columns, opt->arg,
+           columns->cur = singleTableUsage(con, fp, columns, arg,
                        translation_domain, done);
        } else
        if ((opt->longName || opt->shortName) && !F_ISSET(opt, DOC_HIDDEN)) {
@@ -899,9 +908,13 @@ static size_t showShortOptions(const struct poptOption * opt, FILE * fp,
            if (!strchr(s, opt->shortName) && isprint((int)opt->shortName)
             && opt->shortName != ' ')
                s[strlen(s)] = opt->shortName;
-       } else if (poptArgType(opt) == POPT_ARG_INCLUDE_TABLE)
-           if (opt->arg)       /* XXX program error */
-               len = showShortOptions(opt->arg, fp, s);
+       } else if (poptArgType(opt) == POPT_ARG_INCLUDE_TABLE) {
+           void * arg = opt->arg;
+           /* XXX sick hack to preserve pretense of ABI. */
+           if (arg == poptHelpOptions) arg = poptHelpOptionsI18N;
+           if (arg)    /* XXX program error */
+               len = showShortOptions(arg, fp, s);
+       }
     } 
 
     /* On return to top level, print the short options, return print length. */