rpm  5.4.10
rpmcli.h
Go to the documentation of this file.
1 #ifndef H_RPMCLI
2 #define H_RPMCLI
3 
8 #include <popt.h>
9 #include <rpmmacro.h>
10 #include <rpmtypes.h>
11 #include <rpmtag.h>
12 #include <rpmps.h>
13 #include <rpmrc.h>
14 #include <rpmfi.h> /* XXX rpmfileAttrs */
15 #include <rpmts.h> /* XXX rpmdepFlags */
16 
21 /*@-redecl@*/
22 /*@unchecked@*/
24 /*@=redecl@*/
25 
29 /*@-redecl@*/
30 /*@unchecked@*/
31 extern int _noDirTokens;
32 /*@=redecl@*/
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
41 /*@unchecked@*/
42 extern struct poptOption rpmcliAllPoptTable[];
43 
44 /*@unchecked@*/
45 extern int global_depFlags;
46 
47 /*@unchecked@*/
48 extern struct poptOption rpmcliDepFlagsPoptTable[];
49 
50 /*@unchecked@*/ /*@observer@*/ /*@null@*/
51 extern const char * rpmcliTargets;
52 /*@=redecl@*/
53 
61 /*@null@*/
62 poptContext
63 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable)
64  /*@globals rpmCLIMacroContext, rpmGlobalMacroContext, h_errno, stderr,
65  fileSystem, internalState @*/
66  /*@modifies rpmCLIMacroContext, rpmGlobalMacroContext, stderr,
67  fileSystem, internalState @*/;
68 
73 /*@mayexit@*/
74 void rpmcliConfigured(void)
75  /*@globals rpmCLIMacroContext,
76  rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
77  /*@modifies rpmCLIMacroContext, rpmGlobalMacroContext,
78  fileSystem, internalState @*/;
79 
85 poptContext
86 rpmcliFini(/*@only@*/ /*@null@*/ poptContext optCon)
87  /*@globals rpmTags, rpmGlobalMacroContext,
88  fileSystem, internalState @*/
89  /*@modifies optCon, rpmTags, rpmGlobalMacroContext,
90  fileSystem, internalState @*/;
91 
95 #define RPMCLI_POPT_NODEPS -1026
96 #define RPMCLI_POPT_NOFDIGESTS -1027
97 #define RPMCLI_POPT_NOSCRIPTS -1028
98 #define RPMCLI_POPT_NOSIGNATURE -1029
99 #define RPMCLI_POPT_NODIGEST -1030
100 #define RPMCLI_POPT_NOHDRCHK -1031
101 #define RPMCLI_POPT_NOCONTEXTS -1032
102 #define RPMCLI_POPT_TARGETPLATFORM -1033
103 #define RPMCLI_POPT_NOHMACS -1034
104 
105 /* ==================================================================== */
108 
113 typedef enum rpmQVSources_e {
135 } rpmQVSources;
136 
140 typedef enum rpmVerifyAttrs_e {
142  RPMVERIFY_FDIGEST = (1 << 0),
143  RPMVERIFY_FILESIZE = (1 << 1),
144  RPMVERIFY_LINKTO = (1 << 2),
145  RPMVERIFY_USER = (1 << 3),
146  RPMVERIFY_GROUP = (1 << 4),
147  RPMVERIFY_MTIME = (1 << 5),
148  RPMVERIFY_MODE = (1 << 6),
149  RPMVERIFY_RDEV = (1 << 7),
150  RPMVERIFY_CAPS = (1 << 8),
151  /* bits 9-13 unused, reserved for rpmVerifyAttrs */
152  RPMVERIFY_HMAC = (1 << 14),
153  RPMVERIFY_CONTEXTS = (1 << 15),
154  /* bits 16-22 used in rpmVerifyFlags */
155  /* bits 23-27 used in rpmQueryFlags */
157  RPMVERIFY_READFAIL = (1 << 29),
158  RPMVERIFY_LSTATFAIL = (1 << 30),
161 #define RPMVERIFY_ALL ((rpmVerifyAttrs)~(RPMVERIFY_NONE))
162 #define RPMVERIFY_FAILURES \
163  (RPMVERIFY_LSTATFAIL|RPMVERIFY_READFAIL|RPMVERIFY_READLINKFAIL|RPMVERIFY_LGETFILECONFAIL)
164 
169 typedef enum rpmQueryFlags_e {
170 /*@-enummemuse@*/
172  QUERY_FDIGEST = (1 << 0),
173  QUERY_SIZE = (1 << 1),
174  QUERY_LINKTO = (1 << 2),
175  QUERY_USER = (1 << 3),
176  QUERY_GROUP = (1 << 4),
177  QUERY_MTIME = (1 << 5),
178  QUERY_MODE = (1 << 6),
179  QUERY_RDEV = (1 << 7),
180  QUERY_CAPS = (1 << 8),
181  /* bits 9-13 unused, reserved for rpmVerifyAttrs */
182  QUERY_HMAC = (1 << 14),
183  QUERY_CONTEXTS = (1 << 15),
184  QUERY_FILES = (1 << 16),
185  QUERY_DEPS = (1 << 17),
186  QUERY_SCRIPT = (1 << 18),
187  QUERY_DIGEST = (1 << 19),
188  QUERY_SIGNATURE = (1 << 20),
189  QUERY_PATCHES = (1 << 21),
190  QUERY_HDRCHK = (1 << 22),
191 /*@=enummemuse@*/
192  QUERY_FOR_LIST = (1 << 23),
193  QUERY_FOR_STATE = (1 << 24),
194  QUERY_FOR_DOCS = (1 << 25),
195  QUERY_FOR_CONFIG = (1 << 26),
196  QUERY_FOR_DUMPFILES = (1 << 27)
197 } rpmQueryFlags;
198 
199 #define _QUERY_FOR_BITS \
200  (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
201  QUERY_FOR_DUMPFILES)
202 
206 /*@unchecked@*/
208 
213 typedef enum rpmVerifyFlags_e {
214 /*@-enummemuse@*/
216 /*@=enummemuse@*/
217  VERIFY_FDIGEST = (1 << 0),
218  VERIFY_SIZE = (1 << 1),
219  VERIFY_LINKTO = (1 << 2),
220  VERIFY_USER = (1 << 3),
221  VERIFY_GROUP = (1 << 4),
222  VERIFY_MTIME = (1 << 5),
223  VERIFY_MODE = (1 << 6),
224  VERIFY_RDEV = (1 << 7),
225  VERIFY_CAPS = (1 << 8),
226  /* bits 9-13 unused, reserved for rpmVerifyAttrs */
227  VERIFY_HMAC = (1 << 14),
228  VERIFY_CONTEXTS = (1 << 15),
229  VERIFY_FILES = (1 << 16),
230  VERIFY_DEPS = (1 << 17),
231  VERIFY_SCRIPT = (1 << 18),
232  VERIFY_DIGEST = (1 << 19),
233  VERIFY_SIGNATURE = (1 << 20),
234  VERIFY_PATCHES = (1 << 21),
235  VERIFY_HDRCHK = (1 << 22),
236 /*@-enummemuse@*/
237  VERIFY_FOR_LIST = (1 << 23),
238  VERIFY_FOR_STATE = (1 << 24),
239  VERIFY_FOR_DOCS = (1 << 25),
240  VERIFY_FOR_CONFIG = (1 << 26),
242 /*@=enummemuse@*/
243  /* bits 28-31 used in rpmVerifyAttrs */
245 
246 #define VERIFY_ATTRS \
247  ( VERIFY_FDIGEST | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \
248  VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV | VERIFY_HMAC | VERIFY_CONTEXTS )
249 #define VERIFY_ALL \
250  ( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST |\
251  VERIFY_SIGNATURE | VERIFY_HDRCHK )
252 
255 typedef struct rpmQVKArguments_s * QVA_t;
256 
265 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h)
266  /*@globals fileSystem @*/
267  /*@modifies qva, ts, fileSystem @*/;
268 
277 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg)
278  /*@globals rpmGlobalMacroContext, h_errno,
279  fileSystem, internalState @*/
280  /*@modifies ts, qva, rpmGlobalMacroContext,
281  fileSystem, internalState @*/;
282 
285 /*@unchecked@*/
286 extern struct poptOption rpmQVSourcePoptTable[];
287 
290 /*@unchecked@*/
291 extern int specedit;
292 
295 /*@unchecked@*/
296 extern struct poptOption rpmQueryPoptTable[];
297 
300 /*@unchecked@*/
301 extern struct poptOption rpmVerifyPoptTable[];
302 
315 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg)
316  /*@globals rpmGlobalMacroContext, h_errno,
317  fileSystem, internalState @*/
318  /*@modifies qva, ts, rpmGlobalMacroContext,
319  fileSystem, internalState @*/;
320 
329 int showQueryPackage(QVA_t qva, rpmts ts, Header h)
330  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
331  /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/;
332 
340 int rpmcliArgIter(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
341  /*@globals rpmGlobalMacroContext, h_errno,
342  fileSystem, internalState @*/
343  /*@modifies ts, qva, rpmGlobalMacroContext,
344  fileSystem, internalState @*/;
345 
354 int rpmcliQuery(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
355  /*@globals rpmGlobalMacroContext, h_errno,
356  fileSystem, internalState @*/
357  /*@modifies ts, qva, rpmGlobalMacroContext,
358  fileSystem, internalState @*/;
359 
367 int showVerifyPackage(QVA_t qva, rpmts ts, Header h)
368  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
369  /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/;
370 
379 int rpmVerifySignatures(QVA_t qva, rpmts ts, void * _fd, const char * fn)
380  /*@globals fileSystem, internalState @*/
381  /*@modifies qva, ts, fileSystem, internalState @*/;
382 
391 int rpmcliVerify(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
392  /*@globals rpmGlobalMacroContext, h_errno,
393  fileSystem, internalState @*/
394  /*@modifies ts, qva, rpmGlobalMacroContext,
395  fileSystem, internalState @*/;
396 
398 /* ==================================================================== */
401 /* --- install/upgrade/erase modes */
402 
408  INSTALL_PERCENT = (1 << 0),
409  INSTALL_HASH = (1 << 1),
410  INSTALL_NODEPS = (1 << 2),
411  INSTALL_NOORDER = (1 << 3),
412  INSTALL_LABEL = (1 << 4),
413  INSTALL_UPGRADE = (1 << 5),
414  INSTALL_FRESHEN = (1 << 6),
415  INSTALL_INSTALL = (1 << 7),
416  INSTALL_ERASE = (1 << 8),
417  INSTALL_ALLMATCHES = (1 << 9)
419 
420 /*@-redecl@*/
421 /*@unchecked@*/
422 extern int rpmcliPackagesTotal;
423 /*@=redecl@*/
424 /*@unchecked@*/
425 extern int rpmcliHashesCurrent;
426 /*@unchecked@*/
427 extern int rpmcliHashesTotal;
428 /*@unchecked@*/
430 /*@unchecked@*/
432 
449 /*@null@*/
450 void * rpmShowProgress(/*@null@*/ const void * arg,
451  const rpmCallbackType what,
452  const rpmuint64_t amount,
453  const rpmuint64_t total,
454  /*@null@*/ fnpyKey key,
455  /*@null@*/ void * data)
456  /*@globals rpmcliHashesCurrent,
457  rpmcliProgressCurrent, rpmcliProgressTotal,
458  h_errno, rpmGlobalMacroContext, fileSystem, internalState @*/
459  /*@modifies arg, rpmcliHashesCurrent,
460  rpmcliProgressCurrent, rpmcliProgressTotal,
461  rpmGlobalMacroContext, fileSystem, internalState @*/;
462 
471 int rpmInstallSource(rpmts ts, const char * arg,
472  /*@null@*/ /*@out@*/ const char ** specFilePtr,
473  /*@null@*/ /*@out@*/ const char ** cookie)
474  /*@globals rpmGlobalMacroContext, h_errno,
475  fileSystem, internalState@*/
476  /*@modifies ts, *specFilePtr, *cookie, rpmGlobalMacroContext,
477  fileSystem, internalState @*/;
478 
486 int rpmcliInstallProblems(rpmts ts, /*@null@*/ const char * msg, int rc)
487  /*@globals fileSystem, internalState @*/
488  /*@modifies ts, fileSystem, internalState @*/;
489 
496  /*@globals internalState @*/
497  /*@modifies ts, internalState @*/;
498 
505  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
506  /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
507 
514  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
515  /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
516 
524 int rpmcliInstallRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)
525  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
526  /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
527 
536 int rpmcliInstall(rpmts ts, QVA_t ia, /*@null@*/ const char ** argv)
537  /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext, h_errno,
538  fileSystem, internalState@*/
539  /*@modifies ts, ia, rpmcliPackagesTotal, rpmGlobalMacroContext,
540  fileSystem, internalState @*/;
541 
549 int rpmErase(rpmts ts, QVA_t ia, /*@null@*/ const char ** argv)
550  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
551  /*@modifies ts, ia, rpmGlobalMacroContext,
552  fileSystem, internalState @*/;
553 
556 /*@unchecked@*/
557 extern struct poptOption rpmInstallPoptTable[];
558 
560 /* ==================================================================== */
563 
566 /*@unchecked@*/
567 extern struct poptOption rpmDatabasePoptTable[];
568 
570 /* ==================================================================== */
573 
583  const unsigned char * pkt, ssize_t pktlen)
584  /*@globals rpmGlobalMacroContext, h_errno,
585  fileSystem, internalState @*/
586  /*@modifies ts, rpmGlobalMacroContext,
587  fileSystem, internalState @*/;
588 
592 /*@-typeuse@*/
593 #if !defined(SWIG)
594 typedef enum rpmSignFlags_e {
601 } rpmSignFlags;
602 #endif
603 /*@=typeuse@*/
604 
607 /*@unchecked@*/
608 extern struct poptOption rpmSignPoptTable[];
609 
617 int rpmcliSign(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
618  /*@globals rpmGlobalMacroContext, h_errno,
619  fileSystem, internalState @*/
620  /*@modifies ts, qva, rpmGlobalMacroContext,
621  fileSystem, internalState @*/;
622 
628 #if !defined(SWIG)
634 /*@only@*/ /*@null@*/
636 /*@refccounted@*/ /*@relnull@*/
640 /*@null@*/
644 /*@null@*/
646 /*@unused@*/
648 /*@only@*/ /*@null@*/
649  const char * qva_queryFormat;
650  int sign;
652  int trust;
653 /*@observer@*/
654  const char * passPhrase;
655 /*@owned@*/ /*@null@*/
656  const char * qva_prefix;
657  char qva_mode;
667  char qva_char;
669  /* install/erase mode arguments */
678  int noDeps;
679  int incldocs;
681 /*@owned@*/ /*@relnull@*/
684 
685  /* database mode arguments */
686  int rebuild;
688  /* rollback vectors */
689  int (*rbCheck) (rpmts ts);
690  int (*rbOrder) (rpmts ts);
691  int (*rbRun) (rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet);
692 };
693 #endif
694 
697 /*@unchecked@*/
698 extern struct rpmQVKArguments_s rpmQVKArgs;
699 
702 /*@unchecked@*/
703 extern struct rpmQVKArguments_s rpmIArgs;
704 
707 /*@unchecked@*/
708 extern struct rpmQVKArguments_s rpmDBArgs;
709 
710 /* ==================================================================== */
713 
720 /*@observer@*/
721  const char * passPhrase;
722 /*@only@*/ /*@null@*/
723  const char * cookie;
724  const char * specFile;
725  int noBuild;
726  int noDeps;
727  int noLang;
729  int sign;
731  char buildMode;
732  char buildChar;
733 /*@observer@*/ /*@null@*/
734  const char * rootdir;
735 };
736 
739 typedef struct rpmBuildArguments_s * BTA_t;
740 
743 /*@unchecked@*/
744 extern struct rpmBuildArguments_s rpmBTArgs;
745 
748 /*@unchecked@*/
749 extern struct poptOption rpmBuildPoptTable[];
750 
753 #ifdef __cplusplus
754 }
755 #endif
756 
757 #endif /* H_RPMCLI */