rpm
4.9.1.3
|
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 */