rpm 5.3.7

lib/poptQV.c

Go to the documentation of this file.
00001 
00006 #include "system.h"
00007 
00008 #include <rpmio.h>
00009 #include <rpmiotypes.h>
00010 #include <rpmcb.h>
00011 
00012 #include <rpmtag.h>
00013 #include <rpmcli.h>
00014 #include <rpmgi.h>              /* XXX for giFlags */
00015 
00016 #include "debug.h"
00017 
00018 /*@unchecked@*/
00019 struct rpmQVKArguments_s rpmQVKArgs;
00020 
00021 /*@unchecked@*/
00022 int specedit = 0;
00023 
00024 #define POPT_QUERYFORMAT        -1000
00025 #define POPT_WHATREQUIRES       -1001
00026 #define POPT_WHATPROVIDES       -1002
00027 #define POPT_QUERYBYNUMBER      -1003
00028 #define POPT_TRIGGEREDBY        -1004
00029 #define POPT_DUMP               -1005
00030 #define POPT_SPECFILE           -1006
00031 #define POPT_QUERYBYPKGID       -1007
00032 #define POPT_QUERYBYHDRID       -1008
00033 #define POPT_QUERYBYFILEID      -1009
00034 #define POPT_QUERYBYTID         -1010
00035 #define POPT_HDLIST             -1011
00036 #define POPT_FTSWALK            -1012
00037 
00038 /* -1025 thrugh -1033 are common in rpmcli.h. */
00039 #define POPT_TRUST              -1037
00040 #define POPT_WHATNEEDS          -1038
00041 #define POPT_SPECSRPM           -1039
00042 #define POPT_QUERYBYSOURCEPKGID -1040
00043 #define POPT_WHATCONFLICTS      -1041
00044 #define POPT_WHATOBSOLETES      -1042
00045 #define POPT_NOPASSWORD         -1043
00046 
00047 /* ========== Query/Verify/Signature source args */
00048 static void rpmQVSourceArgCallback( /*@unused@*/ poptContext con,
00049                 /*@unused@*/ enum poptCallbackReason reason,
00050                 const struct poptOption * opt,
00051                 /*@unused@*/ const char * arg,
00052                 /*@unused@*/ const void * data)
00053         /*@globals rpmQVKArgs @*/
00054         /*@modifies rpmQVKArgs @*/
00055 {
00056     QVA_t qva = &rpmQVKArgs;
00057 
00058     switch (opt->val) {
00059     case 'q':   /* from --query, -q */
00060     case 'Q':   /* from --querytags (handled by poptALL) */
00061     case 'V':   /* from --verify, -V */
00062     case 'A':   /* from --addsign */
00063     case 'D':   /* from --delsign */
00064     case 'I':   /* from --import */
00065     case 'K':   /* from --checksig, -K */
00066     case 'R':   /* from --resign */
00067         if (qva->qva_mode == '\0' || strchr("qQ ", qva->qva_mode)) {
00068             qva->qva_mode = opt->val;
00069             qva->qva_char = ' ';
00070         }
00071         break;
00072     case 'a': qva->qva_source |= RPMQV_ALL; qva->qva_sourceCount++; break;
00073     case 'f': qva->qva_source |= RPMQV_PATH; qva->qva_sourceCount++; break;
00074     case 'g': qva->qva_source |= RPMQV_GROUP; qva->qva_sourceCount++; break;
00075     case 'p': qva->qva_source |= RPMQV_RPM; qva->qva_sourceCount++; break;
00076     case POPT_WHATNEEDS: qva->qva_source |= RPMQV_WHATNEEDS;
00077                                 qva->qva_sourceCount++; break;
00078     case POPT_WHATPROVIDES: qva->qva_source |= RPMQV_WHATPROVIDES;
00079                                 qva->qva_sourceCount++; break;
00080     case POPT_WHATREQUIRES: qva->qva_source |= RPMQV_WHATREQUIRES;
00081                                 qva->qva_sourceCount++; break;
00082     case POPT_WHATCONFLICTS: qva->qva_source |= RPMQV_WHATCONFLICTS;
00083                                 qva->qva_sourceCount++; break;
00084     case POPT_WHATOBSOLETES: qva->qva_source |= RPMQV_WHATOBSOLETES;
00085                                 qva->qva_sourceCount++; break;
00086     case POPT_TRIGGEREDBY: qva->qva_source |= RPMQV_TRIGGEREDBY;
00087                                 qva->qva_sourceCount++; break;
00088     case POPT_QUERYBYSOURCEPKGID: qva->qva_source |= RPMQV_SOURCEPKGID;
00089                                 qva->qva_sourceCount++; break;
00090     case POPT_QUERYBYPKGID: qva->qva_source |= RPMQV_PKGID;
00091                                 qva->qva_sourceCount++; break;
00092     case POPT_QUERYBYHDRID: qva->qva_source |= RPMQV_HDRID;
00093                                 qva->qva_sourceCount++; break;
00094     case POPT_QUERYBYFILEID: qva->qva_source |= RPMQV_FILEID;
00095                                 qva->qva_sourceCount++; break;
00096     case POPT_QUERYBYTID: qva->qva_source |= RPMQV_TID;
00097                                 qva->qva_sourceCount++; break;
00098     case POPT_HDLIST: qva->qva_source |= RPMQV_HDLIST;
00099                                 qva->qva_sourceCount++; break;
00100     case POPT_FTSWALK:qva->qva_source |= RPMQV_FTSWALK;
00101                                 qva->qva_sourceCount++; break;
00102 
00103 /* XXX SPECFILE is not verify sources */
00104     case POPT_SPECFILE:
00105         qva->qva_source |= RPMQV_SPECFILE;
00106         qva->qva_sourceCount++;
00107         break;
00108 /* XXX SPECSRPM is not verify sources */
00109     case POPT_SPECSRPM:
00110         qva->qva_source |= RPMQV_SPECSRPM;
00111         qva->qva_sourceCount++;
00112         break;
00113     case POPT_QUERYBYNUMBER:
00114         qva->qva_source |= RPMQV_DBOFFSET;
00115         qva->qva_sourceCount++;
00116         break;
00117 
00118     case POPT_NOPASSWORD:
00119         qva->nopassword = 1;
00120         break;
00121 
00122     }
00123 }
00124 
00128 /*@unchecked@*/
00129 struct poptOption rpmQVSourcePoptTable[] = {
00130 /*@-type@*/ /* FIX: cast? */
00131  { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA,
00132         rpmQVSourceArgCallback, 0, NULL, NULL },
00133 /*@=type@*/
00134  { "all", 'a', 0, NULL, 'a',
00135         N_("query/verify all packages"), NULL },
00136  { "checksig", 'K', POPT_ARGFLAG_DOC_HIDDEN, NULL, 'K',
00137         N_("rpm checksig mode"), NULL },
00138  { "file", 'f', 0, NULL, 'f',
00139         N_("query/verify package(s) owning file"), "FILE" },
00140  { "group", 'g', 0, NULL, 'g',
00141         N_("query/verify package(s) in group"), "GROUP" },
00142  { "package", 'p', 0, NULL, 'p',
00143         N_("query/verify a package file"), NULL },
00144 
00145  { "ftswalk", 'W', 0, NULL, POPT_FTSWALK,
00146         N_("query/verify package(s) from TOP file tree walk"), "TOP" },
00147  { "hdlist", 'H', POPT_ARGFLAG_DOC_HIDDEN, 0, POPT_HDLIST,
00148         N_("query/verify package(s) from system HDLIST"), "HDLIST" },
00149 
00150  { "sourcepkgid", '\0', 0, NULL, POPT_QUERYBYSOURCEPKGID,
00151         N_("query/verify package(s) with source package identifier"), "MD5" },
00152  { "pkgid", '\0', 0, NULL, POPT_QUERYBYPKGID,
00153         N_("query/verify package(s) with package identifier"), "MD5" },
00154  { "hdrid", '\0', 0, NULL, POPT_QUERYBYHDRID,
00155         N_("query/verify package(s) with header identifier"), "SHA1" },
00156  { "fileid", '\0', 0, NULL, POPT_QUERYBYFILEID,
00157         N_("query/verify package(s) with file identifier"), "MD5" },
00158 
00159  { "query", 'q', POPT_ARGFLAG_DOC_HIDDEN, NULL, 'q',
00160         N_("rpm query mode"), NULL },
00161  { "querybynumber", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, POPT_QUERYBYNUMBER,
00162         N_("query/verify a header instance"), "HDRNUM" },
00163  { "specfile", '\0', 0, NULL, POPT_SPECFILE,
00164         N_("query a spec file"), N_("<spec>") },
00165  { "specsrpm", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, POPT_SPECSRPM,
00166         N_("query source metadata from spec file parse"), N_("<spec>") },
00167  { "tid", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, POPT_QUERYBYTID,
00168         N_("query/verify package(s) from install transaction"), "TID" },
00169  { "triggeredby", '\0', 0, NULL, POPT_TRIGGEREDBY,
00170         N_("query the package(s) triggered by the package"), "PACKAGE" },
00171  { "verify", 'V', POPT_ARGFLAG_DOC_HIDDEN, NULL, 'V',
00172         N_("rpm verify mode"), NULL },
00173  { "whatrequires", '\0', 0, NULL, POPT_WHATREQUIRES,
00174         N_("query/verify the package(s) which require a dependency"), "CAPABILITY" },
00175  { "whatneeds", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, POPT_WHATNEEDS,
00176         N_("query/verify the package(s) which require any contained provide"),
00177         "CAPABILITY" },
00178 
00179  { "whatprovides", '\0', 0, NULL, POPT_WHATPROVIDES,
00180         N_("query/verify the package(s) which provide a dependency"), "CAPABILITY" },
00181  { "whatconflicts", '\0', 0, NULL, POPT_WHATCONFLICTS,
00182         N_("query/verify the package(s) which conflict with a dependency"), "CAPABILITY" },
00183  { "whatobsoletes", '\0', 0, NULL, POPT_WHATOBSOLETES,
00184         N_("query/verify the package(s) which obsolete a dependency"), "CAPABILITY" },
00185 
00186  { "transaction", 'T', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &giFlags, (RPMGI_TSADD|RPMGI_TSORDER),
00187         N_("create transaction set"), NULL},
00188 #ifdef  DYING   /* XXX breaks --noorder in poptI.c */
00189  { "noorder", '\0', POPT_BIT_CLR|POPT_ARGFLAG_DOC_HIDDEN, &giFlags, RPMGI_TSORDER,
00190         N_("do not order transaction set"), NULL},
00191 #endif
00192  { "noglob", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &giFlags, RPMGI_NOGLOB,
00193         N_("do not glob arguments"), NULL},
00194  { "nomanifest", '\0', POPT_BIT_SET, &giFlags, RPMGI_NOMANIFEST,
00195         N_("do not process non-package files as manifests"), NULL},
00196  { "noheader", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &giFlags, RPMGI_NOHEADER,
00197         N_("do not read headers"), NULL},
00198 
00199 
00200    POPT_TABLEEND
00201 };
00202 
00203 /* ========== Query specific popt args */
00204 
00205 static void queryArgCallback(poptContext con,
00206                 /*@unused@*/ enum poptCallbackReason reason,
00207                 const struct poptOption * opt, const char * arg,
00208                 /*@unused@*/ const void * data)
00209         /*@globals rpmQVKArgs @*/
00210         /*@modifies con, rpmQVKArgs @*/
00211 {
00212     QVA_t qva = &rpmQVKArgs;
00213 
00214     /* XXX avoid accidental collisions with POPT_BIT_SET for flags */
00215     if (opt->arg == NULL)
00216     switch (opt->val) {
00217     case 'c': qva->qva_flags |= QUERY_FOR_CONFIG | QUERY_FOR_LIST; break;
00218     case 'd': qva->qva_flags |= QUERY_FOR_DOCS | QUERY_FOR_LIST; break;
00219     case 'l': qva->qva_flags |= QUERY_FOR_LIST; break;
00220     case 's': qva->qva_flags |= QUERY_FOR_STATE | QUERY_FOR_LIST;
00221         break;
00222     case POPT_DUMP: qva->qva_flags |= QUERY_FOR_DUMPFILES | QUERY_FOR_LIST;
00223         break;
00224 
00225     case POPT_QUERYFORMAT:
00226         if (arg) {
00227             char * qf = (char *)qva->qva_queryFormat;
00228             char * b = NULL;
00229             size_t nb = 0;
00230 
00231             /* Read queryformat from file. */
00232             if (arg[0] == '/') {
00233                 const char * fn = arg;
00234                 int rc;
00235 
00236                 rc = poptReadFile(fn, &b, &nb, POPT_READFILE_TRIMNEWLINES);
00237                 if (rc != 0)
00238                     goto _qfexit;
00239                 if (b == NULL || nb == 0)       /* XXX can't happen */
00240                     goto _qfexit;
00241                 /* XXX trim double quotes */
00242                 if (*b == '"') {
00243                     while (nb > 0 && b[nb] != '"')
00244                         b[nb--] = '\0';
00245                     b[nb] = '\0';
00246                     arg = b + 1;
00247                 } else
00248                     arg = b;
00249             }
00250 
00251             /* Append to existing queryformat. */
00252             if (qf) {
00253                 size_t len = strlen(qf) + strlen(arg) + 1;
00254                 qf = xrealloc(qf, len);
00255                 strcat(qf, arg);
00256             } else {
00257                 qf = xmalloc(strlen(arg) + 1);
00258                 strcpy(qf, arg);
00259             }
00260             qva->qva_queryFormat = qf;
00261 
00262         _qfexit:
00263             b = _free(b);
00264         }
00265         break;
00266 
00267     case 'i':
00268         if (qva->qva_mode == 'q') {
00269             /*@-nullassign -readonlytrans@*/
00270             const char * infoCommand[] = { "--info", NULL };
00271             /*@=nullassign =readonlytrans@*/
00272             (void) poptStuffArgs(con, infoCommand);
00273         }
00274         break;
00275 
00276     case RPMCLI_POPT_NODIGEST:
00277         qva->qva_flags |= VERIFY_DIGEST;
00278         break;
00279 
00280     case RPMCLI_POPT_NOSIGNATURE:
00281         qva->qva_flags |= VERIFY_SIGNATURE;
00282         break;
00283 
00284     case RPMCLI_POPT_NOHDRCHK:
00285         qva->qva_flags |= VERIFY_HDRCHK;
00286         break;
00287 
00288     case RPMCLI_POPT_NODEPS:
00289         qva->qva_flags |= VERIFY_DEPS;
00290         break;
00291 
00292     case RPMCLI_POPT_NOFDIGESTS:
00293         qva->qva_flags |= VERIFY_FDIGEST;
00294         break;
00295 
00296     case RPMCLI_POPT_NOCONTEXTS:
00297         qva->qva_flags |= VERIFY_CONTEXTS;
00298         break;
00299 
00300     case RPMCLI_POPT_NOSCRIPTS:
00301         qva->qva_flags |= VERIFY_SCRIPT;
00302         break;
00303 
00304     case RPMCLI_POPT_NOHMACS:
00305         qva->qva_flags |= VERIFY_HMAC;
00306         break;
00307 
00308     /* XXX perhaps POPT_ARG_INT instead of callback. */
00309     case POPT_TRUST:
00310     {   char * end = NULL;
00311         long trust = (int) strtol(arg, &end, 0);
00312         /* XXX range checks on trust. */
00313         /* XXX if (end && *end) argerror(_("non-numeric trust metric.")); */
00314         qva->trust = trust;
00315     }   break;
00316     }
00317 }
00318 
00322 /*@unchecked@*/
00323 struct poptOption rpmQueryPoptTable[] = {
00324 /*@-type@*/ /* FIX: cast? */
00325  { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA | POPT_CBFLAG_CONTINUE,
00326         queryArgCallback, 0, NULL, NULL },
00327 /*@=type@*/
00328  { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmQVSourcePoptTable, 0,
00329         NULL, NULL },
00330  { "configfiles", 'c', 0, 0, 'c',
00331         N_("list all configuration files"), NULL },
00332  { "docfiles", 'd', 0, 0, 'd',
00333         N_("list all documentation files"), NULL },
00334  { "dump", '\0', 0, 0, POPT_DUMP,
00335         N_("dump basic file information"), NULL },
00336  { NULL, 'i', POPT_ARGFLAG_DOC_HIDDEN, 0, 'i',
00337         NULL, NULL },
00338  { "list", 'l', 0, 0, 'l',
00339         N_("list files in package"), NULL },
00340 
00341  { "aid", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00342         &rpmQVKArgs.depFlags, RPMDEPS_FLAG_ADDINDEPS,
00343         N_("add suggested packages to transaction"), NULL },
00344 
00345  /* Duplicate file attr flags from packages into command line options. */
00346  { "noconfig", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN,
00347         &rpmQVKArgs.qva_fflags, RPMFILE_CONFIG,
00348         N_("skip %%config files"), NULL },
00349  { "nodoc", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN,
00350         &rpmQVKArgs.qva_fflags, RPMFILE_DOC,
00351         N_("skip %%doc files"), NULL },
00352  { "noghost", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN,
00353         &rpmQVKArgs.qva_fflags, RPMFILE_GHOST,
00354         N_("skip %%ghost files"), NULL },
00355 #ifdef  NOTEVER         /* XXX there's hardly a need for these */
00356  { "nolicense", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN,
00357         &rpmQVKArgs.qva_fflags, RPMFILE_LICENSE,
00358         N_("skip %%license files"), NULL },
00359  { "noreadme", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN,
00360         &rpmQVKArgs.qva_fflags, RPMFILE_README,
00361         N_("skip %%readme files"), NULL },
00362 #endif
00363 
00364  { "qf", '\0', POPT_ARG_STRING | POPT_ARGFLAG_DOC_HIDDEN, 0,
00365         POPT_QUERYFORMAT, NULL, NULL },
00366  { "queryformat", '\0', POPT_ARG_STRING, 0, POPT_QUERYFORMAT,
00367         N_("use the following query format"), N_("QUERYFORMAT") },
00368  { "specedit", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &specedit, -1,
00369         N_("substitute i18n sections into spec file"), NULL },
00370  { "state", 's', 0, 0, 's',
00371         N_("display the states of the listed files"), NULL },
00372  { "target", '\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN, 0,  RPMCLI_POPT_TARGETPLATFORM,
00373         N_("specify target platform"), N_("CPU-VENDOR-OS") },
00374    POPT_TABLEEND
00375 };
00376 
00380 struct poptOption rpmVerifyPoptTable[] = {
00381 /*@-type@*/ /* FIX: cast? */
00382  { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA | POPT_CBFLAG_CONTINUE,
00383         queryArgCallback, 0, NULL, NULL },
00384 /*@=type@*/
00385  { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmQVSourcePoptTable, 0,
00386         NULL, NULL },
00387 
00388  { "aid", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN,
00389         &rpmQVKArgs.depFlags, RPMDEPS_FLAG_ADDINDEPS,
00390         N_("add suggested packages to transaction"), NULL },
00391 
00392  /* Duplicate file attr flags from packages into command line options. */
00393  { "noconfig", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00394         &rpmQVKArgs.qva_fflags, RPMFILE_CONFIG,
00395         N_("skip %%config files"), NULL },
00396  { "nodoc", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00397         &rpmQVKArgs.qva_fflags, RPMFILE_DOC,
00398         N_("skip %%doc files"), NULL },
00399 
00400  /* Duplicate file verify flags from packages into command line options. */
00402 #ifdef  DYING
00403  { "nomd5", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_FDIGEST,
00404         N_("don't verify file digests"), NULL },
00405 #else
00406  { "nomd5", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, RPMCLI_POPT_NOFDIGESTS,
00407         N_("don't verify file digests"), NULL },
00408  { "nofdigests", '\0', 0, NULL, RPMCLI_POPT_NOFDIGESTS,
00409         N_("don't verify file digests"), NULL },
00410 #endif
00411  { "nosize", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00412         &rpmQVKArgs.qva_flags, VERIFY_SIZE,
00413         N_("don't verify size of files"), NULL },
00414  { "nolinkto", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00415         &rpmQVKArgs.qva_flags, VERIFY_LINKTO,
00416         N_("don't verify symlink path of files"), NULL },
00417  { "nouser", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00418         &rpmQVKArgs.qva_flags, VERIFY_USER,
00419         N_("don't verify owner of files"), NULL },
00420  { "nogroup", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00421         &rpmQVKArgs.qva_flags, VERIFY_GROUP,
00422         N_("don't verify group of files"), NULL },
00423  { "nomtime", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00424         &rpmQVKArgs.qva_flags, VERIFY_MTIME,
00425         N_("don't verify modification time of files"), NULL },
00426  { "nomode", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00427         &rpmQVKArgs.qva_flags, VERIFY_MODE,
00428         N_("don't verify mode of files"), NULL },
00429  { "nordev", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00430         &rpmQVKArgs.qva_flags, VERIFY_RDEV,
00431         N_("don't verify mode of files"), NULL },
00432 
00433  { "nohmacs", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, RPMCLI_POPT_NOHMACS,
00434         N_("don't verify file HMAC's"), NULL },
00435  { "nocontexts", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, RPMCLI_POPT_NOCONTEXTS,
00436         N_("don't verify file security contexts"), NULL },
00437  { "nofiles", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_FILES,
00438         N_("don't verify files in package"), NULL},
00439 #ifdef  DYING
00440  { "nodeps", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_DEPS,
00441         N_("don't verify package dependencies"), NULL },
00442 #else
00443  { "nodeps", '\0', 0, NULL, RPMCLI_POPT_NODEPS,
00444         N_("don't verify package dependencies"), NULL },
00445 #endif
00446 
00447 #ifdef  DYING
00448  { "noscript", '\0', POPT_BIT_SET,&rpmQVKArgs.qva_flags, VERIFY_SCRIPT,
00449         N_("don't execute verify script(s)"), NULL },
00450  /* XXX legacy had a trailing s on --noscript */
00451  { "noscripts", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00452         &rpmQVKArgs.qva_flags, VERIFY_SCRIPT,
00453         N_("don't execute verify script(s)"), NULL },
00454 #else
00455  { "noscript", '\0', 0, NULL, RPMCLI_POPT_NOSCRIPTS,
00456         N_("don't execute verify script(s)"), NULL },
00457  /* XXX legacy had a trailing s on --noscript */
00458  { "noscripts", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, RPMCLI_POPT_NOSCRIPTS,
00459         N_("don't execute verify script(s)"), NULL },
00460 #endif
00461 
00462 #ifdef  DYING
00463  { "nodigest", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_DIGEST,
00464         N_("don't verify package digest(s)"), NULL },
00465  { "nohdrchk", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00466         &rpmQVKArgs.qva_flags, VERIFY_HDRCHK,
00467         N_("don't verify database header(s) when retrieved"), NULL },
00468  { "nosignature", '\0', POPT_BIT_SET,
00469         &rpmQVKArgs.qva_flags, VERIFY_SIGNATURE,
00470         N_("don't verify package signature(s)"), NULL },
00471 #else
00472  { "nodigest", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_NODIGEST,
00473         N_("don't verify package digest(s)"), NULL },
00474  { "nohdrchk", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_NOHDRCHK,
00475         N_("don't verify database header(s) when retrieved"), NULL },
00476  { "nosignature", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_NOSIGNATURE,
00477         N_("don't verify package signature(s)"), NULL },
00478 #endif
00479 
00480     POPT_TABLEEND
00481 };
00482 
00486 /*@unchecked@*/
00487 struct poptOption rpmSignPoptTable[] = {
00488 /*@-type@*/ /* FIX: cast? */
00489  { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA | POPT_CBFLAG_CONTINUE,
00490         rpmQVSourceArgCallback, 0, NULL, NULL },
00491 /*@=type@*/
00492  { "addsign", '\0', 0, NULL, 'A',
00493         N_("sign package(s) (identical to --resign)"), NULL },
00494  { "checksig", 'K', 0, NULL, 'K',
00495         N_("verify package signature(s)"), NULL },
00496  { "delsign", '\0', 0, NULL, 'D',
00497         N_("delete package signatures"), NULL },
00498  { "import", '\0', 0, NULL, 'I',
00499         N_("import an armored public key"), NULL },
00500  { "resign", '\0', 0, NULL, 'R',
00501         N_("sign package(s) (identical to --addsign)"), NULL },
00502  { "sign", '\0', POPT_ARGFLAG_DOC_HIDDEN, &rpmQVKArgs.sign, 0,
00503         N_("generate signature"), NULL },
00504 
00505  { "trust", '\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN, 0,  POPT_TRUST,
00506         N_("specify trust metric"), N_("TRUST") },
00507  { "trusted", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN,
00508         &rpmQVKArgs.trust, 1,
00509         N_("set ultimate trust when importing pubkey(s)"), NULL },
00510  { "untrusted", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN,
00511         &rpmQVKArgs.trust, -1,
00512         N_("unset ultimate trust when importing pubkey(s)"), NULL },
00513  { "nopassword", '\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN, 0,  POPT_NOPASSWORD,
00514         N_("disable password challenge"), NULL },
00515  /* XXX perhaps POPT_ARG_INT instead of callback. */
00516 
00517  { "nodigest", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_DIGEST,
00518         N_("don't verify package digest(s)"), NULL },
00519  { "nohdrchk", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
00520         &rpmQVKArgs.qva_flags, VERIFY_HDRCHK,
00521         N_("don't verify database header(s) when retrieved"), NULL },
00522  { "nosignature", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_SIGNATURE,
00523         N_("don't verify package signature(s)"), NULL },
00524 
00525    POPT_TABLEEND
00526 };