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