Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

lib/rpmcli.h

Go to the documentation of this file.
00001 #ifndef H_RPMCLI
00002 #define H_RPMCLI
00003 
00008 #include "rpmlib.h"
00009 #include "rpmurl.h"
00010 #include "rpmmacro.h"
00011 
00015 /*@-redecl@*/
00016 /*@unchecked@*/
00017 extern int _noDirTokens;
00018 /*@=redecl@*/
00019 
00020 #ifdef __cplusplus
00021 extern "C" {
00022 #endif
00023 
00027 /*@unchecked@*/
00028 extern struct poptOption                rpmcliAllPoptTable[];
00029 
00030 /*@unchecked@*/ /*@observer@*/ /*@null@*/
00031 extern const char * rpmcliPipeOutput;
00032 
00033 /*@unchecked@*/ /*@observer@*/ /*@null@*/
00034 extern const char * rpmcliRcfile;
00035 
00036 /*@unchecked@*/ /*@observer@*/ /*@null@*/
00037 extern const char * rpmcliRootDir;
00038 
00046 /*@null@*/
00047 poptContext
00048 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable)
00049         /*@globals rpmCLIMacroContext, rpmGlobalMacroContext, stderr, 
00050                 fileSystem, internalState @*/
00051         /*@modifies rpmCLIMacroContext, rpmGlobalMacroContext, stderr, 
00052                 fileSystem, internalState @*/;
00053 
00058 /*@mayexit@*/
00059 void rpmcliConfigured(void)
00060         /*@globals rpmCLIMacroContext, rpmGlobalMacroContext,
00061                 fileSystem, internalState @*/
00062         /*@modifies rpmCLIMacroContext, rpmGlobalMacroContext,
00063                 fileSystem, internalState @*/;
00064 
00070 poptContext
00071 rpmcliFini(/*@only@*/ /*@null@*/ poptContext optCon)
00072         /*@modifies optCon @*/;
00073 
00077 #define RPMCLI_POPT_NODEPS              -1025
00078 #define RPMCLI_POPT_FORCE               -1026
00079 #define RPMCLI_POPT_NOMD5               -1027
00080 #define RPMCLI_POPT_NOSCRIPTS           -1028
00081 #define RPMCLI_POPT_NOSIGNATURE         -1029
00082 #define RPMCLI_POPT_NODIGEST            -1030
00083 #define RPMCLI_POPT_NOHDRCHK            -1031
00084 
00085 /* ==================================================================== */
00088 
00093 typedef enum rpmQVSources_e {
00094     RPMQV_PACKAGE = 0,  
00095     RPMQV_PATH,         
00096     RPMQV_ALL,          
00097     RPMQV_RPM,          
00098     RPMQV_GROUP,        
00099     RPMQV_WHATPROVIDES, 
00100     RPMQV_WHATREQUIRES, 
00101     RPMQV_TRIGGEREDBY,  
00102     RPMQV_DBOFFSET,     
00103     RPMQV_SPECFILE,     
00104     RPMQV_PKGID,        
00105     RPMQV_HDRID,        
00106     RPMQV_FILEID,       
00107     RPMQV_TID           
00108 } rpmQVSources;
00109 
00113 typedef enum rpmVerifyAttrs_e {
00114     RPMVERIFY_NONE      = 0,            
00115     RPMVERIFY_MD5       = (1 << 0),     
00116     RPMVERIFY_FILESIZE  = (1 << 1),     
00117     RPMVERIFY_LINKTO    = (1 << 2),     
00118     RPMVERIFY_USER      = (1 << 3),     
00119     RPMVERIFY_GROUP     = (1 << 4),     
00120     RPMVERIFY_MTIME     = (1 << 5),     
00121     RPMVERIFY_MODE      = (1 << 6),     
00122     RPMVERIFY_RDEV      = (1 << 7),     
00123         /* bits 8-15 unused, reserved for rpmVerifyAttrs */
00124         /* bits 16-20 used in rpmVerifyFlags */
00125         /* bits 21-22 unused */
00126         /* bits 23-27 used in rpmQueryFlags */
00127     RPMVERIFY_READLINKFAIL= (1 << 28),  
00128     RPMVERIFY_READFAIL  = (1 << 29),    
00129     RPMVERIFY_LSTATFAIL = (1 << 30)     
00130         /* bit 31 unused */
00131 } rpmVerifyAttrs;
00132 #define RPMVERIFY_ALL           ~(RPMVERIFY_NONE)
00133 
00138 typedef enum rpmQueryFlags_e {
00139 /*@-enummemuse@*/
00140     QUERY_FOR_DEFAULT   = 0,            
00141     QUERY_MD5           = (1 << 0),     
00142     QUERY_SIZE          = (1 << 1),     
00143     QUERY_LINKTO        = (1 << 2),     
00144     QUERY_USER          = (1 << 3),     
00145     QUERY_GROUP         = (1 << 4),     
00146     QUERY_MTIME         = (1 << 5),     
00147     QUERY_MODE          = (1 << 6),     
00148     QUERY_RDEV          = (1 << 7),     
00149         /* bits 8-15 unused, reserved for rpmVerifyAttrs */
00150     QUERY_FILES         = (1 << 16),    
00151     QUERY_DEPS          = (1 << 17),    
00152     QUERY_SCRIPT        = (1 << 18),    
00153     QUERY_DIGEST        = (1 << 19),    
00154     QUERY_SIGNATURE     = (1 << 20),    
00155     QUERY_PATCHES       = (1 << 21),    
00156     QUERY_HDRCHK        = (1 << 22),    
00157 /*@=enummemuse@*/
00158     QUERY_FOR_LIST      = (1 << 23),    
00159     QUERY_FOR_STATE     = (1 << 24),    
00160     QUERY_FOR_DOCS      = (1 << 25),    
00161     QUERY_FOR_CONFIG    = (1 << 26),    
00162     QUERY_FOR_DUMPFILES = (1 << 27)     
00163 } rpmQueryFlags;
00164 
00165 #define _QUERY_FOR_BITS \
00166    (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
00167     QUERY_FOR_DUMPFILES)
00168 
00172 /*@unchecked@*/
00173 extern rpmQueryFlags rpmcliQueryFlags;
00174 
00179 typedef enum rpmVerifyFlags_e {
00180 /*@-enummemuse@*/
00181     VERIFY_DEFAULT      = 0,            
00182 /*@=enummemuse@*/
00183     VERIFY_MD5          = (1 << 0),     
00184     VERIFY_SIZE         = (1 << 1),     
00185     VERIFY_LINKTO       = (1 << 2),     
00186     VERIFY_USER         = (1 << 3),     
00187     VERIFY_GROUP        = (1 << 4),     
00188     VERIFY_MTIME        = (1 << 5),     
00189     VERIFY_MODE         = (1 << 6),     
00190     VERIFY_RDEV         = (1 << 7),     
00191         /* bits 8-15 unused, reserved for rpmVerifyAttrs */
00192     VERIFY_FILES        = (1 << 16),    
00193     VERIFY_DEPS         = (1 << 17),    
00194     VERIFY_SCRIPT       = (1 << 18),    
00195     VERIFY_DIGEST       = (1 << 19),    
00196     VERIFY_SIGNATURE    = (1 << 20),    
00197     VERIFY_PATCHES      = (1 << 21),    
00198     VERIFY_HDRCHK       = (1 << 22),    
00199 /*@-enummemuse@*/
00200     VERIFY_FOR_LIST     = (1 << 23),    
00201     VERIFY_FOR_STATE    = (1 << 24),    
00202     VERIFY_FOR_DOCS     = (1 << 25),    
00203     VERIFY_FOR_CONFIG   = (1 << 26),    
00204     VERIFY_FOR_DUMPFILES= (1 << 27)     
00205 /*@=enummemuse@*/
00206         /* bits 28-30 used in rpmVerifyAttrs */
00207 } rpmVerifyFlags;
00208 
00209 #define VERIFY_ATTRS    \
00210   ( VERIFY_MD5 | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \
00211     VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV )
00212 #define VERIFY_ALL      \
00213   ( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST |\
00214     VERIFY_SIGNATURE | VERIFY_HDRCHK )
00215 
00218 typedef struct rpmQVKArguments_s * QVA_t;
00219 
00228 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h)
00229         /*@globals fileSystem@*/
00230         /*@modifies qva, ts, fileSystem @*/;
00231 
00240 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg)
00241         /*@globals rpmGlobalMacroContext,
00242                 fileSystem, internalState @*/
00243         /*@modifies ts, qva, rpmGlobalMacroContext,
00244                 fileSystem, internalState @*/;
00245 
00249 struct rpmQVKArguments_s {
00250     rpmQVSources qva_source;    
00251     int         qva_sourceCount;
00252     rpmQueryFlags qva_flags;    
00253     rpmfileAttrs qva_fflags;    
00254 /*@only@*/ /*@null@*/
00255     rpmdbMatchIterator qva_mi;  
00256 /*@null@*/
00257     QVF_t qva_showPackage;      
00258 /*@null@*/
00259     QSpecF_t qva_specQuery;     
00260 /*@unused@*/
00261     int qva_verbose;            
00262 /*@only@*/ /*@null@*/
00263     const char * qva_queryFormat;
00264     int sign;                   
00265 /*@observer@*/
00266     const char * passPhrase;    
00267 /*@observer@*/ /*@null@*/
00268     const char * qva_prefix;    
00269     char        qva_mode;
00279     char        qva_char;       
00280 };
00281 
00284 /*@unchecked@*/
00285 extern struct rpmQVKArguments_s rpmQVKArgs;
00286 
00289 /*@unchecked@*/
00290 extern struct poptOption rpmQVSourcePoptTable[];
00291 
00294 /*@unchecked@*/
00295 extern int specedit;
00296 
00299 /*@unchecked@*/
00300 extern struct poptOption rpmQueryPoptTable[];
00301 
00304 /*@unchecked@*/
00305 extern struct poptOption rpmVerifyPoptTable[];
00306 
00318 int rpmcliShowMatches(QVA_t qva, rpmts ts)
00319         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00320         /*@modifies qva, rpmGlobalMacroContext, fileSystem, internalState @*/;
00321 
00326 void rpmDisplayQueryTags(FILE * fp)
00327         /*@globals fileSystem@*/
00328         /*@modifies *fp, fileSystem @*/;
00329 
00342 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg)
00343         /*@globals rpmGlobalMacroContext,
00344                 fileSystem, internalState @*/
00345         /*@modifies qva, ts, rpmGlobalMacroContext,
00346                 fileSystem, internalState @*/;
00347 
00356 int showQueryPackage(QVA_t qva, rpmts ts, Header h)
00357         /*@globals fileSystem, internalState @*/
00358         /*@modifies ts, h, fileSystem, internalState @*/;
00359 
00368 int rpmcliQuery(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
00369         /*@globals rpmGlobalMacroContext,
00370                 fileSystem, internalState @*/
00371         /*@modifies ts, qva, rpmGlobalMacroContext,
00372                 fileSystem, internalState @*/;
00373 
00383 /*@-incondefs@*/
00384 int rpmVerifyFile(const rpmts ts, rpmfi fi,
00385                 /*@out@*/ rpmVerifyAttrs * res, rpmVerifyAttrs omitMask)
00386         /*@globals fileSystem, internalState @*/
00387         /*@modifies fi, *res, fileSystem, internalState @*/
00388         /*@requires maxSet(res) >= 0 @*/;
00389 /*@=incondefs@*/
00390 
00398 int showVerifyPackage(QVA_t qva, rpmts ts, Header h)
00399         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00400         /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/;
00401 
00410 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn)
00411         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00412         /*@modifies qva, ts, fd, rpmGlobalMacroContext,
00413                 fileSystem, internalState @*/;
00414 
00423 int rpmcliVerify(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
00424         /*@globals rpmGlobalMacroContext,
00425                 fileSystem, internalState @*/
00426         /*@modifies ts, qva, rpmGlobalMacroContext,
00427                 fileSystem, internalState @*/;
00428 
00430 /* ==================================================================== */
00433 
00437 struct rpmBuildArguments_s {
00438     rpmQueryFlags qva_flags;    
00439     int buildAmount;            
00440 /*@null@*/
00441     const char * buildRootOverride; 
00442 /*@null@*/
00443     char * targets;             
00444 /*@observer@*/
00445     const char * passPhrase;    
00446 /*@only@*/ /*@null@*/
00447     const char * cookie;        
00448     int force;                  
00449     int noBuild;                
00450     int noDeps;                 
00451     int noLang;                 
00452     int shortCircuit;           
00453     int sign;                   
00454     int useCatalog;             
00455     char buildMode;             
00456     char buildChar;             
00457 /*@observer@*/ /*@null@*/
00458     const char * rootdir;
00459 };
00460 
00463 typedef struct rpmBuildArguments_s *    BTA_t;
00464 
00467 /*@unchecked@*/
00468 extern struct rpmBuildArguments_s       rpmBTArgs;
00469 
00472 /*@unchecked@*/
00473 extern struct poptOption                rpmBuildPoptTable[];
00474 
00476 /* ==================================================================== */
00479 /* --- install/upgrade/erase modes */
00480 
00481 /*@unchecked@*/
00482 extern int rpmcliPackagesTotal;
00483 /*@unchecked@*/
00484 extern int rpmcliHashesCurrent;
00485 /*@unchecked@*/
00486 extern int rpmcliHashesTotal;
00487 /*@unchecked@*/
00488 extern int rpmcliProgressCurrent;
00489 /*@unchecked@*/
00490 extern int rpmcliProgressTotal;
00491 
00506 /*@null@*/
00507 void * rpmShowProgress(/*@null@*/ const void * arg,
00508                 const rpmCallbackType what,
00509                 const unsigned long amount,
00510                 const unsigned long total,
00511                 /*@null@*/ fnpyKey key,
00512                 /*@null@*/ void * data)
00513         /*@globals rpmcliHashesCurrent,
00514                 rpmcliProgressCurrent, rpmcliProgressTotal,
00515                 fileSystem, internalState @*/
00516         /*@modifies rpmcliHashesCurrent,
00517                 rpmcliProgressCurrent, rpmcliProgressTotal,
00518                 fileSystem, internalState @*/;
00519 
00528 int rpmInstallSource(rpmts ts, const char * arg,
00529                 /*@null@*/ /*@out@*/ const char ** specFilePtr,
00530                 /*@null@*/ /*@out@*/ const char ** cookie)
00531         /*@globals rpmGlobalMacroContext,
00532                 fileSystem, internalState@*/
00533         /*@modifies ts, *specFilePtr, *cookie, rpmGlobalMacroContext,
00534                 fileSystem, internalState @*/;
00535 
00539 struct rpmInstallArguments_s {
00540     rpmtransFlags transFlags;
00541     rpmprobFilterFlags probFilter;
00542     rpmInstallInterfaceFlags installInterfaceFlags;
00543     rpmEraseInterfaceFlags eraseInterfaceFlags;
00544     rpmQueryFlags qva_flags;    
00545     uint_32 rbtid;              
00546     int numRelocations;
00547     int noDeps;
00548     int incldocs;
00549 /*@owned@*/ /*@null@*/
00550     rpmRelocation * relocations;
00551 /*@null@*/
00552     const char * prefix;
00553 /*@observer@*/ /*@null@*/
00554     const char * rootdir;
00555 };
00556 
00564 int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia,
00565                 /*@null@*/ const char ** fileArgv)
00566         /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext,
00567                 fileSystem, internalState@*/
00568         /*@modifies ts, ia, rpmcliPackagesTotal, rpmGlobalMacroContext,
00569                 fileSystem, internalState @*/;
00570 
00578 int rpmErase(rpmts ts, struct rpmInstallArguments_s * ia,
00579                 /*@null@*/ const char ** argv)
00580         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00581         /*@modifies ts, ia, rpmGlobalMacroContext,
00582                 fileSystem, internalState @*/;
00583 
00587 /*@-fielduse@*/
00588 typedef /*@abstract@*/ struct IDT_s {
00589     unsigned int instance;      
00590 /*@owned@*/ /*@null@*/
00591     const char * key;           
00592     Header h;                   
00593     union {
00594         uint_32 u32;            
00595     } val;
00596 } * IDT;
00597 /*@=fielduse@*/
00598 
00602 typedef /*@abstract@*/ struct IDTindex_s {
00603     int delta;                  
00604     int size;                   
00605     int alloced;                
00606     int nidt;                   
00607 /*@only@*/ /*@null@*/
00608     IDT idt;                    
00609 } * IDTX;
00610 
00616 /*@null@*/
00617 IDTX IDTXfree(/*@only@*/ /*@null@*/ IDTX idtx)
00618         /*@modifies idtx @*/;
00619 
00624 /*@only@*/
00625 IDTX IDTXnew(void)
00626         /*@*/;
00627 
00634 /*@only@*/ /*@null@*/
00635 IDTX IDTXgrow(/*@only@*/ /*@null@*/ IDTX idtx, int need)
00636         /*@modifies idtx @*/;
00637 
00643 /*@only@*/ /*@null@*/
00644 IDTX IDTXsort(/*@only@*/ /*@null@*/ IDTX idtx)
00645         /*@modifies idtx @*/;
00646 
00653 /*@only@*/ /*@null@*/
00654 IDTX IDTXload(rpmts ts, rpmTag tag)
00655         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00656         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState  @*/;
00657 
00665 /*@only@*/ /*@null@*/
00666 IDTX IDTXglob(rpmts ts, const char * globstr, rpmTag tag)
00667         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00668         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00669 
00677 int rpmRollback(rpmts ts, struct rpmInstallArguments_s * ia,
00678                 /*@null@*/ const char ** argv)
00679         /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext,
00680                 fileSystem, internalState @*/
00681         /*@modifies ts, ia, rpmcliPackagesTotal, rpmGlobalMacroContext,
00682                 fileSystem, internalState @*/;
00683 
00686 /*@unchecked@*/
00687 extern struct rpmInstallArguments_s rpmIArgs;
00688 
00691 /*@unchecked@*/
00692 extern struct poptOption rpmInstallPoptTable[];
00693 
00695 /* ==================================================================== */
00698 /* --- database modes */
00699 
00703 struct rpmDatabaseArguments_s {
00704     int init;                   
00705     int rebuild;                
00706     int verify;                 
00707 };
00708 
00711 /*@unchecked@*/
00712 extern struct rpmDatabaseArguments_s rpmDBArgs;
00713 
00716 /*@unchecked@*/
00717 extern struct poptOption rpmDatabasePoptTable[];
00718 
00720 /* ==================================================================== */
00723 
00732 int rpmcliImportPubkey(const rpmts ts,
00733                 const unsigned char * pkt, ssize_t pktlen)
00734         /*@globals RPMVERSION, rpmGlobalMacroContext,
00735                 fileSystem, internalState @*/
00736         /*@modifies ts, rpmGlobalMacroContext,
00737                 fileSystem, internalState @*/;
00738 
00742 /*@-typeuse@*/
00743 typedef enum rpmSignFlags_e {
00744     RPMSIGN_NONE                = 0,
00745     RPMSIGN_CHK_SIGNATURE       = 'K',  
00746     RPMSIGN_NEW_SIGNATURE       = 'R',  
00747     RPMSIGN_ADD_SIGNATURE       = 'A',  
00748     RPMSIGN_IMPORT_PUBKEY       = 'I',  
00749 } rpmSignFlags;
00750 /*@=typeuse@*/
00751 
00754 /*@unchecked@*/
00755 extern struct poptOption rpmSignPoptTable[];
00756 
00764 int rpmcliSign(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
00765         /*@globals RPMVERSION, rpmGlobalMacroContext,
00766                 fileSystem, internalState @*/
00767         /*@modifies ts, qva, rpmGlobalMacroContext,
00768                 fileSystem, internalState @*/;
00769 
00772 #ifdef __cplusplus
00773 }
00774 #endif
00775 
00776 #endif  /* H_RPMCLI */

Generated on Sun Oct 26 13:02:00 2003 for rpm by doxygen1.2.18