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