rpm  4.8.1
rpmcli.h
Go to the documentation of this file.
00001 #ifndef H_RPMCLI
00002 #define H_RPMCLI
00003 
00008 #include <popt.h>
00009 
00010 #include <rpm/rpmlib.h>
00011 #include <rpm/rpmurl.h>
00012 #include <rpm/rpmmacro.h>
00013 #include <rpm/rpmcallback.h>
00014 #include <rpm/rpmts.h>
00015 #include <rpm/rpmfi.h>
00016 #include <rpm/rpmvf.h>
00017 #include <rpm/argv.h>
00018 
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif
00022 
00026 extern int _noDirTokens;
00027 
00031 extern struct poptOption                rpmcliAllPoptTable[];
00032 
00033 extern int ftsOpts;
00034 
00035 extern struct poptOption                rpmcliFtsPoptTable[];
00036 
00037 extern const char * rpmcliPipeOutput;
00038 
00039 extern const char * rpmcliRcfile;
00040 
00041 extern const char * rpmcliRootDir;
00042 
00050 poptContext
00051 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable);
00052 
00057 void rpmcliConfigured(void);
00058 
00064 poptContext
00065 rpmcliFini(poptContext optCon);
00066 
00070 #define RPMCLI_POPT_NODEPS              -1025
00071 #define RPMCLI_POPT_FORCE               -1026
00072 #define RPMCLI_POPT_NOMD5               -1027
00073 #define RPMCLI_POPT_NOFILEDIGEST        -1027   /* same as obsolete RPMCLI_POPT_NOMD5 */
00074 #define RPMCLI_POPT_NOSCRIPTS           -1028
00075 #define RPMCLI_POPT_NOSIGNATURE         -1029
00076 #define RPMCLI_POPT_NODIGEST            -1030
00077 #define RPMCLI_POPT_NOHDRCHK            -1031
00078 #define RPMCLI_POPT_NOCONTEXTS          -1032
00079 
00080 /* ==================================================================== */
00087 typedef enum rpmQVSources_e {
00088     RPMQV_PACKAGE = 0,  
00089     RPMQV_PATH,         
00090     RPMQV_ALL,          
00091     RPMQV_RPM,          
00092     RPMQV_GROUP,        
00093     RPMQV_WHATPROVIDES, 
00094     RPMQV_WHATREQUIRES, 
00095     RPMQV_TRIGGEREDBY,  
00096     RPMQV_DBOFFSET,     
00097     RPMQV_SPECFILE,     
00098     RPMQV_PKGID,        
00099     RPMQV_HDRID,        
00100     RPMQV_FILEID,       
00101     RPMQV_TID,          
00102     RPMQV_HDLIST,       
00103     RPMQV_FTSWALK       
00104 } rpmQVSources;
00105 
00110 typedef enum rpmQueryFlags_e {
00111     QUERY_FOR_DEFAULT   = 0,            
00112     QUERY_MD5           = (1 << 0),     
00113     QUERY_FILEDIGEST    = (1 << 0),     
00114     QUERY_SIZE          = (1 << 1),     
00115     QUERY_LINKTO        = (1 << 2),     
00116     QUERY_USER          = (1 << 3),     
00117     QUERY_GROUP         = (1 << 4),     
00118     QUERY_MTIME         = (1 << 5),     
00119     QUERY_MODE          = (1 << 6),     
00120     QUERY_RDEV          = (1 << 7),     
00121         /* bits 8-14 unused, reserved for rpmVerifyAttrs */
00122     QUERY_CONTEXTS      = (1 << 15),    
00123     QUERY_FILES         = (1 << 16),    
00124     QUERY_DEPS          = (1 << 17),    
00125     QUERY_SCRIPT        = (1 << 18),    
00126     QUERY_DIGEST        = (1 << 19),    
00127     QUERY_SIGNATURE     = (1 << 20),    
00128     QUERY_PATCHES       = (1 << 21),    
00129     QUERY_HDRCHK        = (1 << 22),    
00130     QUERY_FOR_LIST      = (1 << 23),    
00131     QUERY_FOR_STATE     = (1 << 24),    
00132     QUERY_FOR_DOCS      = (1 << 25),    
00133     QUERY_FOR_CONFIG    = (1 << 26),    
00134     QUERY_FOR_DUMPFILES = (1 << 27)     
00135 } rpmQueryFlags;
00136 
00137 #define _QUERY_FOR_BITS \
00138    (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
00139     QUERY_FOR_DUMPFILES)
00140 
00144 extern rpmQueryFlags rpmcliQueryFlags;
00145 
00148 typedef struct rpmQVKArguments_s * QVA_t;
00149 
00158 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h);
00159 
00168 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg);
00169 
00173 struct rpmQVKArguments_s {
00174     rpmQVSources qva_source;    
00175     int         qva_sourceCount;
00176     rpmQueryFlags qva_flags;    
00177     rpmfileAttrs qva_fflags;    
00178     rpmdbMatchIterator qva_mi;  
00179     rpmgi qva_gi;               
00180     rpmRC qva_rc;               
00182     QVF_t qva_showPackage;      
00183     QSpecF_t qva_specQuery;     
00184     int qva_verbose;            
00185     char * qva_queryFormat;     
00186     int sign;                   
00187     const char * passPhrase;    
00188     const char * qva_prefix;    
00189     char        qva_mode;
00199     char        qva_char;       
00200 };
00201 
00204 extern struct rpmQVKArguments_s rpmQVKArgs;
00205 
00208 extern struct poptOption rpmQVSourcePoptTable[];
00209 
00212 extern struct poptOption rpmQueryPoptTable[];
00213 
00216 extern struct poptOption rpmVerifyPoptTable[];
00217 
00229 int rpmcliShowMatches(QVA_t qva, rpmts ts);
00230 
00235 void rpmDisplayQueryTags(FILE * fp);
00236 
00249 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg);
00250 
00259 int showQueryPackage(QVA_t qva, rpmts ts, Header h);
00260 
00268 int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv);
00269 
00278 int rpmcliQuery(rpmts ts, QVA_t qva, ARGV_const_t argv);
00279 
00287 int showVerifyPackage(QVA_t qva, rpmts ts, Header h);
00288 
00297 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn);
00298 
00307 int rpmcliVerify(rpmts ts, QVA_t qva, ARGV_const_t argv);
00308 
00309 /* ==================================================================== */
00315 struct rpmBuildArguments_s {
00316     rpmQueryFlags qva_flags;    
00317     int buildAmount;            
00318     char * buildRootOverride;   
00319     char * targets;             
00320     const char * passPhrase;    
00321     char * cookie;              
00322     int force;                  
00323     int noBuild;                
00324     int noDeps;                 
00325     int noLang;                 
00326     int shortCircuit;           
00327     int sign;                   
00328     char buildMode;             
00329     char buildChar;             
00330     const char * rootdir;
00331 };
00332 
00335 typedef struct rpmBuildArguments_s *    BTA_t;
00336 
00339 extern struct rpmBuildArguments_s       rpmBTArgs;
00340 
00343 extern struct poptOption                rpmBuildPoptTable[];
00344 
00345 /* ==================================================================== */
00347 /* --- install/upgrade/erase modes */
00348 
00352 typedef enum rpmInstallFlags_e {
00353     INSTALL_NONE        = 0,
00354     INSTALL_PERCENT     = (1 << 0),     
00355     INSTALL_HASH        = (1 << 1),     
00356     INSTALL_NODEPS      = (1 << 2),     
00357     INSTALL_NOORDER     = (1 << 3),     
00358     INSTALL_LABEL       = (1 << 4),     
00359     INSTALL_UPGRADE     = (1 << 5),     
00360     INSTALL_FRESHEN     = (1 << 6),     
00361     INSTALL_INSTALL     = (1 << 7),     
00362     INSTALL_ERASE       = (1 << 8),     
00363     INSTALL_ALLMATCHES  = (1 << 9)      
00364 } rpmInstallFlags;
00365 
00369 #define UNINSTALL_NONE INSTALL_NONE
00370 #define UNINSTALL_NODEPS INSTALL_NODEPS
00371 #define UNINSTALL_ALLMATCHES INSTALL_ALLMATCHES
00372 
00373 extern int rpmcliPackagesTotal;
00374 extern int rpmcliHashesCurrent;
00375 extern int rpmcliHashesTotal;
00376 extern int rpmcliProgressCurrent;
00377 extern int rpmcliProgressTotal;
00378 
00393 void * rpmShowProgress(const void * arg,
00394                 const rpmCallbackType what,
00395                 const rpm_loff_t amount,
00396                 const rpm_loff_t total,
00397                 fnpyKey key,
00398                 void * data);
00399 
00408 int rpmInstallSource(rpmts ts, const char * arg,
00409                 char ** specFilePtr,
00410                 char ** cookie);
00411 
00412 
00416 struct rpmInstallArguments_s {
00417     rpmtransFlags transFlags;
00418     rpmprobFilterFlags probFilter;
00419     rpmInstallFlags installInterfaceFlags;
00420     rpmQueryFlags qva_flags;    
00421     int numRelocations;
00422     int noDeps;
00423     int incldocs;
00424     rpmRelocation * relocations;
00425     char * prefix;
00426     const char * rootdir;
00427 };
00428 
00438 int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia, ARGV_t fileArgv);
00439 
00448 int rpmErase(rpmts ts, struct rpmInstallArguments_s * ia, ARGV_const_t argv);
00449 
00452 extern struct rpmInstallArguments_s rpmIArgs;
00453 
00456 extern struct poptOption rpmInstallPoptTable[];
00457 
00458 /* ==================================================================== */
00460 /* --- database modes */
00461 
00465 struct rpmDatabaseArguments_s {
00466     int init;                   
00467     int rebuild;                
00468     int verify;                 
00469 };
00470 
00473 extern struct rpmDatabaseArguments_s rpmDBArgs;
00474 
00477 extern struct poptOption rpmDatabasePoptTable[];
00478 
00479 /* ==================================================================== */
00485 typedef enum rpmSignFlags_e {
00486     RPMSIGN_NONE                = 0,
00487     RPMSIGN_CHK_SIGNATURE       = 'K',  
00488     RPMSIGN_NEW_SIGNATURE       = 'R',  
00489     RPMSIGN_ADD_SIGNATURE       = 'A',  
00490     RPMSIGN_DEL_SIGNATURE       = 'D',  
00491     RPMSIGN_IMPORT_PUBKEY       = 'I',  
00492 } rpmSignFlags;
00493 
00496 extern struct poptOption rpmSignPoptTable[];
00497 
00505 int rpmcliSign(rpmts ts, QVA_t qva, ARGV_const_t argv);
00506 
00507 #ifdef __cplusplus
00508 }
00509 #endif
00510 
00511 #endif  /* H_RPMCLI */