rpm  5.4.10
poptQV.c
Go to the documentation of this file.
1 
6 #include "system.h"
7 
8 #include <rpmio.h>
9 #include <rpmiotypes.h>
10 #include <rpmcb.h>
11 
12 #include <rpmtag.h>
13 #include <rpmcli.h>
14 #include <rpmgi.h> /* XXX for giFlags */
15 
16 #include "debug.h"
17 
18 /*@unchecked@*/
20 
21 /*@unchecked@*/
22 int specedit = 0;
23 
24 /*@unchecked@*/
25 int printspec = 0;
26 
27 #define POPT_QUERYFORMAT -1000
28 #define POPT_WHATREQUIRES -1001
29 #define POPT_WHATPROVIDES -1002
30 #define POPT_QUERYBYNUMBER -1003
31 #define POPT_TRIGGEREDBY -1004
32 #define POPT_DUMP -1005
33 #define POPT_SPECFILE -1006
34 #define POPT_QUERYBYPKGID -1007
35 #define POPT_QUERYBYHDRID -1008
36 #define POPT_QUERYBYFILEID -1009
37 #define POPT_QUERYBYTID -1010
38 #define POPT_HDLIST -1011
39 #define POPT_FTSWALK -1012
40 
41 /* -1025 thrugh -1033 are common in rpmcli.h. */
42 #define POPT_TRUST -1037
43 #define POPT_WHATNEEDS -1038
44 #define POPT_SPECSRPM -1039
45 #define POPT_QUERYBYSOURCEPKGID -1040
46 #define POPT_WHATCONFLICTS -1041
47 #define POPT_WHATOBSOLETES -1042
48 #define POPT_NOPASSWORD -1043
49 
50 /* ========== Query/Verify/Signature source args */
51 static void rpmQVSourceArgCallback( /*@unused@*/ poptContext con,
52  /*@unused@*/ enum poptCallbackReason reason,
53  const struct poptOption * opt,
54  /*@unused@*/ const char * arg,
55  /*@unused@*/ const void * data)
56  /*@globals rpmQVKArgs @*/
57  /*@modifies rpmQVKArgs @*/
58 {
59  QVA_t qva = &rpmQVKArgs;
60  unsigned * _sourcep = (unsigned *)&qva->qva_source;
61 
62  switch (opt->val) {
63  case 'q': /* from --query, -q */
64  case 'Q': /* from --querytags (handled by poptALL) */
65  case 'V': /* from --verify, -V */
66  case 'A': /* from --addsign */
67  case 'D': /* from --delsign */
68  case 'I': /* from --import */
69  case 'K': /* from --checksig, -K */
70  case 'R': /* from --resign */
71  if (qva->qva_mode == '\0' || strchr("qQ ", qva->qva_mode)) {
72  qva->qva_mode = opt->val;
73  qva->qva_char = ' ';
74  }
75  break;
76  case 'a': *_sourcep |= RPMQV_ALL; qva->qva_sourceCount++; break;
77  case 'f': *_sourcep |= RPMQV_PATH; qva->qva_sourceCount++; break;
78  case 'g': *_sourcep |= RPMQV_GROUP; qva->qva_sourceCount++; break;
79  case 'p': *_sourcep |= RPMQV_RPM; qva->qva_sourceCount++; break;
80  case POPT_WHATNEEDS: *_sourcep |= RPMQV_WHATNEEDS;
81  qva->qva_sourceCount++; break;
82  case POPT_WHATPROVIDES: *_sourcep |= RPMQV_WHATPROVIDES;
83  qva->qva_sourceCount++; break;
84  case POPT_WHATREQUIRES: *_sourcep |= RPMQV_WHATREQUIRES;
85  qva->qva_sourceCount++; break;
86  case POPT_WHATCONFLICTS: *_sourcep |= RPMQV_WHATCONFLICTS;
87  qva->qva_sourceCount++; break;
88  case POPT_WHATOBSOLETES: *_sourcep |= RPMQV_WHATOBSOLETES;
89  qva->qva_sourceCount++; break;
90  case POPT_TRIGGEREDBY: *_sourcep |= RPMQV_TRIGGEREDBY;
91  qva->qva_sourceCount++; break;
92  case POPT_QUERYBYSOURCEPKGID: *_sourcep |= RPMQV_SOURCEPKGID;
93  qva->qva_sourceCount++; break;
94  case POPT_QUERYBYPKGID: *_sourcep |= RPMQV_PKGID;
95  qva->qva_sourceCount++; break;
96  case POPT_QUERYBYHDRID: *_sourcep |= RPMQV_HDRID;
97  qva->qva_sourceCount++; break;
98  case POPT_QUERYBYFILEID: *_sourcep |= RPMQV_FILEID;
99  qva->qva_sourceCount++; break;
100  case POPT_QUERYBYTID: *_sourcep |= RPMQV_TID;
101  qva->qva_sourceCount++; break;
102  case POPT_HDLIST: *_sourcep |= RPMQV_HDLIST;
103  qva->qva_sourceCount++; break;
104  case POPT_FTSWALK: *_sourcep |= RPMQV_FTSWALK;
105  qva->qva_sourceCount++; break;
106 
107 /* XXX SPECFILE is not verify sources */
108  case POPT_SPECFILE:
109  *_sourcep |= RPMQV_SPECFILE;
110  qva->qva_sourceCount++;
111  break;
112 /* XXX SPECSRPM is not verify sources */
113  case POPT_SPECSRPM:
114  *_sourcep |= RPMQV_SPECSRPM;
115  qva->qva_sourceCount++;
116  break;
117  case POPT_QUERYBYNUMBER:
118  *_sourcep |= RPMQV_DBOFFSET;
119  qva->qva_sourceCount++;
120  break;
121 
122  case POPT_NOPASSWORD:
123  qva->nopassword = 1;
124  break;
125 
126  }
127 }
128 
132 /*@unchecked@*/
133 struct poptOption rpmQVSourcePoptTable[] = {
134 /*@-type@*/ /* FIX: cast? */
135  { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA,
136  (void *) rpmQVSourceArgCallback, 0, NULL, NULL },
137 /*@=type@*/
138  { "all", 'a', 0, NULL, 'a',
139  N_("query/verify all packages"), NULL },
140  { "checksig", 'K', POPT_ARGFLAG_DOC_HIDDEN, NULL, 'K',
141  N_("rpm checksig mode"), NULL },
142  { "file", 'f', 0, NULL, 'f',
143  N_("query/verify package(s) owning file"), "FILE" },
144  { "group", 'g', 0, NULL, 'g',
145  N_("query/verify package(s) in group"), "GROUP" },
146  { "package", 'p', 0, NULL, 'p',
147  N_("query/verify a package file"), NULL },
148 
149  { "ftswalk", 'W', 0, NULL, POPT_FTSWALK,
150  N_("query/verify package(s) from TOP file tree walk"), "TOP" },
151  { "hdlist", 'H', POPT_ARGFLAG_DOC_HIDDEN, 0, POPT_HDLIST,
152  N_("query/verify package(s) from system HDLIST"), "HDLIST" },
153 
154  { "sourcepkgid", '\0', 0, NULL, POPT_QUERYBYSOURCEPKGID,
155  N_("query/verify package(s) with source package identifier"), "MD5" },
156  { "pkgid", '\0', 0, NULL, POPT_QUERYBYPKGID,
157  N_("query/verify package(s) with package identifier"), "MD5" },
158  { "hdrid", '\0', 0, NULL, POPT_QUERYBYHDRID,
159  N_("query/verify package(s) with header identifier"), "SHA1" },
160  { "fileid", '\0', 0, NULL, POPT_QUERYBYFILEID,
161  N_("query/verify package(s) with file identifier"), "MD5" },
162 
163  { "query", 'q', POPT_ARGFLAG_DOC_HIDDEN, NULL, 'q',
164  N_("rpm query mode"), NULL },
165  { "querybynumber", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, POPT_QUERYBYNUMBER,
166  N_("query/verify a header instance"), "HDRNUM" },
167  { "specfile", '\0', 0, NULL, POPT_SPECFILE,
168  N_("query a spec file"), N_("<spec>") },
169  { "specsrpm", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, POPT_SPECSRPM,
170  N_("query source metadata from spec file parse"), N_("<spec>") },
171  { "tid", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, POPT_QUERYBYTID,
172  N_("query/verify package(s) from install transaction"), "TID" },
173  { "triggeredby", '\0', 0, NULL, POPT_TRIGGEREDBY,
174  N_("query the package(s) triggered by the package"), "PACKAGE" },
175  { "verify", 'V', POPT_ARGFLAG_DOC_HIDDEN, NULL, 'V',
176  N_("rpm verify mode"), NULL },
177  { "whatrequires", '\0', 0, NULL, POPT_WHATREQUIRES,
178  N_("query/verify the package(s) which require a dependency"), "CAPABILITY" },
179  { "whatneeds", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, POPT_WHATNEEDS,
180  N_("query/verify the package(s) which require any contained provide"),
181  "CAPABILITY" },
182 
183  { "whatprovides", '\0', 0, NULL, POPT_WHATPROVIDES,
184  N_("query/verify the package(s) which provide a dependency"), "CAPABILITY" },
185  { "whatconflicts", '\0', 0, NULL, POPT_WHATCONFLICTS,
186  N_("query/verify the package(s) which conflict with a dependency"), "CAPABILITY" },
187  { "whatobsoletes", '\0', 0, NULL, POPT_WHATOBSOLETES,
188  N_("query/verify the package(s) which obsolete a dependency"), "CAPABILITY" },
189 
190  { "transaction", 'T', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &giFlags, (RPMGI_TSADD|RPMGI_TSORDER),
191  N_("create transaction set"), NULL},
192 #ifdef DYING /* XXX breaks --noorder in poptI.c */
193  { "noorder", '\0', POPT_BIT_CLR|POPT_ARGFLAG_DOC_HIDDEN, &giFlags, RPMGI_TSORDER,
194  N_("do not order transaction set"), NULL},
195 #endif
196  { "noglob", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &giFlags, RPMGI_NOGLOB,
197  N_("do not glob arguments"), NULL},
198  { "nomanifest", '\0', POPT_BIT_SET, &giFlags, RPMGI_NOMANIFEST,
199  N_("do not process non-package files as manifests"), NULL},
200  { "noheader", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &giFlags, RPMGI_NOHEADER,
201  N_("do not read headers"), NULL},
202 
203 
204  POPT_TABLEEND
205 };
206 
207 /* ========== Query specific popt args */
208 
209 static void queryArgCallback(poptContext con,
210  /*@unused@*/ enum poptCallbackReason reason,
211  const struct poptOption * opt, const char * arg,
212  /*@unused@*/ const void * data)
213  /*@globals rpmQVKArgs @*/
214  /*@modifies con, rpmQVKArgs @*/
215 {
216  QVA_t qva = &rpmQVKArgs;
217  unsigned * _flagsp = (unsigned *)&qva->qva_flags;
218 
219  /* XXX avoid accidental collisions with POPT_BIT_SET for flags */
220  if (opt->arg == NULL)
221  switch (opt->val) {
222  case 'c': *_flagsp |= QUERY_FOR_CONFIG | QUERY_FOR_LIST; break;
223  case 'd': *_flagsp |= QUERY_FOR_DOCS | QUERY_FOR_LIST; break;
224  case 'l': *_flagsp |= QUERY_FOR_LIST; break;
225  case 's': *_flagsp |= QUERY_FOR_STATE | QUERY_FOR_LIST;
226  break;
227  case POPT_DUMP: *_flagsp |= QUERY_FOR_DUMPFILES | QUERY_FOR_LIST;
228  break;
229 
230  case POPT_QUERYFORMAT:
231  if (arg) {
232  char * qf = (char *)qva->qva_queryFormat;
233  char * b = NULL;
234  size_t nb = 0;
235 
236  /* Read queryformat from file. */
237  if (arg[0] == '/') {
238  const char * fn = arg;
239  int rc;
240 
241  rc = poptReadFile(fn, &b, &nb, POPT_READFILE_TRIMNEWLINES);
242  if (rc != 0)
243  goto _qfexit;
244  if (b == NULL || nb == 0) /* XXX can't happen */
245  goto _qfexit;
246  /* XXX trim double quotes */
247  if (*b == '"') {
248  while (nb > 0 && b[nb] != '"')
249  b[nb--] = '\0';
250  b[nb] = '\0';
251  arg = b + 1;
252  } else
253  arg = b;
254  }
255 
256  /* Append to existing queryformat. */
257  if (qf) {
258  size_t len = strlen(qf) + strlen(arg) + 1;
259  qf = (char *) xrealloc(qf, len);
260  strcat(qf, arg);
261  } else {
262  qf = (char *) xmalloc(strlen(arg) + 1);
263  strcpy(qf, arg);
264  }
265  qva->qva_queryFormat = qf;
266 
267  _qfexit:
268  b = _free(b);
269  }
270  break;
271 
272  case 'i':
273  if (qva->qva_mode == 'q') {
274  /*@-nullassign -readonlytrans@*/
275  const char * infoCommand[] = { "--info", NULL };
276  /*@=nullassign =readonlytrans@*/
277  (void) poptStuffArgs(con, infoCommand);
278  }
279  break;
280 
282  *_flagsp |= VERIFY_DIGEST;
283  break;
284 
286  *_flagsp |= VERIFY_SIGNATURE;
287  break;
288 
290  *_flagsp |= VERIFY_HDRCHK;
291  break;
292 
293  case RPMCLI_POPT_NODEPS:
294  *_flagsp |= VERIFY_DEPS;
295  break;
296 
298  *_flagsp |= VERIFY_FDIGEST;
299  break;
300 
302  *_flagsp |= VERIFY_CONTEXTS;
303  break;
304 
306  *_flagsp |= VERIFY_SCRIPT;
307  break;
308 
309  case RPMCLI_POPT_NOHMACS:
310  *_flagsp |= VERIFY_HMAC;
311  break;
312 
313  /* XXX perhaps POPT_ARG_INT instead of callback. */
314  case POPT_TRUST:
315  { char * end = NULL;
316  long trust = (int) strtol(arg, &end, 0);
317  /* XXX range checks on trust. */
318  /* XXX if (end && *end) argerror(_("non-numeric trust metric.")); */
319  qva->trust = trust;
320  } break;
321  }
322 }
323 
327 /*@unchecked@*/
328 struct poptOption rpmQueryPoptTable[] = {
329 /*@-type@*/ /* FIX: cast? */
330  { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA | POPT_CBFLAG_CONTINUE,
331  (void *) queryArgCallback, 0, NULL, NULL },
332 /*@=type@*/
333  { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmQVSourcePoptTable, 0,
334  NULL, NULL },
335  { "configfiles", 'c', 0, 0, 'c',
336  N_("list all configuration files"), NULL },
337  { "docfiles", 'd', 0, 0, 'd',
338  N_("list all documentation files"), NULL },
339  { "dump", '\0', 0, 0, POPT_DUMP,
340  N_("dump basic file information"), NULL },
341  { NULL, 'i', POPT_ARGFLAG_DOC_HIDDEN, 0, 'i',
342  NULL, NULL },
343  { "list", 'l', 0, 0, 'l',
344  N_("list files in package"), NULL },
345 
346  { "aid", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
348  N_("add suggested packages to transaction"), NULL },
349 
350  /* Duplicate file attr flags from packages into command line options. */
351  { "noconfig", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN,
353  N_("skip %%config files"), NULL },
354  { "nodoc", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN,
356  N_("skip %%doc files"), NULL },
357  { "noghost", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN,
359  N_("skip %%ghost files"), NULL },
360 #ifdef NOTEVER /* XXX there's hardly a need for these */
361  { "nolicense", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN,
363  N_("skip %%license files"), NULL },
364  { "noreadme", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN,
366  N_("skip %%readme files"), NULL },
367 #endif
368 
369  { "printspec", '\0', POPT_ARG_VAL, &printspec, -1,
370  N_("print parsed spec file"), NULL },
371  { "qf", '\0', POPT_ARG_STRING | POPT_ARGFLAG_DOC_HIDDEN, 0,
372  POPT_QUERYFORMAT, NULL, NULL },
373  { "queryformat", '\0', POPT_ARG_STRING, 0, POPT_QUERYFORMAT,
374  N_("use the following query format"), N_("QUERYFORMAT") },
375  { "specedit", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &specedit, -1,
376  N_("substitute i18n sections into spec file"), NULL },
377  { "state", 's', 0, 0, 's',
378  N_("display the states of the listed files"), NULL },
379  { "target", '\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_TARGETPLATFORM,
380  N_("specify target platform"), N_("CPU-VENDOR-OS") },
381  POPT_TABLEEND
382 };
383 
387 struct poptOption rpmVerifyPoptTable[] = {
388 /*@-type@*/ /* FIX: cast? */
389  { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA | POPT_CBFLAG_CONTINUE,
390  (void *) queryArgCallback, 0, NULL, NULL },
391 /*@=type@*/
392  { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmQVSourcePoptTable, 0,
393  NULL, NULL },
394 
395  { "aid", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE|POPT_ARGFLAG_DOC_HIDDEN,
397  N_("add suggested packages to transaction"), NULL },
398 
399  /* Duplicate file attr flags from packages into command line options. */
400  { "noconfig", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
402  N_("skip %%config files"), NULL },
403  { "nodoc", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
405  N_("skip %%doc files"), NULL },
406 
407  /* Duplicate file verify flags from packages into command line options. */
409 #ifdef DYING
410  { "nomd5", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_FDIGEST,
411  N_("don't verify file digests"), NULL },
412 #else
413  { "nomd5", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, RPMCLI_POPT_NOFDIGESTS,
414  N_("don't verify file digests"), NULL },
415  { "nofdigests", '\0', 0, NULL, RPMCLI_POPT_NOFDIGESTS,
416  N_("don't verify file digests"), NULL },
417 #endif
418  { "nosize", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
420  N_("don't verify size of files"), NULL },
421  { "nolinkto", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
423  N_("don't verify symlink path of files"), NULL },
424  { "nouser", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
426  N_("don't verify owner of files"), NULL },
427  { "nogroup", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
429  N_("don't verify group of files"), NULL },
430  { "nomtime", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
432  N_("don't verify modification time of files"), NULL },
433  { "nomode", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
435  N_("don't verify mode of files"), NULL },
436  { "nordev", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
438  N_("don't verify mode of files"), NULL },
439 
440  { "nohmacs", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, RPMCLI_POPT_NOHMACS,
441  N_("don't verify file HMAC's"), NULL },
442  { "nocontexts", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, RPMCLI_POPT_NOCONTEXTS,
443  N_("don't verify file security contexts"), NULL },
444  { "nofiles", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_FILES,
445  N_("don't verify files in package"), NULL},
446 #ifdef DYING
447  { "nodeps", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_DEPS,
448  N_("don't verify package dependencies"), NULL },
449 #else
450  { "nodeps", '\0', 0, NULL, RPMCLI_POPT_NODEPS,
451  N_("don't verify package dependencies"), NULL },
452 #endif
453 
454 #ifdef DYING
455  { "noscript", '\0', POPT_BIT_SET,&rpmQVKArgs.qva_flags, VERIFY_SCRIPT,
456  N_("don't execute verify script(s)"), NULL },
457  /* XXX legacy had a trailing s on --noscript */
458  { "noscripts", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
460  N_("don't execute verify script(s)"), NULL },
461 #else
462  { "noscript", '\0', 0, NULL, RPMCLI_POPT_NOSCRIPTS,
463  N_("don't execute verify script(s)"), NULL },
464  /* XXX legacy had a trailing s on --noscript */
465  { "noscripts", '\0', POPT_ARGFLAG_DOC_HIDDEN, NULL, RPMCLI_POPT_NOSCRIPTS,
466  N_("don't execute verify script(s)"), NULL },
467 #endif
468 
469 #ifdef DYING
470  { "nodigest", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_DIGEST,
471  N_("don't verify package digest(s)"), NULL },
472  { "nohdrchk", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
474  N_("don't verify database header(s) when retrieved"), NULL },
475  { "nosignature", '\0', POPT_BIT_SET,
477  N_("don't verify package signature(s)"), NULL },
478 #else
479  { "nodigest", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_NODIGEST,
480  N_("don't verify package digest(s)"), NULL },
481  { "nohdrchk", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_NOHDRCHK,
482  N_("don't verify database header(s) when retrieved"), NULL },
483  { "nosignature", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_NOSIGNATURE,
484  N_("don't verify package signature(s)"), NULL },
485 #endif
486 
487  POPT_TABLEEND
488 };
489 
493 /*@unchecked@*/
494 struct poptOption rpmSignPoptTable[] = {
495 /*@-type@*/ /* FIX: cast? */
496  { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA | POPT_CBFLAG_CONTINUE,
497  (void *) rpmQVSourceArgCallback, 0, NULL, NULL },
498 /*@=type@*/
499  { "addsign", '\0', 0, NULL, 'A',
500  N_("sign package(s) (identical to --resign)"), NULL },
501  { "checksig", 'K', 0, NULL, 'K',
502  N_("verify package signature(s)"), NULL },
503  { "delsign", '\0', 0, NULL, 'D',
504  N_("delete package signatures"), NULL },
505  { "import", '\0', 0, NULL, 'I',
506  N_("import an armored public key"), NULL },
507  { "resign", '\0', 0, NULL, 'R',
508  N_("sign package(s) (identical to --addsign)"), NULL },
509  { "sign", '\0', POPT_ARGFLAG_DOC_HIDDEN, &rpmQVKArgs.sign, 0,
510  N_("generate signature"), NULL },
511 
512  { "trust", '\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN, 0, POPT_TRUST,
513  N_("specify trust metric"), N_("TRUST") },
514  { "trusted", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN,
515  &rpmQVKArgs.trust, 1,
516  N_("set ultimate trust when importing pubkey(s)"), NULL },
517  { "untrusted", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN,
518  &rpmQVKArgs.trust, -1,
519  N_("unset ultimate trust when importing pubkey(s)"), NULL },
520  { "nopassword", '\0', POPT_ARG_STRING|POPT_ARGFLAG_DOC_HIDDEN, 0, POPT_NOPASSWORD,
521  N_("disable password challenge"), NULL },
522  /* XXX perhaps POPT_ARG_INT instead of callback. */
523 
524  { "nodigest", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_DIGEST,
525  N_("don't verify package digest(s)"), NULL },
526  { "nohdrchk", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN,
528  N_("don't verify database header(s) when retrieved"), NULL },
529  { "nosignature", '\0', POPT_BIT_SET, &rpmQVKArgs.qva_flags, VERIFY_SIGNATURE,
530  N_("don't verify package signature(s)"), NULL },
531 
532  POPT_TABLEEND
533 };
#define POPT_SPECSRPM
Definition: poptQV.c:44
#define POPT_TRUST
Definition: poptQV.c:42
rpmdepFlags depFlags
Definition: rpmcli.h:675
#define RPMCLI_POPT_TARGETPLATFORM
Definition: rpmcli.h:102
int qva_sourceCount
Definition: rpmcli.h:636
#define POPT_DUMP
Definition: poptQV.c:32
#define POPT_QUERYBYHDRID
Definition: poptQV.c:35
static void rpmQVSourceArgCallback(poptContext con, enum poptCallbackReason reason, const struct poptOption *opt, const char *arg, const void *data)
Definition: poptQV.c:51
rpmQueryFlags qva_flags
Definition: rpmcli.h:637
#define POPT_WHATREQUIRES
Definition: poptQV.c:28
#define POPT_FTSWALK
Definition: poptQV.c:39
#define POPT_WHATPROVIDES
Definition: poptQV.c:29
struct poptOption rpmQueryPoptTable[]
Query mode options.
Definition: poptQV.c:328
static void queryArgCallback(poptContext con, enum poptCallbackReason reason, const struct poptOption *opt, const char *arg, const void *data)
Definition: poptQV.c:209
#define RPMCLI_POPT_NODIGEST
Definition: rpmcli.h:99
Command line option information.
Definition: rpmcli.h:634
#define RPMCLI_POPT_NOCONTEXTS
Definition: rpmcli.h:101
#define RPMCLI_POPT_NOSCRIPTS
Definition: rpmcli.h:97
#define RPMCLI_POPT_NOHDRCHK
Definition: rpmcli.h:100
#define N_(Text)
Definition: system.h:490
int specedit
Definition: poptQV.c:22
#define POPT_QUERYBYTID
Definition: poptQV.c:37
rpmgiFlags giFlags
Definition: rpmgi.c:42
#define POPT_ARGFLAG_TOGGLE
Definition: poptIO.c:68
#define POPT_TRIGGEREDBY
Definition: poptQV.c:31
struct poptOption rpmQVSourcePoptTable[]
Common query/verify mode options.
Definition: poptQV.c:133
#define POPT_QUERYBYSOURCEPKGID
Definition: poptQV.c:45
#define POPT_WHATOBSOLETES
Definition: poptQV.c:47
rpmQVSources qva_source
Definition: rpmcli.h:635
const char * qva_queryFormat
Definition: rpmcli.h:654
rpmfileAttrs qva_fflags
Definition: rpmcli.h:638
#define POPT_QUERYBYFILEID
Definition: poptQV.c:36
#define RPMCLI_POPT_NOFDIGESTS
Definition: rpmcli.h:96
struct poptOption rpmSignPoptTable[]
Signature mode options.
Definition: poptQV.c:494
int printspec
Definition: poptQV.c:25
#define RPMCLI_POPT_NOSIGNATURE
Definition: rpmcli.h:98
#define POPT_NOPASSWORD
Definition: poptQV.c:48
#define POPT_WHATCONFLICTS
Definition: poptQV.c:46
#define POPT_HDLIST
Definition: poptQV.c:38
#define RPMCLI_POPT_NODEPS
Common/global popt tokens used for command line option tables.
Definition: rpmcli.h:95
#define POPT_QUERYFORMAT
Definition: poptQV.c:27
static void * _free(const void *p)
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
Definition: rpmiotypes.h:647
struct rpmQVKArguments_s rpmQVKArgs
Definition: poptQV.c:19
#define POPT_QUERYBYPKGID
Definition: poptQV.c:34
#define RPMCLI_POPT_NOHMACS
Definition: rpmcli.h:103
struct poptOption rpmVerifyPoptTable[]
Verify mode options.
Definition: poptQV.c:387
#define POPT_WHATNEEDS
Definition: poptQV.c:43
#define xmalloc
Definition: system.h:33
#define POPT_SPECFILE
Definition: poptQV.c:33
#define xrealloc
Definition: system.h:36
#define POPT_QUERYBYNUMBER
Definition: poptQV.c:30