6 struct rpmQVArguments rpmQVArgs;
9 /* ======================================================================== */
10 #define POPT_QUERYFORMAT 1000
11 #define POPT_WHATREQUIRES 1001
12 #define POPT_WHATPROVIDES 1002
13 #define POPT_QUERYBYNUMBER 1003
14 #define POPT_TRIGGEREDBY 1004
15 #define POPT_DUMP 1005
16 #define POPT_SPECFILE 1006
18 /* ========== Query/Verify source popt args */
19 static void rpmQVSourceArgCallback( /*@unused@*/ poptContext con,
20 /*@unused@*/ enum poptCallbackReason reason,
21 const struct poptOption * opt, /*@unused@*/ const char * arg,
24 QVA_t *qva = (QVA_t *) data;
30 if (qva->qva_mode == ' ') {
31 qva->qva_mode = opt->val;
35 case 'a': qva->qva_source |= RPMQV_ALL; qva->qva_sourceCount++; break;
36 case 'f': qva->qva_source |= RPMQV_PATH; qva->qva_sourceCount++; break;
37 case 'g': qva->qva_source |= RPMQV_GROUP; qva->qva_sourceCount++; break;
38 case 'p': qva->qva_source |= RPMQV_RPM; qva->qva_sourceCount++; break;
39 case POPT_WHATPROVIDES: qva->qva_source |= RPMQV_WHATPROVIDES;
40 qva->qva_sourceCount++; break;
41 case POPT_WHATREQUIRES: qva->qva_source |= RPMQV_WHATREQUIRES;
42 qva->qva_sourceCount++; break;
43 case POPT_TRIGGEREDBY: qva->qva_source |= RPMQV_TRIGGEREDBY;
44 qva->qva_sourceCount++; break;
46 /* XXX SPECFILE is not verify sources */
48 qva->qva_source |= RPMQV_SPECFILE;
49 qva->qva_sourceCount++;
51 case POPT_QUERYBYNUMBER:
52 qva->qva_source |= RPMQV_DBOFFSET;
53 qva->qva_sourceCount++;
58 struct poptOption rpmQVSourcePoptTable[] = {
59 { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA,
60 rpmQVSourceArgCallback, 0, NULL, NULL },
61 { "file", 'f', 0, 0, 'f',
62 N_("query package owning file"), "FILE" },
63 { "group", 'g', 0, 0, 'g',
64 N_("query packages in group"), "GROUP" },
65 { "package", 'p', 0, 0, 'p',
66 N_("query a package file"), NULL },
67 { "query", 'q', 0, NULL, 'q',
68 N_("rpm query mode"), NULL },
69 { "querybynumber", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0,
70 POPT_QUERYBYNUMBER, NULL, NULL },
71 { "querytags", '\0', 0, 0, 'Q',
72 N_("display known query tags"), NULL },
73 { "specfile", '\0', 0, 0, POPT_SPECFILE,
74 N_("query a spec file"), NULL },
75 { "triggeredby", '\0', 0, 0, POPT_TRIGGEREDBY,
76 N_("query the pacakges triggered by the package"), "PACKAGE" },
77 { "verify", 'V', 0, NULL, 'V',
78 N_("rpm verify mode"), NULL },
79 { NULL, 'y', POPT_ARGFLAG_DOC_HIDDEN, NULL, 'V',
80 N_("rpm verify mode (legacy)"), NULL },
81 { "whatrequires", '\0', 0, 0, POPT_WHATREQUIRES,
82 N_("query the packages which require a capability"), "CAPABILITY" },
83 { "whatprovides", '\0', 0, 0, POPT_WHATPROVIDES,
84 N_("query the packages which provide a capability"), "CAPABILITY" },
85 { 0, 0, 0, 0, 0, NULL, NULL }
88 /* ========== Query specific popt args */
90 static void queryArgCallback(/*@unused@*/poptContext con, /*@unused@*/enum poptCallbackReason reason,
91 const struct poptOption * opt, const char * arg,
94 QVA_t *qva = (QVA_t *) data;
97 case 'c': qva->qva_flags |= QUERY_FOR_CONFIG | QUERY_FOR_LIST; break;
98 case 'd': qva->qva_flags |= QUERY_FOR_DOCS | QUERY_FOR_LIST; break;
99 case 'l': qva->qva_flags |= QUERY_FOR_LIST; break;
100 case 's': qva->qva_flags |= QUERY_FOR_STATE | QUERY_FOR_LIST;
102 case POPT_DUMP: qva->qva_flags |= QUERY_FOR_DUMPFILES | QUERY_FOR_LIST; break;
103 case 'v': rpmIncreaseVerbosity(); break;
105 case POPT_QUERYFORMAT:
106 { char *qf = (char *)qva->qva_queryFormat;
108 int len = strlen(qf) + strlen(arg) + 1;
109 qf = xrealloc(qf, len);
112 qf = xmalloc(strlen(arg) + 1);
115 qva->qva_queryFormat = qf;
120 struct poptOption rpmQueryPoptTable[] = {
121 { NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA,
122 queryArgCallback, 0, NULL, NULL },
123 { "configfiles", 'c', 0, 0, 'c',
124 N_("list all configuration files"), NULL },
125 { "docfiles", 'd', 0, 0, 'd',
126 N_("list all documentation files"), NULL },
127 { "dump", '\0', 0, 0, POPT_DUMP,
128 N_("dump basic file information"), NULL },
129 { "list", 'l', 0, 0, 'l',
130 N_("list files in package"), NULL },
131 { "qf", '\0', POPT_ARG_STRING | POPT_ARGFLAG_DOC_HIDDEN, 0,
132 POPT_QUERYFORMAT, NULL, NULL },
133 { "queryformat", '\0', POPT_ARG_STRING, 0, POPT_QUERYFORMAT,
134 N_("use the following query format"), "QUERYFORMAT" },
135 { "specedit", '\0', POPT_ARG_VAL, &specedit, -1,
136 N_("substitute i18n sections into spec file"), NULL },
137 { "state", 's', 0, 0, 's',
138 N_("display the states of the listed files"), NULL },
139 { "verbose", 'v', 0, 0, 'v',
140 N_("display a verbose file listing"), NULL },
141 { 0, 0, 0, 0, 0, NULL, NULL }
144 /* ======================================================================== */