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

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, h_errno, stderr, 
00050                 fileSystem, internalState @*/
00051         /*@modifies rpmCLIMacroContext, rpmGlobalMacroContext, stderr, 
00052                 fileSystem, internalState @*/;
00053 
00058 /*@mayexit@*/
00059 void rpmcliConfigured(void)
00060         /*@globals rpmCLIMacroContext, rpmGlobalMacroContext, h_errno,
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 #define RPMCLI_POPT_NOCONTEXTS          -1032
00085 
00086 /* ==================================================================== */
00089 
00094 typedef enum rpmQVSources_e {
00095     RPMQV_PACKAGE = 0,  
00096     RPMQV_PATH,         
00097     RPMQV_ALL,          
00098     RPMQV_RPM,          
00099     RPMQV_GROUP,        
00100     RPMQV_WHATPROVIDES, 
00101     RPMQV_WHATREQUIRES, 
00102     RPMQV_TRIGGEREDBY,  
00103     RPMQV_DBOFFSET,     
00104     RPMQV_SPECFILE,     
00105     RPMQV_PKGID,        
00106     RPMQV_HDRID,        
00107     RPMQV_FILEID,       
00108     RPMQV_TID           
00109 } rpmQVSources;
00110 
00114 typedef enum rpmVerifyAttrs_e {
00115     RPMVERIFY_NONE      = 0,            
00116     RPMVERIFY_MD5       = (1 << 0),     
00117     RPMVERIFY_FILESIZE  = (1 << 1),     
00118     RPMVERIFY_LINKTO    = (1 << 2),     
00119     RPMVERIFY_USER      = (1 << 3),     
00120     RPMVERIFY_GROUP     = (1 << 4),     
00121     RPMVERIFY_MTIME     = (1 << 5),     
00122     RPMVERIFY_MODE      = (1 << 6),     
00123     RPMVERIFY_RDEV      = (1 << 7),     
00124         /* bits 8-14 unused, reserved for rpmVerifyAttrs */
00125     RPMVERIFY_CONTEXTS  = (1 << 15),    
00126         /* bits 16-22 used in rpmVerifyFlags */
00127         /* bits 23-27 used in rpmQueryFlags */
00128     RPMVERIFY_READLINKFAIL= (1 << 28),  
00129     RPMVERIFY_READFAIL  = (1 << 29),    
00130     RPMVERIFY_LSTATFAIL = (1 << 30),    
00131     RPMVERIFY_LGETFILECONFAIL   = (1 << 31)     
00132 } rpmVerifyAttrs;
00133 #define RPMVERIFY_ALL           ~(RPMVERIFY_NONE)
00134 #define RPMVERIFY_FAILURES      \
00135   (RPMVERIFY_LSTATFAIL|RPMVERIFY_READFAIL|RPMVERIFY_READLINKFAIL|RPMVERIFY_LGETFILECONFAIL)
00136 
00141 typedef enum rpmQueryFlags_e {
00142 /*@-enummemuse@*/
00143     QUERY_FOR_DEFAULT   = 0,            
00144     QUERY_MD5           = (1 << 0),     
00145     QUERY_SIZE          = (1 << 1),     
00146     QUERY_LINKTO        = (1 << 2),     
00147     QUERY_USER          = (1 << 3),     
00148     QUERY_GROUP         = (1 << 4),     
00149     QUERY_MTIME         = (1 << 5),     
00150     QUERY_MODE          = (1 << 6),     
00151     QUERY_RDEV          = (1 << 7),     
00152         /* bits 8-14 unused, reserved for rpmVerifyAttrs */
00153     QUERY_CONTEXTS      = (1 << 15),    
00154     QUERY_FILES         = (1 << 16),    
00155     QUERY_DEPS          = (1 << 17),    
00156     QUERY_SCRIPT        = (1 << 18),    
00157     QUERY_DIGEST        = (1 << 19),    
00158     QUERY_SIGNATURE     = (1 << 20),    
00159     QUERY_PATCHES       = (1 << 21),    
00160     QUERY_HDRCHK        = (1 << 22),    
00161 /*@=enummemuse@*/
00162     QUERY_FOR_LIST      = (1 << 23),    
00163     QUERY_FOR_STATE     = (1 << 24),    
00164     QUERY_FOR_DOCS      = (1 << 25),    
00165     QUERY_FOR_CONFIG    = (1 << 26),    
00166     QUERY_FOR_DUMPFILES = (1 << 27)     
00167 } rpmQueryFlags;
00168 
00169 #define _QUERY_FOR_BITS \
00170    (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
00171     QUERY_FOR_DUMPFILES)
00172 
00176 /*@unchecked@*/
00177 extern rpmQueryFlags rpmcliQueryFlags;
00178 
00183 typedef enum rpmVerifyFlags_e {
00184 /*@-enummemuse@*/
00185     VERIFY_DEFAULT      = 0,            
00186 /*@=enummemuse@*/
00187     VERIFY_MD5          = (1 << 0),     
00188     VERIFY_SIZE         = (1 << 1),     
00189     VERIFY_LINKTO       = (1 << 2),     
00190     VERIFY_USER         = (1 << 3),     
00191     VERIFY_GROUP        = (1 << 4),     
00192     VERIFY_MTIME        = (1 << 5),     
00193     VERIFY_MODE         = (1 << 6),     
00194     VERIFY_RDEV         = (1 << 7),     
00195         /* bits 8-14 unused, reserved for rpmVerifyAttrs */
00196     VERIFY_CONTEXTS     = (1 << 15),    
00197     VERIFY_FILES        = (1 << 16),    
00198     VERIFY_DEPS         = (1 << 17),    
00199     VERIFY_SCRIPT       = (1 << 18),    
00200     VERIFY_DIGEST       = (1 << 19),    
00201     VERIFY_SIGNATURE    = (1 << 20),    
00202     VERIFY_PATCHES      = (1 << 21),    
00203     VERIFY_HDRCHK       = (1 << 22),    
00204 /*@-enummemuse@*/
00205     VERIFY_FOR_LIST     = (1 << 23),    
00206     VERIFY_FOR_STATE    = (1 << 24),    
00207     VERIFY_FOR_DOCS     = (1 << 25),    
00208     VERIFY_FOR_CONFIG   = (1 << 26),    
00209     VERIFY_FOR_DUMPFILES= (1 << 27)     
00210 /*@=enummemuse@*/
00211         /* bits 28-31 used in rpmVerifyAttrs */
00212 } rpmVerifyFlags;
00213 
00214 #define VERIFY_ATTRS    \
00215   ( VERIFY_MD5 | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \
00216     VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV | VERIFY_CONTEXTS )
00217 #define VERIFY_ALL      \
00218   ( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST |\
00219     VERIFY_SIGNATURE | VERIFY_HDRCHK )
00220 
00223 typedef struct rpmQVKArguments_s * QVA_t;
00224 
00233 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h)
00234         /*@globals fileSystem @*/
00235         /*@modifies qva, ts, fileSystem @*/;
00236 
00245 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg)
00246         /*@globals rpmGlobalMacroContext, h_errno,
00247                 fileSystem, internalState @*/
00248         /*@modifies ts, qva, rpmGlobalMacroContext,
00249                 fileSystem, internalState @*/;
00250 
00254 struct rpmQVKArguments_s {
00255     rpmQVSources qva_source;    
00256     int         qva_sourceCount;
00257     rpmQueryFlags qva_flags;    
00258     rpmfileAttrs qva_fflags;    
00259 /*@only@*/ /*@null@*/
00260     rpmdbMatchIterator qva_mi;  
00261 /*@null@*/
00262     QVF_t qva_showPackage;      
00263 /*@null@*/
00264     QSpecF_t qva_specQuery;     
00265 /*@unused@*/
00266     int qva_verbose;            
00267 /*@only@*/ /*@null@*/
00268     const char * qva_queryFormat;
00269     int sign;                   
00270 /*@observer@*/
00271     const char * passPhrase;    
00272 /*@observer@*/ /*@null@*/
00273     const char * qva_prefix;    
00274     char        qva_mode;
00284     char        qva_char;       
00285 };
00286 
00289 /*@unchecked@*/
00290 extern struct rpmQVKArguments_s rpmQVKArgs;
00291 
00294 /*@unchecked@*/
00295 extern struct poptOption rpmQVSourcePoptTable[];
00296 
00299 /*@unchecked@*/
00300 extern int specedit;
00301 
00304 /*@unchecked@*/
00305 extern struct poptOption rpmQueryPoptTable[];
00306 
00309 /*@unchecked@*/
00310 extern struct poptOption rpmVerifyPoptTable[];
00311 
00323 int rpmcliShowMatches(QVA_t qva, rpmts ts)
00324         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00325         /*@modifies qva, rpmGlobalMacroContext, fileSystem, internalState @*/;
00326 
00331 void rpmDisplayQueryTags(FILE * fp)
00332         /*@globals fileSystem @*/
00333         /*@modifies *fp, fileSystem @*/;
00334 
00347 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg)
00348         /*@globals rpmGlobalMacroContext, h_errno,
00349                 fileSystem, internalState @*/
00350         /*@modifies qva, ts, rpmGlobalMacroContext,
00351                 fileSystem, internalState @*/;
00352 
00361 int showQueryPackage(QVA_t qva, rpmts ts, Header h)
00362         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00363         /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/;
00364 
00373 int rpmcliQuery(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
00374         /*@globals rpmGlobalMacroContext, h_errno,
00375                 fileSystem, internalState @*/
00376         /*@modifies ts, qva, rpmGlobalMacroContext,
00377                 fileSystem, internalState @*/;
00378 
00388 /*@-incondefs@*/
00389 int rpmVerifyFile(const rpmts ts, rpmfi fi,
00390                 /*@out@*/ rpmVerifyAttrs * res, rpmVerifyAttrs omitMask)
00391         /*@globals h_errno, fileSystem, internalState @*/
00392         /*@modifies ts, fi, *res, fileSystem, internalState @*/
00393         /*@requires maxSet(res) >= 0 @*/;
00394 /*@=incondefs@*/
00395 
00403 int showVerifyPackage(QVA_t qva, rpmts ts, Header h)
00404         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00405         /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/;
00406 
00415 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn)
00416         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00417         /*@modifies qva, ts, fd, rpmGlobalMacroContext, h_errno,
00418                 fileSystem, internalState @*/;
00419 
00428 int rpmcliVerify(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
00429         /*@globals rpmGlobalMacroContext, h_errno,
00430                 fileSystem, internalState @*/
00431         /*@modifies ts, qva, rpmGlobalMacroContext,
00432                 fileSystem, internalState @*/;
00433 
00435 /* ==================================================================== */
00438 
00442 struct rpmBuildArguments_s {
00443     rpmQueryFlags qva_flags;    
00444     int buildAmount;            
00445 /*@null@*/
00446     const char * buildRootOverride; 
00447 /*@null@*/
00448     char * targets;             
00449 /*@observer@*/
00450     const char * passPhrase;    
00451 /*@only@*/ /*@null@*/
00452     const char * cookie;        
00453     int force;                  
00454     int noBuild;                
00455     int noDeps;                 
00456     int noLang;                 
00457     int shortCircuit;           
00458     int sign;                   
00459     int useCatalog;             
00460     char buildMode;             
00461     char buildChar;             
00462 /*@observer@*/ /*@null@*/
00463     const char * rootdir;
00464 };
00465 
00468 typedef struct rpmBuildArguments_s *    BTA_t;
00469 
00472 /*@unchecked@*/
00473 extern struct rpmBuildArguments_s       rpmBTArgs;
00474 
00477 /*@unchecked@*/
00478 extern struct poptOption                rpmBuildPoptTable[];
00479 
00481 /* ==================================================================== */
00484 /* --- install/upgrade/erase modes */
00485 
00486 /*@unchecked@*/
00487 extern int rpmcliPackagesTotal;
00488 /*@unchecked@*/
00489 extern int rpmcliHashesCurrent;
00490 /*@unchecked@*/
00491 extern int rpmcliHashesTotal;
00492 /*@unchecked@*/
00493 extern int rpmcliProgressCurrent;
00494 /*@unchecked@*/
00495 extern int rpmcliProgressTotal;
00496 
00511 /*@null@*/
00512 void * rpmShowProgress(/*@null@*/ const void * arg,
00513                 const rpmCallbackType what,
00514                 const unsigned long amount,
00515                 const unsigned long total,
00516                 /*@null@*/ fnpyKey key,
00517                 /*@null@*/ void * data)
00518         /*@globals rpmcliHashesCurrent,
00519                 rpmcliProgressCurrent, rpmcliProgressTotal,
00520                 h_errno, fileSystem, internalState @*/
00521         /*@modifies rpmcliHashesCurrent,
00522                 rpmcliProgressCurrent, rpmcliProgressTotal,
00523                 fileSystem, internalState @*/;
00524 
00533 int rpmInstallSource(rpmts ts, const char * arg,
00534                 /*@null@*/ /*@out@*/ const char ** specFilePtr,
00535                 /*@null@*/ /*@out@*/ const char ** cookie)
00536         /*@globals rpmGlobalMacroContext, h_errno,
00537                 fileSystem, internalState@*/
00538         /*@modifies ts, *specFilePtr, *cookie, rpmGlobalMacroContext,
00539                 fileSystem, internalState @*/;
00540 
00544 struct rpmInstallArguments_s {
00545     rpmtransFlags transFlags;
00546     rpmprobFilterFlags probFilter;
00547     rpmInstallInterfaceFlags installInterfaceFlags;
00548     rpmEraseInterfaceFlags eraseInterfaceFlags;
00549     rpmQueryFlags qva_flags;    
00550     uint_32 rbtid;              
00551     int numRelocations;
00552     int noDeps;
00553     int incldocs;
00554 /*@owned@*/ /*@null@*/
00555     rpmRelocation * relocations;
00556 /*@null@*/
00557     const char * prefix;
00558 /*@observer@*/ /*@null@*/
00559     const char * rootdir;
00560 };
00561 
00569 int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia,
00570                 /*@null@*/ const char ** fileArgv)
00571         /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext, h_errno,
00572                 fileSystem, internalState@*/
00573         /*@modifies ts, ia, rpmcliPackagesTotal, rpmGlobalMacroContext,
00574                 fileSystem, internalState @*/;
00575 
00583 int rpmErase(rpmts ts, struct rpmInstallArguments_s * ia,
00584                 /*@null@*/ const char ** argv)
00585         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00586         /*@modifies ts, ia, rpmGlobalMacroContext,
00587                 fileSystem, internalState @*/;
00588 
00592 /*@-fielduse@*/
00593 typedef /*@abstract@*/ struct IDT_s {
00594     unsigned int instance;      
00595 /*@owned@*/ /*@null@*/
00596     const char * key;           
00597     Header h;                   
00598     union {
00599         uint_32 u32;            
00600     } val;
00601 } * IDT;
00602 /*@=fielduse@*/
00603 
00607 typedef /*@abstract@*/ struct IDTindex_s {
00608     int delta;                  
00609     int size;                   
00610     int alloced;                
00611     int nidt;                   
00612 /*@only@*/ /*@null@*/
00613     IDT idt;                    
00614 } * IDTX;
00615 
00621 /*@null@*/
00622 IDTX IDTXfree(/*@only@*/ /*@null@*/ IDTX idtx)
00623         /*@modifies idtx @*/;
00624 
00629 /*@only@*/
00630 IDTX IDTXnew(void)
00631         /*@*/;
00632 
00639 /*@only@*/ /*@null@*/
00640 IDTX IDTXgrow(/*@only@*/ /*@null@*/ IDTX idtx, int need)
00641         /*@modifies idtx @*/;
00642 
00648 /*@only@*/ /*@null@*/
00649 IDTX IDTXsort(/*@only@*/ /*@null@*/ IDTX idtx)
00650         /*@modifies idtx @*/;
00651 
00658 /*@only@*/ /*@null@*/
00659 IDTX IDTXload(rpmts ts, rpmTag tag)
00660         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00661         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState  @*/;
00662 
00670 /*@only@*/ /*@null@*/
00671 IDTX IDTXglob(rpmts ts, const char * globstr, rpmTag tag)
00672         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00673         /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
00674 
00682 int rpmRollback(rpmts ts, struct rpmInstallArguments_s * ia,
00683                 /*@null@*/ const char ** argv)
00684         /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext, h_errno,
00685                 fileSystem, internalState @*/
00686         /*@modifies ts, ia, rpmcliPackagesTotal, rpmGlobalMacroContext,
00687                 fileSystem, internalState @*/;
00688 
00691 /*@unchecked@*/
00692 extern struct rpmInstallArguments_s rpmIArgs;
00693 
00696 /*@unchecked@*/
00697 extern struct poptOption rpmInstallPoptTable[];
00698 
00700 /* ==================================================================== */
00703 /* --- database modes */
00704 
00708 struct rpmDatabaseArguments_s {
00709     int init;                   
00710     int rebuild;                
00711     int verify;                 
00712 };
00713 
00716 /*@unchecked@*/
00717 extern struct rpmDatabaseArguments_s rpmDBArgs;
00718 
00721 /*@unchecked@*/
00722 extern struct poptOption rpmDatabasePoptTable[];
00723 
00725 /* ==================================================================== */
00728 
00737 rpmRC rpmcliImportPubkey(const rpmts ts,
00738                 const unsigned char * pkt, ssize_t pktlen)
00739         /*@globals RPMVERSION, rpmGlobalMacroContext, h_errno,
00740                 fileSystem, internalState @*/
00741         /*@modifies ts, rpmGlobalMacroContext,
00742                 fileSystem, internalState @*/;
00743 
00747 /*@-typeuse@*/
00748 typedef enum rpmSignFlags_e {
00749     RPMSIGN_NONE                = 0,
00750     RPMSIGN_CHK_SIGNATURE       = 'K',  
00751     RPMSIGN_NEW_SIGNATURE       = 'R',  
00752     RPMSIGN_ADD_SIGNATURE       = 'A',  
00753     RPMSIGN_IMPORT_PUBKEY       = 'I',  
00754 } rpmSignFlags;
00755 /*@=typeuse@*/
00756 
00759 /*@unchecked@*/
00760 extern struct poptOption rpmSignPoptTable[];
00761 
00769 int rpmcliSign(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv)
00770         /*@globals RPMVERSION, rpmGlobalMacroContext, h_errno,
00771                 fileSystem, internalState @*/
00772         /*@modifies ts, qva, rpmGlobalMacroContext,
00773                 fileSystem, internalState @*/;
00774 
00777 #ifdef __cplusplus
00778 }
00779 #endif
00780 
00781 #endif  /* H_RPMCLI */

Generated on Wed Nov 29 14:24:48 2006 for rpm by  doxygen 1.3.9.1