rpm
5.2.1
|
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 00104 /* ==================================================================== */ 00107 00112 typedef enum rpmQVSources_e { 00113 RPMQV_PACKAGE = 0, 00114 RPMQV_PATH, 00115 RPMQV_ALL, 00116 RPMQV_RPM, 00117 RPMQV_GROUP = RPMTAG_GROUP, 00118 RPMQV_WHATPROVIDES, 00119 RPMQV_WHATREQUIRES, 00120 RPMQV_TRIGGEREDBY = RPMTAG_TRIGGERNAME, 00121 RPMQV_DBOFFSET, 00122 RPMQV_SPECFILE, 00123 RPMQV_PKGID, 00124 RPMQV_HDRID, 00125 RPMQV_FILEID, 00126 RPMQV_TID, 00127 RPMQV_HDLIST, 00128 RPMQV_FTSWALK, 00129 RPMQV_WHATNEEDS, 00130 RPMQV_SPECSRPM, 00131 RPMQV_SOURCEPKGID, 00132 RPMQV_WHATCONFLICTS = RPMTAG_CONFLICTNAME, 00133 RPMQV_WHATOBSOLETES = RPMTAG_OBSOLETENAME 00134 } rpmQVSources; 00135 00139 typedef enum rpmVerifyAttrs_e { 00140 RPMVERIFY_NONE = 0, 00141 RPMVERIFY_FDIGEST = (1 << 0), 00142 RPMVERIFY_FILESIZE = (1 << 1), 00143 RPMVERIFY_LINKTO = (1 << 2), 00144 RPMVERIFY_USER = (1 << 3), 00145 RPMVERIFY_GROUP = (1 << 4), 00146 RPMVERIFY_MTIME = (1 << 5), 00147 RPMVERIFY_MODE = (1 << 6), 00148 RPMVERIFY_RDEV = (1 << 7), 00149 /* bits 8-14 unused, reserved for rpmVerifyAttrs */ 00150 RPMVERIFY_CONTEXTS = (1 << 15), 00151 /* bits 16-22 used in rpmVerifyFlags */ 00152 /* bits 23-27 used in rpmQueryFlags */ 00153 RPMVERIFY_READLINKFAIL= (1 << 28), 00154 RPMVERIFY_READFAIL = (1 << 29), 00155 RPMVERIFY_LSTATFAIL = (1 << 30), 00156 RPMVERIFY_LGETFILECONFAIL = (1 << 31) 00157 } rpmVerifyAttrs; 00158 #define RPMVERIFY_MD5 RPMVERIFY_FDIGEST 00159 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE) 00160 #define RPMVERIFY_FAILURES \ 00161 (RPMVERIFY_LSTATFAIL|RPMVERIFY_READFAIL|RPMVERIFY_READLINKFAIL|RPMVERIFY_LGETFILECONFAIL) 00162 00167 typedef enum rpmQueryFlags_e { 00168 /*@-enummemuse@*/ 00169 QUERY_FOR_DEFAULT = 0, 00170 QUERY_FDIGEST = (1 << 0), 00171 QUERY_SIZE = (1 << 1), 00172 QUERY_LINKTO = (1 << 2), 00173 QUERY_USER = (1 << 3), 00174 QUERY_GROUP = (1 << 4), 00175 QUERY_MTIME = (1 << 5), 00176 QUERY_MODE = (1 << 6), 00177 QUERY_RDEV = (1 << 7), 00178 /* bits 8-14 unused, reserved for rpmVerifyAttrs */ 00179 QUERY_CONTEXTS = (1 << 15), 00180 QUERY_FILES = (1 << 16), 00181 QUERY_DEPS = (1 << 17), 00182 QUERY_SCRIPT = (1 << 18), 00183 QUERY_DIGEST = (1 << 19), 00184 QUERY_SIGNATURE = (1 << 20), 00185 QUERY_PATCHES = (1 << 21), 00186 QUERY_HDRCHK = (1 << 22), 00187 /*@=enummemuse@*/ 00188 QUERY_FOR_LIST = (1 << 23), 00189 QUERY_FOR_STATE = (1 << 24), 00190 QUERY_FOR_DOCS = (1 << 25), 00191 QUERY_FOR_CONFIG = (1 << 26), 00192 QUERY_FOR_DUMPFILES = (1 << 27) 00193 } rpmQueryFlags; 00194 00195 #define _QUERY_FOR_BITS \ 00196 (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\ 00197 QUERY_FOR_DUMPFILES) 00198 00202 /*@unchecked@*/ 00203 extern rpmQueryFlags rpmcliQueryFlags; 00204 00209 typedef enum rpmVerifyFlags_e { 00210 /*@-enummemuse@*/ 00211 VERIFY_DEFAULT = 0, 00212 /*@=enummemuse@*/ 00213 VERIFY_FDIGEST = (1 << 0), 00214 VERIFY_SIZE = (1 << 1), 00215 VERIFY_LINKTO = (1 << 2), 00216 VERIFY_USER = (1 << 3), 00217 VERIFY_GROUP = (1 << 4), 00218 VERIFY_MTIME = (1 << 5), 00219 VERIFY_MODE = (1 << 6), 00220 VERIFY_RDEV = (1 << 7), 00221 /* bits 8-14 unused, reserved for rpmVerifyAttrs */ 00222 VERIFY_CONTEXTS = (1 << 15), 00223 VERIFY_FILES = (1 << 16), 00224 VERIFY_DEPS = (1 << 17), 00225 VERIFY_SCRIPT = (1 << 18), 00226 VERIFY_DIGEST = (1 << 19), 00227 VERIFY_SIGNATURE = (1 << 20), 00228 VERIFY_PATCHES = (1 << 21), 00229 VERIFY_HDRCHK = (1 << 22), 00230 /*@-enummemuse@*/ 00231 VERIFY_FOR_LIST = (1 << 23), 00232 VERIFY_FOR_STATE = (1 << 24), 00233 VERIFY_FOR_DOCS = (1 << 25), 00234 VERIFY_FOR_CONFIG = (1 << 26), 00235 VERIFY_FOR_DUMPFILES= (1 << 27) 00236 /*@=enummemuse@*/ 00237 /* bits 28-31 used in rpmVerifyAttrs */ 00238 } rpmVerifyFlags; 00239 00240 #define VERIFY_ATTRS \ 00241 ( VERIFY_FDIGEST | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \ 00242 VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV | VERIFY_CONTEXTS ) 00243 #define VERIFY_ALL \ 00244 ( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST |\ 00245 VERIFY_SIGNATURE | VERIFY_HDRCHK ) 00246 00249 typedef struct rpmQVKArguments_s * QVA_t; 00250 00259 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h) 00260 /*@globals fileSystem @*/ 00261 /*@modifies qva, ts, fileSystem @*/; 00262 00271 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg) 00272 /*@globals rpmGlobalMacroContext, h_errno, 00273 fileSystem, internalState @*/ 00274 /*@modifies ts, qva, rpmGlobalMacroContext, 00275 fileSystem, internalState @*/; 00276 00279 /*@unchecked@*/ 00280 extern struct poptOption rpmQVSourcePoptTable[]; 00281 00284 /*@unchecked@*/ 00285 extern int specedit; 00286 00289 /*@unchecked@*/ 00290 extern struct poptOption rpmQueryPoptTable[]; 00291 00294 /*@unchecked@*/ 00295 extern struct poptOption rpmVerifyPoptTable[]; 00296 00308 int rpmcliShowMatches(QVA_t qva, rpmts ts) 00309 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00310 /*@modifies qva, rpmGlobalMacroContext, fileSystem, internalState @*/; 00311 00324 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg) 00325 /*@globals rpmGlobalMacroContext, h_errno, 00326 fileSystem, internalState @*/ 00327 /*@modifies qva, ts, rpmGlobalMacroContext, 00328 fileSystem, internalState @*/; 00329 00338 int showQueryPackage(QVA_t qva, rpmts ts, Header h) 00339 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00340 /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/; 00341 00349 int rpmcliArgIter(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv) 00350 /*@globals rpmGlobalMacroContext, h_errno, 00351 fileSystem, internalState @*/ 00352 /*@modifies ts, qva, rpmGlobalMacroContext, 00353 fileSystem, internalState @*/; 00354 00363 int rpmcliQuery(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv) 00364 /*@globals rpmGlobalMacroContext, h_errno, 00365 fileSystem, internalState @*/ 00366 /*@modifies ts, qva, rpmGlobalMacroContext, 00367 fileSystem, internalState @*/; 00368 00376 int showVerifyPackage(QVA_t qva, rpmts ts, Header h) 00377 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00378 /*@modifies ts, h, rpmGlobalMacroContext, fileSystem, internalState @*/; 00379 00388 int rpmVerifySignatures(QVA_t qva, rpmts ts, void * _fd, const char * fn) 00389 /*@globals fileSystem, internalState @*/ 00390 /*@modifies qva, ts, fileSystem, internalState @*/; 00391 00400 int rpmcliVerify(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv) 00401 /*@globals rpmGlobalMacroContext, h_errno, 00402 fileSystem, internalState @*/ 00403 /*@modifies ts, qva, rpmGlobalMacroContext, 00404 fileSystem, internalState @*/; 00405 00407 /* ==================================================================== */ 00410 /* --- install/upgrade/erase modes */ 00411 00415 typedef enum rpmInstallInterfaceFlags_e { 00416 INSTALL_NONE = 0, 00417 INSTALL_PERCENT = (1 << 0), 00418 INSTALL_HASH = (1 << 1), 00419 INSTALL_NODEPS = (1 << 2), 00420 INSTALL_NOORDER = (1 << 3), 00421 INSTALL_LABEL = (1 << 4), 00422 INSTALL_UPGRADE = (1 << 5), 00423 INSTALL_FRESHEN = (1 << 6), 00424 INSTALL_INSTALL = (1 << 7), 00425 INSTALL_ERASE = (1 << 8), 00426 INSTALL_ALLMATCHES = (1 << 9) 00427 } rpmInstallInterfaceFlags; 00428 00429 /*@-redecl@*/ 00430 /*@unchecked@*/ 00431 extern int rpmcliPackagesTotal; 00432 /*@=redecl@*/ 00433 /*@unchecked@*/ 00434 extern int rpmcliHashesCurrent; 00435 /*@unchecked@*/ 00436 extern int rpmcliHashesTotal; 00437 /*@unchecked@*/ 00438 extern rpmuint64_t rpmcliProgressCurrent; 00439 /*@unchecked@*/ 00440 extern rpmuint64_t rpmcliProgressTotal; 00441 00458 /*@null@*/ 00459 void * rpmShowProgress(/*@null@*/ const void * arg, 00460 const rpmCallbackType what, 00461 const rpmuint64_t amount, 00462 const rpmuint64_t total, 00463 /*@null@*/ fnpyKey key, 00464 /*@null@*/ void * data) 00465 /*@globals rpmcliHashesCurrent, 00466 rpmcliProgressCurrent, rpmcliProgressTotal, 00467 h_errno, rpmGlobalMacroContext, fileSystem, internalState @*/ 00468 /*@modifies arg, rpmcliHashesCurrent, 00469 rpmcliProgressCurrent, rpmcliProgressTotal, 00470 rpmGlobalMacroContext, fileSystem, internalState @*/; 00471 00480 int rpmInstallSource(rpmts ts, const char * arg, 00481 /*@null@*/ /*@out@*/ const char ** specFilePtr, 00482 /*@null@*/ /*@out@*/ const char ** cookie) 00483 /*@globals rpmGlobalMacroContext, h_errno, 00484 fileSystem, internalState@*/ 00485 /*@modifies ts, *specFilePtr, *cookie, rpmGlobalMacroContext, 00486 fileSystem, internalState @*/; 00487 00495 int rpmcliInstallProblems(rpmts ts, /*@null@*/ const char * msg, int rc) 00496 /*@globals fileSystem, internalState @*/ 00497 /*@modifies ts, fileSystem, internalState @*/; 00498 00504 int rpmcliInstallSuggests(rpmts ts) 00505 /*@globals internalState @*/ 00506 /*@modifies ts, internalState @*/; 00507 00513 int rpmcliInstallCheck(rpmts ts) 00514 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00515 /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/; 00516 00522 int rpmcliInstallOrder(rpmts ts) 00523 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00524 /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/; 00525 00533 int rpmcliInstallRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet) 00534 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00535 /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/; 00536 00545 int rpmcliInstall(rpmts ts, QVA_t ia, /*@null@*/ const char ** argv) 00546 /*@globals rpmcliPackagesTotal, rpmGlobalMacroContext, h_errno, 00547 fileSystem, internalState@*/ 00548 /*@modifies ts, ia, rpmcliPackagesTotal, rpmGlobalMacroContext, 00549 fileSystem, internalState @*/; 00550 00558 int rpmErase(rpmts ts, QVA_t ia, /*@null@*/ const char ** argv) 00559 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ 00560 /*@modifies ts, ia, rpmGlobalMacroContext, 00561 fileSystem, internalState @*/; 00562 00565 /*@unchecked@*/ 00566 extern struct poptOption rpmInstallPoptTable[]; 00567 00569 /* ==================================================================== */ 00572 00575 /*@unchecked@*/ 00576 extern struct poptOption rpmDatabasePoptTable[]; 00577 00579 /* ==================================================================== */ 00582 00591 rpmRC rpmcliImportPubkey(const rpmts ts, 00592 const unsigned char * pkt, ssize_t pktlen) 00593 /*@globals rpmGlobalMacroContext, h_errno, 00594 fileSystem, internalState @*/ 00595 /*@modifies ts, rpmGlobalMacroContext, 00596 fileSystem, internalState @*/; 00597 00601 /*@-typeuse@*/ 00602 #if !defined(SWIG) 00603 typedef enum rpmSignFlags_e { 00604 RPMSIGN_NONE = 0, 00605 RPMSIGN_CHK_SIGNATURE = 'K', 00606 RPMSIGN_NEW_SIGNATURE = 'R', 00607 RPMSIGN_ADD_SIGNATURE = 'A', 00608 RPMSIGN_DEL_SIGNATURE = 'D', 00609 RPMSIGN_IMPORT_PUBKEY = 'I', 00610 } rpmSignFlags; 00611 #endif 00612 /*@=typeuse@*/ 00613 00616 /*@unchecked@*/ 00617 extern struct poptOption rpmSignPoptTable[]; 00618 00626 int rpmcliSign(rpmts ts, QVA_t qva, /*@null@*/ const char ** argv) 00627 /*@globals rpmGlobalMacroContext, h_errno, 00628 fileSystem, internalState @*/ 00629 /*@modifies ts, qva, rpmGlobalMacroContext, 00630 fileSystem, internalState @*/; 00631 00637 #if !defined(SWIG) 00638 struct rpmQVKArguments_s { 00639 rpmQVSources qva_source; 00640 int qva_sourceCount; 00641 rpmQueryFlags qva_flags; 00642 rpmfileAttrs qva_fflags; 00643 /*@only@*/ /*@null@*/ 00644 rpmmi qva_mi; 00645 /*@refccounted@*/ /*@relnull@*/ 00646 rpmgi qva_gi; 00647 rpmRC qva_rc; 00649 /*@null@*/ 00650 QVF_t qva_showPackage; 00651 int qva_showOK; 00652 int qva_showFAIL; 00653 /*@null@*/ 00654 QSpecF_t qva_specQuery; 00655 /*@unused@*/ 00656 int qva_verbose; 00657 /*@only@*/ /*@null@*/ 00658 const char * qva_queryFormat; 00659 int sign; 00660 int nopassword; 00661 int trust; 00662 /*@observer@*/ 00663 const char * passPhrase; 00664 /*@owned@*/ /*@null@*/ 00665 const char * qva_prefix; 00666 char qva_mode; 00676 char qva_char; 00678 /* install/erase mode arguments */ 00679 rpmdepFlags depFlags; 00680 rpmtransFlags transFlags; 00681 rpmprobFilterFlags probFilter; 00682 rpmInstallInterfaceFlags installInterfaceFlags; 00683 rpmuint32_t arbtid; 00684 rpmuint32_t rbtid; 00685 rpmuint32_t *rbtidExcludes; 00686 int numrbtidExcludes; 00687 int noDeps; 00688 int incldocs; 00689 int no_rollback_links; 00690 /*@owned@*/ /*@relnull@*/ 00691 rpmRelocation relocations; 00692 int nrelocations; 00693 00694 /* database mode arguments */ 00695 int init; 00696 int rebuild; 00697 int verify; 00699 /* rollback vectors */ 00700 int (*rbCheck) (rpmts ts); 00701 int (*rbOrder) (rpmts ts); 00702 int (*rbRun) (rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet); 00703 }; 00704 #endif 00705 00708 /*@unchecked@*/ 00709 extern struct rpmQVKArguments_s rpmQVKArgs; 00710 00713 /*@unchecked@*/ 00714 extern struct rpmQVKArguments_s rpmIArgs; 00715 00718 /*@unchecked@*/ 00719 extern struct rpmQVKArguments_s rpmDBArgs; 00720 00721 /* ==================================================================== */ 00724 00728 struct rpmBuildArguments_s { 00729 rpmQueryFlags qva_flags; 00730 int buildAmount; 00731 /*@observer@*/ 00732 const char * passPhrase; 00733 /*@only@*/ /*@null@*/ 00734 const char * cookie; 00735 int noBuild; 00736 int noDeps; 00737 int noLang; 00738 int shortCircuit; 00739 int sign; 00740 int nopassword; 00741 int useCatalog; 00742 char buildMode; 00743 char buildChar; 00744 /*@observer@*/ /*@null@*/ 00745 const char * rootdir; 00746 }; 00747 00750 typedef struct rpmBuildArguments_s * BTA_t; 00751 00754 /*@unchecked@*/ 00755 extern struct rpmBuildArguments_s rpmBTArgs; 00756 00759 /*@unchecked@*/ 00760 extern struct poptOption rpmBuildPoptTable[]; 00761 00764 #ifdef __cplusplus 00765 } 00766 #endif 00767 00768 #endif /* H_RPMCLI */