rpm  4.8.1
rpmcli.h
Go to the documentation of this file.
1 #ifndef H_RPMCLI
2 #define H_RPMCLI
3 
8 #include <popt.h>
9 
10 #include <rpm/rpmlib.h>
11 #include <rpm/rpmurl.h>
12 #include <rpm/rpmmacro.h>
13 #include <rpm/rpmcallback.h>
14 #include <rpm/rpmts.h>
15 #include <rpm/rpmfi.h>
16 #include <rpm/rpmvf.h>
17 #include <rpm/argv.h>
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
26 extern int _noDirTokens;
27 
31 extern struct poptOption rpmcliAllPoptTable[];
32 
33 extern int ftsOpts;
34 
35 extern struct poptOption rpmcliFtsPoptTable[];
36 
37 extern const char * rpmcliPipeOutput;
38 
39 extern const char * rpmcliRcfile;
40 
41 extern const char * rpmcliRootDir;
42 
50 poptContext
51 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable);
52 
57 void rpmcliConfigured(void);
58 
64 poptContext
65 rpmcliFini(poptContext optCon);
66 
70 #define RPMCLI_POPT_NODEPS -1025
71 #define RPMCLI_POPT_FORCE -1026
72 #define RPMCLI_POPT_NOMD5 -1027
73 #define RPMCLI_POPT_NOFILEDIGEST -1027 /* same as obsolete RPMCLI_POPT_NOMD5 */
74 #define RPMCLI_POPT_NOSCRIPTS -1028
75 #define RPMCLI_POPT_NOSIGNATURE -1029
76 #define RPMCLI_POPT_NODIGEST -1030
77 #define RPMCLI_POPT_NOHDRCHK -1031
78 #define RPMCLI_POPT_NOCONTEXTS -1032
79 
80 /* ==================================================================== */
87 typedef enum rpmQVSources_e {
104 } rpmQVSources;
105 
110 typedef enum rpmQueryFlags_e {
112  QUERY_MD5 = (1 << 0),
113  QUERY_FILEDIGEST = (1 << 0),
114  QUERY_SIZE = (1 << 1),
115  QUERY_LINKTO = (1 << 2),
116  QUERY_USER = (1 << 3),
117  QUERY_GROUP = (1 << 4),
118  QUERY_MTIME = (1 << 5),
119  QUERY_MODE = (1 << 6),
120  QUERY_RDEV = (1 << 7),
121  /* bits 8-14 unused, reserved for rpmVerifyAttrs */
122  QUERY_CONTEXTS = (1 << 15),
123  QUERY_FILES = (1 << 16),
124  QUERY_DEPS = (1 << 17),
125  QUERY_SCRIPT = (1 << 18),
126  QUERY_DIGEST = (1 << 19),
127  QUERY_SIGNATURE = (1 << 20),
128  QUERY_PATCHES = (1 << 21),
129  QUERY_HDRCHK = (1 << 22),
130  QUERY_FOR_LIST = (1 << 23),
131  QUERY_FOR_STATE = (1 << 24),
132  QUERY_FOR_DOCS = (1 << 25),
133  QUERY_FOR_CONFIG = (1 << 26),
134  QUERY_FOR_DUMPFILES = (1 << 27)
135 } rpmQueryFlags;
136 
137 #define _QUERY_FOR_BITS \
138  (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
139  QUERY_FOR_DUMPFILES)
140 
145 
148 typedef struct rpmQVKArguments_s * QVA_t;
149 
158 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h);
159 
168 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg);
169 
174  rpmQVSources qva_source;
186  int sign;
187  const char * passPhrase;
188  const char * qva_prefix;
189  char qva_mode;
199  char qva_char;
200 };
201 
204 extern struct rpmQVKArguments_s rpmQVKArgs;
205 
208 extern struct poptOption rpmQVSourcePoptTable[];
209 
212 extern struct poptOption rpmQueryPoptTable[];
213 
216 extern struct poptOption rpmVerifyPoptTable[];
217 
229 int rpmcliShowMatches(QVA_t qva, rpmts ts);
230 
235 void rpmDisplayQueryTags(FILE * fp);
236 
249 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg);
250 
259 int showQueryPackage(QVA_t qva, rpmts ts, Header h);
260 
268 int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv);
269 
278 int rpmcliQuery(rpmts ts, QVA_t qva, ARGV_const_t argv);
279 
287 int showVerifyPackage(QVA_t qva, rpmts ts, Header h);
288 
297 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn);
298 
307 int rpmcliVerify(rpmts ts, QVA_t qva, ARGV_const_t argv);
308 
309 /* ==================================================================== */
319  char * targets;
320  const char * passPhrase;
321  char * cookie;
322  int force;
323  int noBuild;
324  int noDeps;
325  int noLang;
327  int sign;
328  char buildMode;
329  char buildChar;
330  const char * rootdir;
331 };
332 
335 typedef struct rpmBuildArguments_s * BTA_t;
336 
339 extern struct rpmBuildArguments_s rpmBTArgs;
340 
343 extern struct poptOption rpmBuildPoptTable[];
344 
345 /* ==================================================================== */
347 /* --- install/upgrade/erase modes */
348 
352 typedef enum rpmInstallFlags_e {
354  INSTALL_PERCENT = (1 << 0),
355  INSTALL_HASH = (1 << 1),
356  INSTALL_NODEPS = (1 << 2),
357  INSTALL_NOORDER = (1 << 3),
358  INSTALL_LABEL = (1 << 4),
359  INSTALL_UPGRADE = (1 << 5),
360  INSTALL_FRESHEN = (1 << 6),
361  INSTALL_INSTALL = (1 << 7),
362  INSTALL_ERASE = (1 << 8),
363  INSTALL_ALLMATCHES = (1 << 9)
365 
369 #define UNINSTALL_NONE INSTALL_NONE
370 #define UNINSTALL_NODEPS INSTALL_NODEPS
371 #define UNINSTALL_ALLMATCHES INSTALL_ALLMATCHES
372 
373 extern int rpmcliPackagesTotal;
374 extern int rpmcliHashesCurrent;
375 extern int rpmcliHashesTotal;
376 extern int rpmcliProgressCurrent;
377 extern int rpmcliProgressTotal;
378 
393 void * rpmShowProgress(const void * arg,
394  const rpmCallbackType what,
395  const rpm_loff_t amount,
396  const rpm_loff_t total,
397  fnpyKey key,
398  void * data);
399 
408 int rpmInstallSource(rpmts ts, const char * arg,
409  char ** specFilePtr,
410  char ** cookie);
411 
412 
422  int noDeps;
423  int incldocs;
425  char * prefix;
426  const char * rootdir;
427 };
428 
438 int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia, ARGV_t fileArgv);
439 
448 int rpmErase(rpmts ts, struct rpmInstallArguments_s * ia, ARGV_const_t argv);
449 
452 extern struct rpmInstallArguments_s rpmIArgs;
453 
456 extern struct poptOption rpmInstallPoptTable[];
457 
458 /* ==================================================================== */
460 /* --- database modes */
461 
466  int init;
467  int rebuild;
468  int verify;
469 };
470 
473 extern struct rpmDatabaseArguments_s rpmDBArgs;
474 
477 extern struct poptOption rpmDatabasePoptTable[];
478 
479 /* ==================================================================== */
485 typedef enum rpmSignFlags_e {
492 } rpmSignFlags;
493 
496 extern struct poptOption rpmSignPoptTable[];
497 
505 int rpmcliSign(rpmts ts, QVA_t qva, ARGV_const_t argv);
506 
507 #ifdef __cplusplus
508 }
509 #endif
510 
511 #endif /* H_RPMCLI */
rpmQVSources_e
Query/Verify argument qualifiers.
Definition: rpmcli.h:87
const char * rpmcliRcfile
enum rpmCallbackType_e rpmCallbackType
Bit(s) to identify progress callbacks.
int rpmInstall(rpmts ts, struct rpmInstallArguments_s *ia, ARGV_t fileArgv)
Install/upgrade/freshen binary rpm package.
rpmQueryFlags rpmcliQueryFlags
Bit(s) from common command line options.
int _noDirTokens
Should version 3 packages be produced?
struct poptOption rpmcliFtsPoptTable[]
enum rpmQueryFlags_e rpmQueryFlags
Bit(s) to control rpmQuery() operation, stored in qva_flags.
int qva_sourceCount
Definition: rpmcli.h:175
struct poptOption rpmDatabasePoptTable[]
int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv)
Iterate over query/verify arg list.
struct rpmDatabaseArguments_s rpmDBArgs
char ** ARGV_t
Definition: argv.h:14
rpmSignFlags_e
Bit(s) to control rpmReSign() operation.
Definition: rpmcli.h:485
const char * qva_prefix
Definition: rpmcli.h:188
struct _FD_s * FD_t
RPM IO file descriptor type.
Definition: rpmtypes.h:82
rpmprobFilterFlags probFilter
Definition: rpmcli.h:418
struct rpmBuildArguments_s rpmBTArgs
enum rpmprobFilterFlags_e rpmprobFilterFlags
rpmQueryFlags qva_flags
Definition: rpmcli.h:420
int rpmcliProgressTotal
int rpmcliQuery(rpmts ts, QVA_t qva, ARGV_const_t argv)
Display package information.
static struct poptOption optionsTable[]
Definition: rpmqv.c:73
rpmQueryFlags qva_flags
Definition: rpmcli.h:176
rpmInstallFlags_e
Bit(s) to control rpmInstall() operation.
Definition: rpmcli.h:352
struct poptOption rpmInstallPoptTable[]
poptContext rpmcliInit(int argc, char *const argv[], struct poptOption *optionsTable)
Initialize most everything needed by an rpm CLI executable context.
poptContext rpmcliFini(poptContext optCon)
Destroy most everything needed by an rpm CLI executable context.
rpmRelocation * relocations
Definition: rpmcli.h:424
struct rpmBuildArguments_s * BTA_t
Definition: rpmcli.h:335
struct rpmQVKArguments_s rpmQVKArgs
int showQueryPackage(QVA_t qva, rpmts ts, Header h)
Display results of package query.
Describe database command line requests.
Definition: rpmcli.h:465
int rpmcliHashesCurrent
struct poptOption rpmVerifyPoptTable[]
int rpmcliVerify(rpmts ts, QVA_t qva, ARGV_const_t argv)
Verify package install.
int rpmcliShowMatches(QVA_t qva, rpmts ts)
Display query/verify information for each header in iterator.
void * rpmShowProgress(const void *arg, const rpmCallbackType what, const rpm_loff_t amount, const rpm_loff_t total, fnpyKey key, void *data)
The rpm CLI generic transaction callback handler.
Describe query/verify/signature command line operation.
Definition: rpmcli.h:173
QSpecF_t qva_specQuery
Definition: rpmcli.h:183
We pass these around as an array with a sentinel.
Definition: rpmfi.h:94
struct poptOption rpmQueryPoptTable[]
int rpmErase(rpmts ts, struct rpmInstallArguments_s *ia, ARGV_const_t argv)
Erase binary rpm package.
QVF_t qva_showPackage
Definition: rpmcli.h:182
int rpmcliSign(rpmts ts, QVA_t qva, ARGV_const_t argv)
Create/Modify/Check elements from signature header.
enum rpmQVSources_e rpmQVSources
Query/Verify argument qualifiers.
void rpmcliConfigured(void)
Make sure that rpm configuration has been read.
const char * rootdir
Definition: rpmcli.h:330
int rpmcliHashesTotal
int(* QVF_t)(QVA_t qva, rpmts ts, Header h)
Function to display iterator matches.
Definition: rpmcli.h:158
struct rpmdbMatchIterator_s * rpmdbMatchIterator
Definition: rpmtypes.h:64
const char * rpmcliPipeOutput
rpmtransFlags transFlags
Definition: rpmcli.h:417
struct poptOption rpmBuildPoptTable[]
char * buildRootOverride
Definition: rpmcli.h:318
uint64_t rpm_loff_t
Definition: rpmtypes.h:47
int(* QSpecF_t)(rpmts ts, QVA_t qva, const char *arg)
Function to query spec file.
Definition: rpmcli.h:168
rpmQVSources qva_source
Definition: rpmcli.h:174
int rpmInstallSource(rpmts ts, const char *arg, char **specFilePtr, char **cookie)
Install source rpm package.
rpmfileAttrs qva_fflags
Definition: rpmcli.h:177
rpmInstallFlags installInterfaceFlags
Definition: rpmcli.h:419
const char * passPhrase
Definition: rpmcli.h:187
const char * rpmcliRootDir
enum rpmfileAttrs_e rpmfileAttrs
File Attributes.
int showVerifyPackage(QVA_t qva, rpmts ts, Header h)
Display results of package verify.
void rpmDisplayQueryTags(FILE *fp)
Display list of tags that can be used in –queryformat.
int rpmcliProgressCurrent
enum rpmInstallFlags_e rpmInstallFlags
Bit(s) to control rpmInstall() operation.
struct rpmgi_s * rpmgi
Definition: rpmtypes.h:72
char * qva_queryFormat
Definition: rpmcli.h:185
char *const * ARGV_const_t
Definition: argv.h:15
enum rpmtransFlags_e rpmtransFlags
Bit(s) to control rpmtsRun() operation.
struct rpmts_s * rpmts
The main types involved in transaction manipulation.
Definition: rpmtypes.h:59
struct rpmQVKArguments_s * QVA_t
Definition: rpmcli.h:148
Describe database command line requests.
Definition: rpmcli.h:416
int rpmcliPackagesTotal
rpmdbMatchIterator qva_mi
Definition: rpmcli.h:178
struct rpmInstallArguments_s rpmIArgs
enum rpmRC_e rpmRC
Package read return codes.
struct poptOption rpmQVSourcePoptTable[]
const void * fnpyKey
Definition: rpmtypes.h:65
int rpmQueryVerify(QVA_t qva, rpmts ts, const char *arg)
Common query/verify source interface, called once for each CLI arg.
const char * rootdir
Definition: rpmcli.h:426
enum rpmSignFlags_e rpmSignFlags
Bit(s) to control rpmReSign() operation.
Describe build command line request.
Definition: rpmcli.h:315
struct poptOption rpmSignPoptTable[]
rpmQueryFlags qva_flags
Definition: rpmcli.h:316
int ftsOpts
struct poptOption rpmcliAllPoptTable[]
Popt option table for options shared by all modes and executables.
const char * passPhrase
Definition: rpmcli.h:320
rpmQueryFlags_e
Bit(s) to control rpmQuery() operation, stored in qva_flags.
Definition: rpmcli.h:110
struct headerToken_s * Header
RPM header and data retrieval types.
Definition: rpmtypes.h:24
int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char *fn)
Check package and header signatures.