rpm  4.5
rpmcli.h
Go to the documentation of this file.
1 #ifndef H_RPMCLI
2 #define H_RPMCLI
3 
8 #include "rpmlib.h"
9 #include "rpmurl.h"
10 #include "rpmmacro.h"
11 #include "rpmps.h"
12 #include "argv.h"
13 
17 /*@-redecl@*/
18 /*@unchecked@*/
19 extern int _noDirTokens;
20 /*@=redecl@*/
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
29 /*@unchecked@*/
30 extern struct poptOption rpmcliAllPoptTable[];
31 
32 /*@unchecked@*/
33 extern int ftsOpts;
34 
35 /*@unchecked@*/
36 extern struct poptOption rpmcliFtsPoptTable[];
37 
38 /*@unchecked@*/
39 extern int global_depFlags;
40 
41 /*@unchecked@*/
42 extern struct poptOption rpmcliDepFlagsPoptTable[];
43 
44 /*@unchecked@*/ /*@observer@*/ /*@null@*/
45 extern const char * rpmcliPipeOutput;
46 
47 /*@unchecked@*/ /*@observer@*/ /*@null@*/
48 extern const char * rpmcliRcfile;
49 
50 /*@unchecked@*/ /*@observer@*/ /*@null@*/
51 extern const char * rpmcliRootDir;
52 
53 /*@unchecked@*/ /*@observer@*/ /*@null@*/
54 extern const char * rpmcliTargets;
55 /*@=redecl@*/
56 
64 /*@null@*/
65 poptContext
66 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable)
67  /*@globals rpmRcfiles, rpmCLIMacroContext, rpmGlobalMacroContext, h_errno, stderr,
68  fileSystem, internalState @*/
69  /*@modifies rpmCLIMacroContext, rpmGlobalMacroContext, stderr,
70  fileSystem, internalState @*/;
71 
76 /*@mayexit@*/
77 void rpmcliConfigured(void)
78  /*@globals rpmRcfiles, rpmCLIMacroContext,
79  rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
80  /*@modifies rpmCLIMacroContext, rpmGlobalMacroContext,
81  fileSystem, internalState @*/;
82 
88 poptContext
89 rpmcliFini(/*@only@*/ /*@null@*/ poptContext optCon)
90  /*@globals rpmTags, rpmGlobalMacroContext,
91  fileSystem, internalState @*/
92  /*@modifies optCon, rpmTags, rpmGlobalMacroContext,
93  fileSystem, internalState @*/;
94 
98 #define RPMCLI_POPT_NODEPS -1025
99 #define RPMCLI_POPT_FORCE -1026
100 #define RPMCLI_POPT_NOFDIGESTS -1027
101 #define RPMCLI_POPT_NOSCRIPTS -1028
102 #define RPMCLI_POPT_NOSIGNATURE -1029
103 #define RPMCLI_POPT_NODIGEST -1030
104 #define RPMCLI_POPT_NOHDRCHK -1031
105 #define RPMCLI_POPT_NOCONTEXTS -1032
106 #define RPMCLI_POPT_TARGETPLATFORM -1033
107 
108 /* ==================================================================== */
111 
116 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  /* bits 8-14 unused, reserved for rpmVerifyAttrs */
151  RPMVERIFY_CONTEXTS = (1 << 15),
152  /* bits 16-22 used in rpmVerifyFlags */
153  /* bits 23-27 used in rpmQueryFlags */
155  RPMVERIFY_READFAIL = (1 << 29),
156  RPMVERIFY_LSTATFAIL = (1 << 30),
159 #define RPMVERIFY_MD5 RPMVERIFY_FDIGEST
160 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE)
161 #define RPMVERIFY_FAILURES \
162  (RPMVERIFY_LSTATFAIL|RPMVERIFY_READFAIL|RPMVERIFY_READLINKFAIL|RPMVERIFY_LGETFILECONFAIL)
163 
168 typedef enum rpmQueryFlags_e {
169 /*@-enummemuse@*/
171  QUERY_FDIGEST = (1 << 0),
172  QUERY_SIZE = (1 << 1),
173  QUERY_LINKTO = (1 << 2),
174  QUERY_USER = (1 << 3),
175  QUERY_GROUP = (1 << 4),
176  QUERY_MTIME = (1 << 5),
177  QUERY_MODE = (1 << 6),
178  QUERY_RDEV = (1 << 7),
179  /* bits 8-14 unused, reserved for rpmVerifyAttrs */
180  QUERY_CONTEXTS = (1 << 15),
181  QUERY_FILES = (1 << 16),
182  QUERY_DEPS = (1 << 17),
183  QUERY_SCRIPT = (1 << 18),
184  QUERY_DIGEST = (1 << 19),
185  QUERY_SIGNATURE = (1 << 20),
186  QUERY_PATCHES = (1 << 21),
187  QUERY_HDRCHK = (1 << 22),
188 /*@=enummemuse@*/
189  QUERY_FOR_LIST = (1 << 23),
190  QUERY_FOR_STATE = (1 << 24),
191  QUERY_FOR_DOCS = (1 << 25),
192  QUERY_FOR_CONFIG = (1 << 26),
193  QUERY_FOR_DUMPFILES = (1 << 27)
194 } rpmQueryFlags;
195 
196 #define _QUERY_FOR_BITS \
197  (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
198  QUERY_FOR_DUMPFILES)
199 
203 /*@unchecked@*/
205 
210 typedef enum rpmVerifyFlags_e {
211 /*@-enummemuse@*/
213 /*@=enummemuse@*/
214  VERIFY_FDIGEST = (1 << 0),
215  VERIFY_SIZE = (1 << 1),
216  VERIFY_LINKTO = (1 << 2),
217  VERIFY_USER = (1 << 3),
218  VERIFY_GROUP = (1 << 4),
219  VERIFY_MTIME = (1 << 5),
220  VERIFY_MODE = (1 << 6),
221  VERIFY_RDEV = (1 << 7),
222  /* bits 8-14 unused, reserved for rpmVerifyAttrs */
223  VERIFY_CONTEXTS = (1 << 15),
224  VERIFY_FILES = (1 << 16),
225  VERIFY_DEPS = (1 << 17),
226  VERIFY_SCRIPT = (1 << 18),
227  VERIFY_DIGEST = (1 << 19),
228  VERIFY_SIGNATURE = (1 << 20),
229  VERIFY_PATCHES = (1 << 21),
230  VERIFY_HDRCHK = (1 << 22),
231 /*@-enummemuse@*/
232  VERIFY_FOR_LIST = (1 << 23),
233  VERIFY_FOR_STATE = (1 << 24),
234  VERIFY_FOR_DOCS = (1 << 25),
235  VERIFY_FOR_CONFIG = (1 << 26),
237 /*@=enummemuse@*/
238  /* bits 28-31 used in rpmVerifyAttrs */
240 
241 #define VERIFY_ATTRS \
242  ( VERIFY_FDIGEST | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \
243  VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV | VERIFY_CONTEXTS )
244 #define VERIFY_ALL \
245  ( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST |\
246  VERIFY_SIGNATURE | VERIFY_HDRCHK )
247 
250 typedef struct rpmQVKArguments_s * QVA_t;
251 
260 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h)
261  /*@globals fileSystem @*/
262  /*@modifies qva, ts, fileSystem @*/;
263 
272 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg)
273  /*@globals rpmGlobalMacroContext, h_errno,
274  fileSystem, internalState @*/
275  /*@modifies ts, qva, rpmGlobalMacroContext,
276  fileSystem, internalState @*/;
277 
280 /*@unchecked@*/
281 extern struct poptOption rpmQVSourcePoptTable[];
282 
285 /*@unchecked@*/
286 extern int specedit;
287 
290 /*@unchecked@*/
291 extern struct poptOption rpmQueryPoptTable[];
292 
295 /*@unchecked@*/
296 extern struct poptOption rpmVerifyPoptTable[];
297 
309 int rpmcliShowMatches(QVA_t qva, rpmts ts)
310  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
311  /*@modifies qva, rpmGlobalMacroContext, fileSystem, internalState @*/;
312 
317 void rpmDisplayQueryTags(FILE * fp)
318  /*@globals fileSystem, internalState @*/
319  /*@modifies *fp, fileSystem, internalState @*/;
320 
333 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg)
334  /*@globals rpmGlobalMacroContext, h_errno,
335  fileSystem, internalState @*/
336  /*@modifies qva, ts, rpmGlobalMacroContext,
337  fileSystem, internalState @*/;
338 
347 int showQueryPackage(QVA_t qva, rpmts ts, Header h)
348  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
349  /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/;
350 
358 int rpmcliArgIter(rpmts ts, QVA_t qva, /*@null@*/ ARGV_t argv)
359  /*@globals ftsOpts, rpmGlobalMacroContext, h_errno,
360  fileSystem, internalState @*/
361  /*@modifies ts, qva, ftsOpts, rpmGlobalMacroContext,
362  fileSystem, internalState @*/;
363 
372 int rpmcliQuery(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
373  /*@globals rpmGlobalMacroContext, h_errno,
374  fileSystem, internalState @*/
375  /*@modifies ts, qva, rpmGlobalMacroContext,
376  fileSystem, internalState @*/;
377 
387 /*@-incondefs@*/
388 int rpmVerifyFile(const rpmts ts, rpmfi fi,
389  /*@out@*/ rpmVerifyAttrs * res, rpmVerifyAttrs omitMask)
390  /*@globals h_errno, fileSystem, internalState @*/
391  /*@modifies ts, fi, *res, fileSystem, internalState @*/
392  /*@requires maxSet(res) >= 0 @*/;
393 /*@=incondefs@*/
394 
402 int showVerifyPackage(QVA_t qva, rpmts ts, Header h)
403  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
404  /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/;
405 
414 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn)
415  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
416  /*@modifies qva, ts, fd, rpmGlobalMacroContext, h_errno,
417  fileSystem, internalState @*/;
418 
427 int rpmcliVerify(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
428  /*@globals rpmGlobalMacroContext, h_errno,
429  fileSystem, internalState @*/
430  /*@modifies ts, qva, rpmGlobalMacroContext,
431  fileSystem, internalState @*/;
432 
434 /* ==================================================================== */
437 /* --- install/upgrade/erase modes */
438 
444  INSTALL_PERCENT = (1 << 0),
445  INSTALL_HASH = (1 << 1),
446  INSTALL_NODEPS = (1 << 2),
447  INSTALL_NOORDER = (1 << 3),
448  INSTALL_LABEL = (1 << 4),
449  INSTALL_UPGRADE = (1 << 5),
450  INSTALL_FRESHEN = (1 << 6),
451  INSTALL_INSTALL = (1 << 7),
452  INSTALL_ERASE = (1 << 8),
453  INSTALL_ALLMATCHES = (1 << 9)
455 
456 /*@unchecked@*/
457 extern int rpmcliPackagesTotal;
458 /*@unchecked@*/
459 extern int rpmcliHashesCurrent;
460 /*@unchecked@*/
461 extern int rpmcliHashesTotal;
462 /*@unchecked@*/
463 extern unsigned long long rpmcliProgressCurrent;
464 /*@unchecked@*/
465 extern unsigned long long rpmcliProgressTotal;
466 
483 /*@null@*/
484 void * rpmShowProgress(/*@null@*/ const void * arg,
485  const rpmCallbackType what,
486  const unsigned long long amount,
487  const unsigned long long total,
488  /*@null@*/ fnpyKey key,
489  /*@null@*/ void * data)
490  /*@globals rpmcliHashesCurrent,
491  rpmcliProgressCurrent, rpmcliProgressTotal,
492  h_errno, fileSystem, internalState @*/
493  /*@modifies rpmcliHashesCurrent,
494  rpmcliProgressCurrent, rpmcliProgressTotal,
495  fileSystem, internalState @*/;
496 
505 int rpmInstallSource(rpmts ts, const char * arg,
506  /*@null@*/ /*@out@*/ const char ** specFilePtr,
507  /*@null@*/ /*@out@*/ const char ** cookie)
508  /*@globals rpmGlobalMacroContext, h_errno,
509  fileSystem, internalState@*/
510  /*@modifies ts, *specFilePtr, *cookie, rpmGlobalMacroContext,
511  fileSystem, internalState @*/;
512 
521 int rpmInstall(rpmts ts, QVA_t ia, /*@null@*/ const char ** fileArgv)
522  /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext, h_errno,
523  fileSystem, internalState@*/
524  /*@modifies ts, ia, rpmcliPackagesTotal, rpmGlobalMacroContext,
525  fileSystem, internalState @*/;
526 
534 int rpmErase(rpmts ts, QVA_t ia, /*@null@*/ const char ** argv)
535  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
536  /*@modifies ts, ia, rpmGlobalMacroContext,
537  fileSystem, internalState @*/;
538 
542 /*@-fielduse@*/
543 typedef /*@abstract@*/ struct IDT_s * IDT;
544 #if !defined(SWIG)
545 struct IDT_s {
546  int done;
547  unsigned int instance;
548 /*@owned@*/ /*@null@*/
549  const char * key;
551  union {
553  } val;
554 };
555 #endif
556 /*@=fielduse@*/
557 
561 typedef /*@abstract@*/ struct IDTindex_s * IDTX;
562 #if !defined(SWIG)
563 struct IDTindex_s {
564  int delta;
565  int size;
566  int alloced;
567  int nidt;
568 /*@only@*/ /*@null@*/
569  IDT idt;
570 };
571 #endif
572 
578 /*@null@*/
579 IDTX IDTXfree(/*@only@*/ /*@null@*/ IDTX idtx)
580  /*@modifies idtx @*/;
581 
586 /*@only@*/
587 IDTX IDTXnew(void)
588  /*@*/;
589 
596 /*@only@*/ /*@null@*/
597 IDTX IDTXgrow(/*@only@*/ /*@null@*/ IDTX idtx, int need)
598  /*@modifies idtx @*/;
599 
605 /*@only@*/ /*@null@*/
606 IDTX IDTXsort(/*@only@*/ /*@null@*/ IDTX idtx)
607  /*@modifies idtx @*/;
608 
616 /*@only@*/ /*@null@*/
617 IDTX IDTXload(rpmts ts, rpmTag tag, uint_32 rbtid)
618  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
619  /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
620 
629 /*@only@*/ /*@null@*/
630 IDTX IDTXglob(rpmts ts, const char * globstr, rpmTag tag, uint_32 rbtid)
631  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
632  /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
633 
641 int rpmRollback(rpmts ts, QVA_t ia, /*@null@*/ const char ** argv)
642  /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext, h_errno,
643  fileSystem, internalState @*/
644  /*@modifies ts, ia, rpmcliPackagesTotal, rpmGlobalMacroContext,
645  fileSystem, internalState @*/;
646 
649 /*@unchecked@*/
650 extern struct poptOption rpmInstallPoptTable[];
651 
653 /* ==================================================================== */
656 
659 /*@unchecked@*/
660 extern struct poptOption rpmDatabasePoptTable[];
661 
663 /* ==================================================================== */
666 
676  const unsigned char * pkt, ssize_t pktlen)
677  /*@globals RPMVERSION, rpmGlobalMacroContext, h_errno,
678  fileSystem, internalState @*/
679  /*@modifies ts, rpmGlobalMacroContext,
680  fileSystem, internalState @*/;
681 
685 /*@-typeuse@*/
686 #if !defined(SWIG)
687 typedef enum rpmSignFlags_e {
694 } rpmSignFlags;
695 #endif
696 /*@=typeuse@*/
697 
700 /*@unchecked@*/
701 extern struct poptOption rpmSignPoptTable[];
702 
710 int rpmcliSign(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
711  /*@globals RPMVERSION, rpmGlobalMacroContext, h_errno,
712  fileSystem, internalState @*/
713  /*@modifies ts, qva, rpmGlobalMacroContext,
714  fileSystem, internalState @*/;
715 
721 #if !defined(SWIG)
727 /*@only@*/ /*@null@*/
729 /*@refccounted@*/ /*@relnull@*/
733 /*@null@*/
737 /*@null@*/
739 /*@unused@*/
741 /*@only@*/ /*@null@*/
742  const char * qva_queryFormat;
743  int sign;
744  int trust;
745 /*@observer@*/
746  const char * passPhrase;
747 /*@owned@*/ /*@null@*/
748  const char * qva_prefix;
749  char qva_mode;
759  char qva_char;
761  /* install/erase mode arguments */
771  int noDeps;
772  int incldocs;
774 /*@owned@*/ /*@null@*/
776 
777  /* database mode arguments */
778  int init;
779  int rebuild;
780  int verify;
782  /* rollback vectors */
783  int (*rbCheck) (rpmts ts);
784  int (*rbOrder) (rpmts ts);
785  int (*rbRun) (rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet);
786 };
787 #endif
788 
791 /*@unchecked@*/
792 extern struct rpmQVKArguments_s rpmQVKArgs;
793 
796 /*@unchecked@*/
797 extern struct rpmQVKArguments_s rpmIArgs;
798 
801 /*@unchecked@*/
802 extern struct rpmQVKArguments_s rpmDBArgs;
803 
804 /* ==================================================================== */
807 
814 /*@observer@*/
815  const char * passPhrase;
816 /*@only@*/ /*@null@*/
817  const char * cookie;
818  int force;
819  int noBuild;
820  int noDeps;
821  int noLang;
823  int sign;
825  char buildMode;
826  char buildChar;
827 /*@observer@*/ /*@null@*/
828  const char * rootdir;
829 };
830 
833 typedef struct rpmBuildArguments_s * BTA_t;
834 
837 /*@unchecked@*/
838 extern struct rpmBuildArguments_s rpmBTArgs;
839 
842 /*@unchecked@*/
843 extern struct poptOption rpmBuildPoptTable[];
844 
847 #ifdef __cplusplus
848 }
849 #endif
850 
851 #endif /* H_RPMCLI */