rpm
5.2.1
|
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 { "noorder", '\0', POPT_BIT_CLR|POPT_ARGFLAG_DOC_HIDDEN, &giFlags, RPMGI_TSORDER, 00189 N_("do not order transaction set"), NULL}, 00190 { "noglob", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &giFlags, RPMGI_NOGLOB, 00191 N_("do not glob arguments"), NULL}, 00192 { "nomanifest", '\0', POPT_BIT_SET, &giFlags, RPMGI_NOMANIFEST, 00193 N_("do not process non-package files as manifests"), NULL}, 00194 { "noheader", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &giFlags, RPMGI_NOHEADER, 00195 N_("do not read headers"), NULL}, 00196 00197 00198 POPT_TABLEEND 00199 }; 00200 00201 /* ========== Query specific popt args */ 00202 00203 static void queryArgCallback(poptContext con, 00204 /*@unused@*/ enum poptCallbackReason reason, 00205 const struct poptOption * opt, const char * arg, 00206 /*@unused@*/ const void * data) 00207 /*@globals rpmQVKArgs @*/ 00208 /*@modifies con, rpmQVKArgs @*/ 00209 { 00210 QVA_t qva = &rpmQVKArgs; 00211 00212 /* XXX avoid accidental collisions with POPT_BIT_SET for flags */ 00213 if (opt->arg == NULL) 00214 switch (opt->val) { 00215 case 'c': qva->qva_flags |= QUERY_FOR_CONFIG | QUERY_FOR_LIST; break; 00216 case 'd': qva->qva_flags |= QUERY_FOR_DOCS | QUERY_FOR_LIST; break; 00217 case 'l': qva->qva_flags |= QUERY_FOR_LIST; break; 00218 case 's': qva->qva_flags |= QUERY_FOR_STATE | QUERY_FOR_LIST; 00219 break; 00220 case POPT_DUMP: qva->qva_flags |= QUERY_FOR_DUMPFILES | QUERY_FOR_LIST; 00221 break; 00222 00223 case POPT_QUERYFORMAT: 00224 if (arg) { 00225 char * qf = (char *)qva->qva_queryFormat; 00226 char * b = NULL; 00227 size_t nb = 0; 00228 00229 /* Read queryformat from file. */ 00230 if (arg[0] == '/') { 00231 const char * fn = arg; 00232 int rc; 00233 00234 rc = poptReadFile(fn, &b, &nb, POPT_READFILE_TRIMNEWLINES); 00235 if (rc != 0) 00236 goto _qfexit; 00237 if (b == NULL || nb == 0) /* XXX can't happen */ 00238 goto _qfexit; 00239 /* XXX trim double quotes */ 00240 if (*b == '"') { 00241 while (nb > 0 && b[nb] != '"') 00242 b[nb--] = '\0'; 00243 b[nb] = '\0'; 00244 arg = b + 1; 00245 } else 00246 arg = b; 00247 } 00248 00249 /* Append to existing queryformat. */ 00250 if (qf) { 00251 size_t len = strlen(qf) + strlen(arg) + 1; 00252 qf = xrealloc(qf, len); 00253 strcat(qf, arg); 00254 } else { 00255 qf = xmalloc(strlen(arg) + 1); 00256 strcpy(qf, arg); 00257 } 00258 qva->qva_queryFormat = qf; 00259 00260 _qfexit: 00261 b = _free(b); 00262 } 00263 break; 00264 00265 case 'i': 00266 if (qva->qva_mode == 'q') { 00267 /*@-nullassign -readonlytrans@*/ 00268 const char * infoCommand[] = { "--info", NULL }; 00269 /*@=nullassign =readonlytrans@*/ 00270 (void) poptStuffArgs(con, infoCommand); 00271 } 00272 break; 00273 00274 case RPMCLI_POPT_NODIGEST: 00275 qva->qva_flags |= VERIFY_DIGEST; 00276 break; 00277 00278 case RPMCLI_POPT_NOSIGNATURE: 00279 qva->qva_flags |= VERIFY_SIGNATURE; 00280 break; 00281 00282 case RPMCLI_POPT_NOHDRCHK: 00283 qva->qva_flags |= VERIFY_HDRCHK; 00284 break; 00285 00286 case RPMCLI_POPT_NODEPS: 00287 qva->qva_flags |= VERIFY_DEPS; 00288 break; 00289 00290 case RPMCLI_POPT_NOFDIGESTS: 00291 qva->qva_flags |= VERIFY_FDIGEST; 00292 break; 00293 00294 case RPMCLI_POPT_NOCONTEXTS: 00295 qva->qva_flags |= VERIFY_CONTEXTS; 00296 break; 00297 00298 case RPMCLI_POPT_NOSCRIPTS: 00299 qva->qva_flags |= VERIFY_SCRIPT; 00300 break; 00301 00302 /* XXX perhaps POPT_ARG_INT instead of callback. */ 00303 case POPT_TRUST: 00304 { char * end = NULL; 00305 long trust = (int) strtol(arg, &end, 0); 00306 /* XXX range checks on trust. */ 00307 /* XXX if (end && *end) argerror(_("non-numeric trust metric.")); */ 00308 qva->trust = trust; 00309 } break; 00310 } 00311 } 00312 00316 /*@unchecked@*/ 00317 struct poptOption rpmQueryPoptTable[] = { 00318 /*@-type@*/ /* FIX: cast? */ 00319 { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA | POPT_CBFLAG_CONTINUE, 00320 queryArgCallback, 0, NULL, NULL }, 00321 /*@=type@*/ 00322 { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmQVSourcePoptTable, 0, 00323 NULL, NULL }, 00324 { "configfiles", 'c', 0, 0, 'c', 00325 N_("list all configuration files"), NULL }, 00326 { "docfiles", 'd', 0, 0, 'd', 00327 N_("list all documentation files"), NULL }, 00328 { "dump", '\0', 0, 0, POPT_DUMP, 00329 N_("dump basic file information"), NULL }, 00330 { NULL, 'i', POPT_ARGFLAG_DOC_HIDDEN, 0, 'i', 00331 NULL, NULL }, 00332 { "list", 'l', 0, 0, 'l', 00333 N_("list files in package"), NULL }, 00334 00335 { "aid", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00336 &rpmQVKArgs.depFlags, RPMDEPS_FLAG_ADDINDEPS, 00337 N_("add suggested packages to transaction"), NULL }, 00338 00339 /* Duplicate file attr flags from packages into command line options. */ 00340 { "noconfig", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN, 00341 &rpmQVKArgs.qva_fflags, RPMFILE_CONFIG, 00342 N_("skip %%config files"), NULL }, 00343 { "nodoc", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN, 00344 &rpmQVKArgs.qva_fflags, RPMFILE_DOC, 00345 N_("skip %%doc files"), NULL }, 00346 { "noghost", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN, 00347 &rpmQVKArgs.qva_fflags, RPMFILE_GHOST, 00348 N_("skip %%ghost files"), NULL }, 00349 #ifdef NOTEVER /* XXX there's hardly a need for these */ 00350 { "nolicense", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN, 00351 &rpmQVKArgs.qva_fflags, RPMFILE_LICENSE, 00352 N_("skip %%license files"), NULL }, 00353 { "noreadme", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN, 00354 &rpmQVKArgs.qva_fflags, RPMFILE_README, 00355 N_("skip %%readme files"), NULL }, 00356 #endif 00357 00358 { "qf", '\0', POPT_ARG_STRING | POPT_ARGFLAG_DOC_HIDDEN, 0, 00359 POPT_QUERYFORMAT, NULL, NULL }, 00360 { "queryformat", '\0', POPT_ARG_STRING, 0, POPT_QUERYFORMAT, 00361 N_("use the following query format"), N_("QUERYFORMAT") }, 00362 { "specedit", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &specedit, -1, 00363 N_("substitute i18n sections into spec file"), NULL }, 00364 { "state", 's', 0, 0, 's', 00365 N_("display the states of the listed files"), NULL }, 00366 { "target", '\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_TARGETPLATFORM, 00367 N_("specify target platform"), N_("CPU-VENDOR-OS") }, 00368 POPT_TABLEEND 00369 }; 00370 00374 struct poptOption rpmVerifyPoptTable[] = { 00375 /*@-type@*/ /* FIX: cast? */ 00376 { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA | POPT_CBFLAG_CONTINUE, 00377 queryArgCallback, 0, NULL, NULL }, 00378 /*@=type@*/ 00379 { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmQVSourcePoptTable, 0, 00380 NULL, NULL }, 00381 00382 { "aid", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN, 00383 &rpmQVKArgs.depFlags, RPMDEPS_FLAG_ADDINDEPS, 00384 N_("add suggested packages to transaction"), NULL }, 00385 00386 /* Duplicate file attr flags from packages into command line options. */ 00387 { "noconfig", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00388 &rpmQVKArgs.qva_fflags, RPMFILE_CONFIG, 00389 N_("skip %%config files"), NULL }, 00390 { "nodoc", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00391 &rpmQVKArgs.qva_fflags, RPMFILE_DOC, 00392 N_("skip %%doc files"), NULL }, 00393 00394 /* Duplicate file verify flags from packages into command line options. */ 00396 #ifdef DYING 00397 { "nomd5", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_FDIGEST, 00398 N_("don't verify file digests"), NULL }, 00399 #else 00400 { "nomd5", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, RPMCLI_POPT_NOFDIGESTS, 00401 N_("don't verify file digests"), NULL }, 00402 { "nofdigests", '\0', 0, NULL, RPMCLI_POPT_NOFDIGESTS, 00403 N_("don't verify file digests"), NULL }, 00404 #endif 00405 { "nosize", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00406 &rpmQVKArgs.qva_flags, VERIFY_SIZE, 00407 N_("don't verify size of files"), NULL }, 00408 { "nolinkto", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00409 &rpmQVKArgs.qva_flags, VERIFY_LINKTO, 00410 N_("don't verify symlink path of files"), NULL }, 00411 { "nouser", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00412 &rpmQVKArgs.qva_flags, VERIFY_USER, 00413 N_("don't verify owner of files"), NULL }, 00414 { "nogroup", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00415 &rpmQVKArgs.qva_flags, VERIFY_GROUP, 00416 N_("don't verify group of files"), NULL }, 00417 { "nomtime", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00418 &rpmQVKArgs.qva_flags, VERIFY_MTIME, 00419 N_("don't verify modification time of files"), NULL }, 00420 { "nomode", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00421 &rpmQVKArgs.qva_flags, VERIFY_MODE, 00422 N_("don't verify mode of files"), NULL }, 00423 { "nordev", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00424 &rpmQVKArgs.qva_flags, VERIFY_RDEV, 00425 N_("don't verify mode of files"), NULL }, 00426 00427 { "nocontexts", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, RPMCLI_POPT_NOCONTEXTS, 00428 N_("don't verify file security contexts"), NULL }, 00429 { "nofiles", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_FILES, 00430 N_("don't verify files in package"), NULL}, 00431 #ifdef DYING 00432 { "nodeps", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_DEPS, 00433 N_("don't verify package dependencies"), NULL }, 00434 #else 00435 { "nodeps", '\0', 0, NULL, RPMCLI_POPT_NODEPS, 00436 N_("don't verify package dependencies"), NULL }, 00437 #endif 00438 00439 #ifdef DYING 00440 { "noscript", '\0', POPT_BIT_SET,&rpmQVKArgs.qva_flags, VERIFY_SCRIPT, 00441 N_("don't execute verify script(s)"), NULL }, 00442 /* XXX legacy had a trailing s on --noscript */ 00443 { "noscripts", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00444 &rpmQVKArgs.qva_flags, VERIFY_SCRIPT, 00445 N_("don't execute verify script(s)"), NULL }, 00446 #else 00447 { "noscript", '\0', 0, NULL, RPMCLI_POPT_NOSCRIPTS, 00448 N_("don't execute verify script(s)"), NULL }, 00449 /* XXX legacy had a trailing s on --noscript */ 00450 { "noscripts", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, RPMCLI_POPT_NOSCRIPTS, 00451 N_("don't execute verify script(s)"), NULL }, 00452 #endif 00453 00454 #ifdef DYING 00455 { "nodigest", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_DIGEST, 00456 N_("don't verify package digest(s)"), NULL }, 00457 { "nohdrchk", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00458 &rpmQVKArgs.qva_flags, VERIFY_HDRCHK, 00459 N_("don't verify database header(s) when retrieved"), NULL }, 00460 { "nosignature", '\0', POPT_BIT_SET, 00461 &rpmQVKArgs.qva_flags, VERIFY_SIGNATURE, 00462 N_("don't verify package signature(s)"), NULL }, 00463 #else 00464 { "nodigest", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_NODIGEST, 00465 N_("don't verify package digest(s)"), NULL }, 00466 { "nohdrchk", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_NOHDRCHK, 00467 N_("don't verify database header(s) when retrieved"), NULL }, 00468 { "nosignature", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_NOSIGNATURE, 00469 N_("don't verify package signature(s)"), NULL }, 00470 #endif 00471 00472 POPT_TABLEEND 00473 }; 00474 00478 /*@unchecked@*/ 00479 struct poptOption rpmSignPoptTable[] = { 00480 /*@-type@*/ /* FIX: cast? */ 00481 { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA | POPT_CBFLAG_CONTINUE, 00482 rpmQVSourceArgCallback, 0, NULL, NULL }, 00483 /*@=type@*/ 00484 { "addsign", '\0', 0, NULL, 'A', 00485 N_("sign package(s) (identical to --resign)"), NULL }, 00486 { "checksig", 'K', 0, NULL, 'K', 00487 N_("verify package signature(s)"), NULL }, 00488 { "delsign", '\0', 0, NULL, 'D', 00489 N_("delete package signatures"), NULL }, 00490 { "import", '\0', 0, NULL, 'I', 00491 N_("import an armored public key"), NULL }, 00492 { "resign", '\0', 0, NULL, 'R', 00493 N_("sign package(s) (identical to --addsign)"), NULL }, 00494 { "sign", '\0', POPT_ARGFLAG_DOC_HIDDEN, &rpmQVKArgs.sign, 0, 00495 N_("generate signature"), NULL }, 00496 00497 { "trust", '\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN, 0, POPT_TRUST, 00498 N_("specify trust metric"), N_("TRUST") }, 00499 { "trusted", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, 00500 &rpmQVKArgs.trust, 1, 00501 N_("set ultimate trust when importing pubkey(s)"), NULL }, 00502 { "untrusted", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, 00503 &rpmQVKArgs.trust, -1, 00504 N_("unset ultimate trust when importing pubkey(s)"), NULL }, 00505 { "nopassword", '\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN, 0, POPT_NOPASSWORD, 00506 N_("disable password challenge"), NULL }, 00507 /* XXX perhaps POPT_ARG_INT instead of callback. */ 00508 00509 { "nodigest", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_DIGEST, 00510 N_("don't verify package digest(s)"), NULL }, 00511 { "nohdrchk", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, 00512 &rpmQVKArgs.qva_flags, VERIFY_HDRCHK, 00513 N_("don't verify database header(s) when retrieved"), NULL }, 00514 { "nosignature", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_SIGNATURE, 00515 N_("don't verify package signature(s)"), NULL }, 00516 00517 POPT_TABLEEND 00518 };