rpm  4.9.1.3
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 struct poptOption                rpmcliAllPoptTable[];
00027 
00028 extern const char * rpmcliPipeOutput;
00029 
00030 extern const char * rpmcliRcfile;
00031 
00032 extern const char * rpmcliRootDir;
00033 
00041 poptContext
00042 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable);
00043 
00048 void rpmcliConfigured(void);
00049 
00055 poptContext
00056 rpmcliFini(poptContext optCon);
00057 
00061 #define RPMCLI_POPT_NODEPS              -1025
00062 #define RPMCLI_POPT_FORCE               -1026
00063 #define RPMCLI_POPT_NOMD5               -1027
00064 #define RPMCLI_POPT_NOFILEDIGEST        -1027   /* same as obsolete RPMCLI_POPT_NOMD5 */
00065 #define RPMCLI_POPT_NOSCRIPTS           -1028
00066 #define RPMCLI_POPT_NOSIGNATURE         -1029
00067 #define RPMCLI_POPT_NODIGEST            -1030
00068 #define RPMCLI_POPT_NOHDRCHK            -1031
00069 #define RPMCLI_POPT_NOCONTEXTS          -1032
00070 
00071 /* ==================================================================== */
00078 enum rpmQVSources_e {
00079     RPMQV_PACKAGE = 0,  
00080     RPMQV_PATH,         
00081     RPMQV_ALL,          
00082     RPMQV_RPM,          
00083     RPMQV_GROUP,        
00084     RPMQV_WHATPROVIDES, 
00085     RPMQV_WHATREQUIRES, 
00086     RPMQV_TRIGGEREDBY,  
00087     RPMQV_DBOFFSET,     
00088     RPMQV_SPECRPMS,     
00089     RPMQV_SPECFILE = RPMQV_SPECRPMS, 
00090     RPMQV_PKGID,        
00091     RPMQV_HDRID,        
00092     RPMQV_TID,          
00093     RPMQV_SPECSRPM,     
00094 };
00095 
00096 typedef rpmFlags rpmQVSources;
00097 
00102 enum rpmQueryFlags_e {
00103     QUERY_FOR_DEFAULT   = 0,            
00104     QUERY_MD5           = (1 << 0),     
00105     QUERY_FILEDIGEST    = (1 << 0),     
00106     QUERY_SIZE          = (1 << 1),     
00107     QUERY_LINKTO        = (1 << 2),     
00108     QUERY_USER          = (1 << 3),     
00109     QUERY_GROUP         = (1 << 4),     
00110     QUERY_MTIME         = (1 << 5),     
00111     QUERY_MODE          = (1 << 6),     
00112     QUERY_RDEV          = (1 << 7),     
00113         /* bits 8-14 unused, reserved for rpmVerifyAttrs */
00114     QUERY_CONTEXTS      = (1 << 15),    
00115     QUERY_FILES         = (1 << 16),    
00116     QUERY_DEPS          = (1 << 17),    
00117     QUERY_SCRIPT        = (1 << 18),    
00118     QUERY_DIGEST        = (1 << 19),    
00119     QUERY_SIGNATURE     = (1 << 20),    
00120     QUERY_PATCHES       = (1 << 21),    
00121     QUERY_HDRCHK        = (1 << 22),    
00122     QUERY_FOR_LIST      = (1 << 23),    
00123     QUERY_FOR_STATE     = (1 << 24),    
00124     QUERY_FOR_DOCS      = (1 << 25),    
00125     QUERY_FOR_CONFIG    = (1 << 26),    
00126     QUERY_FOR_DUMPFILES = (1 << 27)     
00127 };
00128 
00129 typedef rpmFlags rpmQueryFlags;
00130 
00131 #define _QUERY_FOR_BITS \
00132    (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
00133     QUERY_FOR_DUMPFILES)
00134 
00138 extern rpmQueryFlags rpmcliQueryFlags;
00139 
00142 typedef struct rpmQVKArguments_s * QVA_t;
00143 
00152 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h);
00153 
00162 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg);
00163 
00167 struct rpmQVKArguments_s {
00168     rpmQVSources qva_source;    
00169     int         qva_sourceCount;
00170     rpmQueryFlags qva_flags;    
00171     rpmfileAttrs qva_fflags;    
00173     QVF_t qva_showPackage;      
00174     QSpecF_t qva_specQuery;     
00175     char * qva_queryFormat;     
00176     char        qva_mode;
00184 };
00185 
00188 extern struct rpmQVKArguments_s rpmQVKArgs;
00189 
00192 extern struct poptOption rpmQVSourcePoptTable[];
00193 
00196 extern struct poptOption rpmQueryPoptTable[];
00197 
00200 extern struct poptOption rpmVerifyPoptTable[];
00201 
00206 void rpmDisplayQueryTags(FILE * fp);
00207 
00216 int showQueryPackage(QVA_t qva, rpmts ts, Header h);
00217 
00225 int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv);
00226 
00235 int rpmcliQuery(rpmts ts, QVA_t qva, ARGV_const_t argv);
00236 
00244 int showVerifyPackage(QVA_t qva, rpmts ts, Header h);
00245 
00254 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn);
00255 
00264 int rpmcliVerify(rpmts ts, QVA_t qva, ARGV_const_t argv);
00265 
00266 /* ==================================================================== */
00268 /* --- install/upgrade/erase modes */
00269 
00273 enum rpmInstallFlags_e {
00274     INSTALL_NONE        = 0,
00275     INSTALL_PERCENT     = (1 << 0),     
00276     INSTALL_HASH        = (1 << 1),     
00277     INSTALL_NODEPS      = (1 << 2),     
00278     INSTALL_NOORDER     = (1 << 3),     
00279     INSTALL_LABEL       = (1 << 4),     
00280     INSTALL_UPGRADE     = (1 << 5),     
00281     INSTALL_FRESHEN     = (1 << 6),     
00282     INSTALL_INSTALL     = (1 << 7),     
00283     INSTALL_ERASE       = (1 << 8),     
00284     INSTALL_ALLMATCHES  = (1 << 9)      
00285 };
00286 
00287 typedef rpmFlags rpmInstallFlags;
00288 
00292 #define UNINSTALL_NONE INSTALL_NONE
00293 #define UNINSTALL_NODEPS INSTALL_NODEPS
00294 #define UNINSTALL_ALLMATCHES INSTALL_ALLMATCHES
00295 
00296 extern int rpmcliPackagesTotal;
00297 extern int rpmcliHashesCurrent;
00298 extern int rpmcliHashesTotal;
00299 extern int rpmcliProgressCurrent;
00300 extern int rpmcliProgressTotal;
00301 
00316 void * rpmShowProgress(const void * arg,
00317                 const rpmCallbackType what,
00318                 const rpm_loff_t amount,
00319                 const rpm_loff_t total,
00320                 fnpyKey key,
00321                 void * data);
00322 
00331 int rpmInstallSource(rpmts ts, const char * arg,
00332                 char ** specFilePtr,
00333                 char ** cookie);
00334 
00335 
00339 struct rpmInstallArguments_s {
00340     rpmtransFlags transFlags;
00341     rpmprobFilterFlags probFilter;
00342     rpmInstallFlags installInterfaceFlags;
00343     int numRelocations;
00344     int noDeps;
00345     int incldocs;
00346     rpmRelocation * relocations;
00347     char * prefix;
00348 };
00349 
00359 int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia, ARGV_t fileArgv);
00360 
00369 int rpmErase(rpmts ts, struct rpmInstallArguments_s * ia, ARGV_const_t argv);
00370 
00373 extern struct rpmInstallArguments_s rpmIArgs;
00374 
00377 extern struct poptOption rpmInstallPoptTable[];
00378 
00379 /* ==================================================================== */
00387 int rpmcliImportPubkeys(rpmts ts, ARGV_const_t argv);
00388 
00395 int rpmcliVerifySignatures(rpmts ts, ARGV_const_t argv);
00396 
00397 #ifdef __cplusplus
00398 }
00399 #endif
00400 
00401 #endif  /* H_RPMCLI */