rpm 5.3.12
|
00001 #ifndef H_RPMCLI 00002 #define H_RPMCLI 00003 00008 #include <popt.h> 00009 #include <rpmmacro.h> 00010 #include <rpmtypes.h> 00011 #include <rpmtag.h> 00012 #include <rpmps.h> 00013 #include <rpmrc.h> 00014 #include <rpmfi.h> /* XXX rpmfileAttrs */ 00015 #include <rpmts.h> /* XXX rpmdepFlags */ 00016 00021 /*@-redecl@*/ 00022 /*@unchecked@*/ 00023 extern headerSprintfExtension rpmHeaderFormats; 00024 /*@=redecl@*/ 00025 00029 /*@-redecl@*/ 00030 /*@unchecked@*/ 00031 extern int _noDirTokens; 00032 /*@=redecl@*/ 00033 00034 #ifdef __cplusplus 00035 extern "C" { 00036 #endif 00037 00041 /*@unchecked@*/ 00042 extern struct poptOption rpmcliAllPoptTable[]; 00043 00044 /*@unchecked@*/ 00045 extern int global_depFlags; 00046 00047 /*@unchecked@*/ 00048 extern struct poptOption rpmcliDepFlagsPoptTable[]; 00049 00050 /*@unchecked@*/ /*@observer@*/ /*@null@*/ 00051 extern const char * rpmcliTargets; 00052 /*@=redecl@*/ 00053 00061 /*@null@*/ 00062 poptContext 00063 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable) 00064 /*@globals rpmCLIMacroContext, rpmGlobalMacroContext, h_errno, stderr, 00065 fileSystem, internalState @*/ 00066 /*@modifies rpmCLIMacroContext, rpmGlobalMacroContext, stderr, 00067 fileSystem, internalState @*/; 00068 00073 /*@mayexit@*/ 00074 void rpmcliConfigured(void) 00075 /*@globals rpmCLIMacroContext, 00076 rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00077 /*@modifies rpmCLIMacroContext, rpmGlobalMacroContext, 00078 fileSystem, internalState @*/; 00079 00085 poptContext 00086 rpmcliFini(/*@only@*/ /*@null@*/ poptContext optCon) 00087 /*@globals rpmTags, rpmGlobalMacroContext, 00088 fileSystem, internalState @*/ 00089 /*@modifies optCon, rpmTags, rpmGlobalMacroContext, 00090 fileSystem, internalState @*/; 00091 00095 #define RPMCLI_POPT_NODEPS -1026 00096 #define RPMCLI_POPT_NOFDIGESTS -1027 00097 #define RPMCLI_POPT_NOSCRIPTS -1028 00098 #define RPMCLI_POPT_NOSIGNATURE -1029 00099 #define RPMCLI_POPT_NODIGEST -1030 00100 #define RPMCLI_POPT_NOHDRCHK -1031 00101 #define RPMCLI_POPT_NOCONTEXTS -1032 00102 #define RPMCLI_POPT_TARGETPLATFORM -1033 00103 #define RPMCLI_POPT_NOHMACS -1034 00104 00105 /* ==================================================================== */ 00108 00113 typedef enum rpmQVSources_e { 00114 RPMQV_PACKAGE = 0, 00115 RPMQV_PATH, 00116 RPMQV_ALL, 00117 RPMQV_RPM, 00118 RPMQV_GROUP = RPMTAG_GROUP, 00119 RPMQV_WHATPROVIDES, 00120 RPMQV_WHATREQUIRES, 00121 RPMQV_TRIGGEREDBY = RPMTAG_TRIGGERNAME, 00122 RPMQV_DBOFFSET, 00123 RPMQV_SPECFILE, 00124 RPMQV_PKGID, 00125 RPMQV_HDRID, 00126 RPMQV_FILEID, 00127 RPMQV_TID, 00128 RPMQV_HDLIST, 00129 RPMQV_FTSWALK, 00130 RPMQV_WHATNEEDS, 00131 RPMQV_SPECSRPM, 00132 RPMQV_SOURCEPKGID, 00133 RPMQV_WHATCONFLICTS = RPMTAG_CONFLICTNAME, 00134 RPMQV_WHATOBSOLETES = RPMTAG_OBSOLETENAME 00135 } rpmQVSources; 00136 00140 typedef enum rpmVerifyAttrs_e { 00141 RPMVERIFY_NONE = 0, 00142 RPMVERIFY_FDIGEST = (1 << 0), 00143 RPMVERIFY_FILESIZE = (1 << 1), 00144 RPMVERIFY_LINKTO = (1 << 2), 00145 RPMVERIFY_USER = (1 << 3), 00146 RPMVERIFY_GROUP = (1 << 4), 00147 RPMVERIFY_MTIME = (1 << 5), 00148 RPMVERIFY_MODE = (1 << 6), 00149 RPMVERIFY_RDEV = (1 << 7), 00150 RPMVERIFY_CAPS = (1 << 8), 00151 /* bits 9-13 unused, reserved for rpmVerifyAttrs */ 00152 RPMVERIFY_HMAC = (1 << 14), 00153 RPMVERIFY_CONTEXTS = (1 << 15), 00154 /* bits 16-22 used in rpmVerifyFlags */ 00155 /* bits 23-27 used in rpmQueryFlags */ 00156 RPMVERIFY_READLINKFAIL= (1 << 28), 00157 RPMVERIFY_READFAIL = (1 << 29), 00158 RPMVERIFY_LSTATFAIL = (1 << 30), 00159 RPMVERIFY_LGETFILECONFAIL = (1 << 31) 00160 } rpmVerifyAttrs; 00161 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE) 00162 #define RPMVERIFY_FAILURES \ 00163 (RPMVERIFY_LSTATFAIL|RPMVERIFY_READFAIL|RPMVERIFY_READLINKFAIL|RPMVERIFY_LGETFILECONFAIL) 00164 00169 typedef enum rpmQueryFlags_e { 00170 /*@-enummemuse@*/ 00171 QUERY_FOR_DEFAULT = 0, 00172 QUERY_FDIGEST = (1 << 0), 00173 QUERY_SIZE = (1 << 1), 00174 QUERY_LINKTO = (1 << 2), 00175 QUERY_USER = (1 << 3), 00176 QUERY_GROUP = (1 << 4), 00177 QUERY_MTIME = (1 << 5), 00178 QUERY_MODE = (1 << 6), 00179 QUERY_RDEV = (1 << 7), 00180 QUERY_CAPS = (1 << 8), 00181 /* bits 9-13 unused, reserved for rpmVerifyAttrs */ 00182 QUERY_HMAC = (1 << 14), 00183 QUERY_CONTEXTS = (1 << 15), 00184 QUERY_FILES = (1 << 16), 00185 QUERY_DEPS = (1 << 17), 00186 QUERY_SCRIPT = (1 << 18), 00187 QUERY_DIGEST = (1 << 19), 00188 QUERY_SIGNATURE = (1 << 20), 00189 QUERY_PATCHES = (1 << 21), 00190 QUERY_HDRCHK = (1 << 22), 00191 /*@=enummemuse@*/ 00192 QUERY_FOR_LIST = (1 << 23), 00193 QUERY_FOR_STATE = (1 << 24), 00194 QUERY_FOR_DOCS = (1 << 25), 00195 QUERY_FOR_CONFIG = (1 << 26), 00196 QUERY_FOR_DUMPFILES = (1 << 27) 00197 } rpmQueryFlags; 00198 00199 #define _QUERY_FOR_BITS \ 00200 (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\ 00201 QUERY_FOR_DUMPFILES) 00202 00206 /*@unchecked@*/ 00207 extern rpmQueryFlags rpmcliQueryFlags; 00208 00213 typedef enum rpmVerifyFlags_e { 00214 /*@-enummemuse@*/ 00215 VERIFY_DEFAULT = 0, 00216 /*@=enummemuse@*/ 00217 VERIFY_FDIGEST = (1 << 0), 00218 VERIFY_SIZE = (1 << 1), 00219 VERIFY_LINKTO = (1 << 2), 00220 VERIFY_USER = (1 << 3), 00221 VERIFY_GROUP = (1 << 4), 00222 VERIFY_MTIME = (1 << 5), 00223 VERIFY_MODE = (1 << 6), 00224 VERIFY_RDEV = (1 << 7), 00225 VERIFY_CAPS = (1 << 8), 00226 /* bits 9-13 unused, reserved for rpmVerifyAttrs */ 00227 VERIFY_HMAC = (1 << 14), 00228 VERIFY_CONTEXTS = (1 << 15), 00229 VERIFY_FILES = (1 << 16), 00230 VERIFY_DEPS = (1 << 17), 00231 VERIFY_SCRIPT = (1 << 18), 00232 VERIFY_DIGEST = (1 << 19), 00233 VERIFY_SIGNATURE = (1 << 20), 00234 VERIFY_PATCHES = (1 << 21), 00235 VERIFY_HDRCHK = (1 << 22), 00236 /*@-enummemuse@*/ 00237 VERIFY_FOR_LIST = (1 << 23), 00238 VERIFY_FOR_STATE = (1 << 24), 00239 VERIFY_FOR_DOCS = (1 << 25), 00240 VERIFY_FOR_CONFIG = (1 << 26), 00241 VERIFY_FOR_DUMPFILES= (1 << 27) 00242 /*@=enummemuse@*/ 00243 /* bits 28-31 used in rpmVerifyAttrs */ 00244 } rpmVerifyFlags; 00245 00246 #define VERIFY_ATTRS \ 00247 ( VERIFY_FDIGEST | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \ 00248 VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV | VERIFY_HMAC | VERIFY_CONTEXTS ) 00249 #define VERIFY_ALL \ 00250 ( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST |\ 00251 VERIFY_SIGNATURE | VERIFY_HDRCHK ) 00252 00255 typedef struct rpmQVKArguments_s * QVA_t; 00256 00265 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h) 00266 /*@globals fileSystem @*/ 00267 /*@modifies qva, ts, fileSystem @*/; 00268 00277 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg) 00278 /*@globals rpmGlobalMacroContext, h_errno, 00279 fileSystem, internalState @*/ 00280 /*@modifies ts, qva, rpmGlobalMacroContext, 00281 fileSystem, internalState @*/; 00282 00285 /*@unchecked@*/ 00286 extern struct poptOption rpmQVSourcePoptTable[]; 00287 00290 /*@unchecked@*/ 00291 extern int specedit; 00292 00295 /*@unchecked@*/ 00296 extern struct poptOption rpmQueryPoptTable[]; 00297 00300 /*@unchecked@*/ 00301 extern struct poptOption rpmVerifyPoptTable[]; 00302 00315 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg) 00316 /*@globals rpmGlobalMacroContext, h_errno, 00317 fileSystem, internalState @*/ 00318 /*@modifies qva, ts, rpmGlobalMacroContext, 00319 fileSystem, internalState @*/; 00320 00329 int showQueryPackage(QVA_t qva, rpmts ts, Header h) 00330 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00331 /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/; 00332 00340 int rpmcliArgIter(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv) 00341 /*@globals rpmGlobalMacroContext, h_errno, 00342 fileSystem, internalState @*/ 00343 /*@modifies ts, qva, rpmGlobalMacroContext, 00344 fileSystem, internalState @*/; 00345 00354 int rpmcliQuery(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv) 00355 /*@globals rpmGlobalMacroContext, h_errno, 00356 fileSystem, internalState @*/ 00357 /*@modifies ts, qva, rpmGlobalMacroContext, 00358 fileSystem, internalState @*/; 00359 00367 int showVerifyPackage(QVA_t qva, rpmts ts, Header h) 00368 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00369 /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/; 00370 00379 int rpmVerifySignatures(QVA_t qva, rpmts ts, void * _fd, const char * fn) 00380 /*@globals fileSystem, internalState @*/ 00381 /*@modifies qva, ts, fileSystem, internalState @*/; 00382 00391 int rpmcliVerify(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv) 00392 /*@globals rpmGlobalMacroContext, h_errno, 00393 fileSystem, internalState @*/ 00394 /*@modifies ts, qva, rpmGlobalMacroContext, 00395 fileSystem, internalState @*/; 00396 00398 /* ==================================================================== */ 00401 /* --- install/upgrade/erase modes */ 00402 00406 typedef enum rpmInstallInterfaceFlags_e { 00407 INSTALL_NONE = 0, 00408 INSTALL_PERCENT = (1 << 0), 00409 INSTALL_HASH = (1 << 1), 00410 INSTALL_NODEPS = (1 << 2), 00411 INSTALL_NOORDER = (1 << 3), 00412 INSTALL_LABEL = (1 << 4), 00413 INSTALL_UPGRADE = (1 << 5), 00414 INSTALL_FRESHEN = (1 << 6), 00415 INSTALL_INSTALL = (1 << 7), 00416 INSTALL_ERASE = (1 << 8), 00417 INSTALL_ALLMATCHES = (1 << 9) 00418 } rpmInstallInterfaceFlags; 00419 00420 /*@-redecl@*/ 00421 /*@unchecked@*/ 00422 extern int rpmcliPackagesTotal; 00423 /*@=redecl@*/ 00424 /*@unchecked@*/ 00425 extern int rpmcliHashesCurrent; 00426 /*@unchecked@*/ 00427 extern int rpmcliHashesTotal; 00428 /*@unchecked@*/ 00429 extern rpmuint64_t rpmcliProgressCurrent; 00430 /*@unchecked@*/ 00431 extern rpmuint64_t rpmcliProgressTotal; 00432 00449 /*@null@*/ 00450 void * rpmShowProgress(/*@null@*/ const void * arg, 00451 const rpmCallbackType what, 00452 const rpmuint64_t amount, 00453 const rpmuint64_t total, 00454 /*@null@*/ fnpyKey key, 00455 /*@null@*/ void * data) 00456 /*@globals rpmcliHashesCurrent, 00457 rpmcliProgressCurrent, rpmcliProgressTotal, 00458 h_errno, rpmGlobalMacroContext, fileSystem, internalState @*/ 00459 /*@modifies arg, rpmcliHashesCurrent, 00460 rpmcliProgressCurrent, rpmcliProgressTotal, 00461 rpmGlobalMacroContext, fileSystem, internalState @*/; 00462 00471 int rpmInstallSource(rpmts ts, const char * arg, 00472 /*@null@*/ /*@out@*/ const char ** specFilePtr, 00473 /*@null@*/ /*@out@*/ const char ** cookie) 00474 /*@globals rpmGlobalMacroContext, h_errno, 00475 fileSystem, internalState@*/ 00476 /*@modifies ts, *specFilePtr, *cookie, rpmGlobalMacroContext, 00477 fileSystem, internalState @*/; 00478 00486 int rpmcliInstallProblems(rpmts ts, /*@null@*/ const char * msg, int rc) 00487 /*@globals fileSystem, internalState @*/ 00488 /*@modifies ts, fileSystem, internalState @*/; 00489 00495 int rpmcliInstallSuggests(rpmts ts) 00496 /*@globals internalState @*/ 00497 /*@modifies ts, internalState @*/; 00498 00504 int rpmcliInstallCheck(rpmts ts) 00505 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00506 /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/; 00507 00513 int rpmcliInstallOrder(rpmts ts) 00514 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00515 /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/; 00516 00524 int rpmcliInstallRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet) 00525 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00526 /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/; 00527 00536 int rpmcliInstall(rpmts ts, QVA_t ia, /*@null@*/ const char ** argv) 00537 /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext, h_errno, 00538 fileSystem, internalState@*/ 00539 /*@modifies ts, ia, rpmcliPackagesTotal, rpmGlobalMacroContext, 00540 fileSystem, internalState @*/; 00541 00549 int rpmErase(rpmts ts, QVA_t ia, /*@null@*/ const char ** argv) 00550 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00551 /*@modifies ts, ia, rpmGlobalMacroContext, 00552 fileSystem, internalState @*/; 00553 00556 /*@unchecked@*/ 00557 extern struct poptOption rpmInstallPoptTable[]; 00558 00560 /* ==================================================================== */ 00563 00566 /*@unchecked@*/ 00567 extern struct poptOption rpmDatabasePoptTable[]; 00568 00570 /* ==================================================================== */ 00573 00582 rpmRC rpmcliImportPubkey(const rpmts ts, 00583 const unsigned char * pkt, ssize_t pktlen) 00584 /*@globals rpmGlobalMacroContext, h_errno, 00585 fileSystem, internalState @*/ 00586 /*@modifies ts, rpmGlobalMacroContext, 00587 fileSystem, internalState @*/; 00588 00592 /*@-typeuse@*/ 00593 #if !defined(SWIG) 00594 typedef enum rpmSignFlags_e { 00595 RPMSIGN_NONE = 0, 00596 RPMSIGN_CHK_SIGNATURE = 'K', 00597 RPMSIGN_NEW_SIGNATURE = 'R', 00598 RPMSIGN_ADD_SIGNATURE = 'A', 00599 RPMSIGN_DEL_SIGNATURE = 'D', 00600 RPMSIGN_IMPORT_PUBKEY = 'I', 00601 } rpmSignFlags; 00602 #endif 00603 /*@=typeuse@*/ 00604 00607 /*@unchecked@*/ 00608 extern struct poptOption rpmSignPoptTable[]; 00609 00617 int rpmcliSign(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv) 00618 /*@globals rpmGlobalMacroContext, h_errno, 00619 fileSystem, internalState @*/ 00620 /*@modifies ts, qva, rpmGlobalMacroContext, 00621 fileSystem, internalState @*/; 00622 00628 #if !defined(SWIG) 00629 struct rpmQVKArguments_s { 00630 rpmQVSources qva_source; 00631 int qva_sourceCount; 00632 rpmQueryFlags qva_flags; 00633 rpmfileAttrs qva_fflags; 00634 /*@only@*/ /*@null@*/ 00635 rpmmi qva_mi; 00636 /*@refccounted@*/ /*@relnull@*/ 00637 rpmgi qva_gi; 00638 rpmRC qva_rc; 00640 /*@null@*/ 00641 QVF_t qva_showPackage; 00642 int qva_showOK; 00643 int qva_showFAIL; 00644 /*@null@*/ 00645 QSpecF_t qva_specQuery; 00646 /*@unused@*/ 00647 int qva_verbose; 00648 /*@only@*/ /*@null@*/ 00649 const char * qva_queryFormat; 00650 int sign; 00651 int nopassword; 00652 int trust; 00653 /*@observer@*/ 00654 const char * passPhrase; 00655 /*@owned@*/ /*@null@*/ 00656 const char * qva_prefix; 00657 char qva_mode; 00667 char qva_char; 00669 /* install/erase mode arguments */ 00670 rpmdepFlags depFlags; 00671 rpmtransFlags transFlags; 00672 rpmprobFilterFlags probFilter; 00673 rpmInstallInterfaceFlags installInterfaceFlags; 00674 rpmuint32_t arbtid; 00675 rpmuint32_t rbtid; 00676 rpmuint32_t *rbtidExcludes; 00677 int numrbtidExcludes; 00678 int noDeps; 00679 int incldocs; 00680 int no_rollback_links; 00681 /*@owned@*/ /*@relnull@*/ 00682 rpmRelocation relocations; 00683 int nrelocations; 00684 00685 /* database mode arguments */ 00686 int rebuild; 00688 /* rollback vectors */ 00689 int (*rbCheck) (rpmts ts); 00690 int (*rbOrder) (rpmts ts); 00691 int (*rbRun) (rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet); 00692 }; 00693 #endif 00694 00697 /*@unchecked@*/ 00698 extern struct rpmQVKArguments_s rpmQVKArgs; 00699 00702 /*@unchecked@*/ 00703 extern struct rpmQVKArguments_s rpmIArgs; 00704 00707 /*@unchecked@*/ 00708 extern struct rpmQVKArguments_s rpmDBArgs; 00709 00710 /* ==================================================================== */ 00713 00717 struct rpmBuildArguments_s { 00718 rpmQueryFlags qva_flags; 00719 int buildAmount; 00720 /*@observer@*/ 00721 const char * passPhrase; 00722 /*@only@*/ /*@null@*/ 00723 const char * cookie; 00724 const char * specFile; 00725 int noBuild; 00726 int noDeps; 00727 int noLang; 00728 int shortCircuit; 00729 int sign; 00730 int nopassword; 00731 char buildMode; 00732 char buildChar; 00733 /*@observer@*/ /*@null@*/ 00734 const char * rootdir; 00735 }; 00736 00739 typedef struct rpmBuildArguments_s * BTA_t; 00740 00743 /*@unchecked@*/ 00744 extern struct rpmBuildArguments_s rpmBTArgs; 00745 00748 /*@unchecked@*/ 00749 extern struct poptOption rpmBuildPoptTable[]; 00750 00753 #ifdef __cplusplus 00754 } 00755 #endif 00756 00757 #endif /* H_RPMCLI */