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>
00015 #include <rpmts.h>
00016
00021
00022
00023 extern headerSprintfExtension rpmHeaderFormats;
00024
00025
00029
00030
00031 extern int _noDirTokens;
00032
00033
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037
00041
00042 extern struct poptOption rpmcliAllPoptTable[];
00043
00044
00045 extern int global_depFlags;
00046
00047
00048 extern struct poptOption rpmcliDepFlagsPoptTable[];
00049
00050
00051 extern const char * rpmcliTargets;
00052
00053
00061
00062 poptContext
00063 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable)
00064
00065
00066
00067 ;
00068
00073
00074 void rpmcliConfigured(void)
00075
00076
00077
00078 ;
00079
00085 poptContext
00086 rpmcliFini( poptContext optCon)
00087
00088
00089
00090 ;
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
00150 RPMVERIFY_CONTEXTS = (1 << 15),
00151
00152
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
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
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
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
00203 extern rpmQueryFlags rpmcliQueryFlags;
00204
00209 typedef enum rpmVerifyFlags_e {
00210
00211 VERIFY_DEFAULT = 0,
00212
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
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
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
00237
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
00261 ;
00262
00271 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg)
00272
00273
00274
00275 ;
00276
00279
00280 extern struct poptOption rpmQVSourcePoptTable[];
00281
00284
00285 extern int specedit;
00286
00289
00290 extern struct poptOption rpmQueryPoptTable[];
00291
00294
00295 extern struct poptOption rpmVerifyPoptTable[];
00296
00308 int rpmcliShowMatches(QVA_t qva, rpmts ts)
00309
00310 ;
00311
00324 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg)
00325
00326
00327
00328 ;
00329
00338 int showQueryPackage(QVA_t qva, rpmts ts, Header h)
00339
00340 ;
00341
00349 int rpmcliArgIter(rpmts ts, QVA_t qva, const char ** argv)
00350
00351
00352
00353 ;
00354
00363 int rpmcliQuery(rpmts ts, QVA_t qva, const char ** argv)
00364
00365
00366
00367 ;
00368
00376 int showVerifyPackage(QVA_t qva, rpmts ts, Header h)
00377
00378 ;
00379
00388 int rpmVerifySignatures(QVA_t qva, rpmts ts, void * _fd, const char * fn)
00389
00390 ;
00391
00400 int rpmcliVerify(rpmts ts, QVA_t qva, const char ** argv)
00401
00402
00403
00404 ;
00405
00407
00410
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
00430
00431 extern int rpmcliPackagesTotal;
00432
00433
00434 extern int rpmcliHashesCurrent;
00435
00436 extern int rpmcliHashesTotal;
00437
00438 extern rpmuint64_t rpmcliProgressCurrent;
00439
00440 extern rpmuint64_t rpmcliProgressTotal;
00441
00458
00459 void * rpmShowProgress( const void * arg,
00460 const rpmCallbackType what,
00461 const rpmuint64_t amount,
00462 const rpmuint64_t total,
00463 fnpyKey key,
00464 void * data)
00465
00466
00467
00468
00469
00470 ;
00471
00480 int rpmInstallSource(rpmts ts, const char * arg,
00481 const char ** specFilePtr,
00482 const char ** cookie)
00483
00484
00485
00486 ;
00487
00495 int rpmcliInstallProblems(rpmts ts, const char * msg, int rc)
00496
00497 ;
00498
00504 int rpmcliInstallSuggests(rpmts ts)
00505
00506 ;
00507
00513 int rpmcliInstallCheck(rpmts ts)
00514
00515 ;
00516
00522 int rpmcliInstallOrder(rpmts ts)
00523
00524 ;
00525
00533 int rpmcliInstallRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)
00534
00535 ;
00536
00545 int rpmcliInstall(rpmts ts, QVA_t ia, const char ** argv)
00546
00547
00548
00549 ;
00550
00558 int rpmErase(rpmts ts, QVA_t ia, const char ** argv)
00559
00560
00561 ;
00562
00565
00566 extern struct poptOption rpmInstallPoptTable[];
00567
00569
00572
00575
00576 extern struct poptOption rpmDatabasePoptTable[];
00577
00579
00582
00591 rpmRC rpmcliImportPubkey(const rpmts ts,
00592 const unsigned char * pkt, ssize_t pktlen)
00593
00594
00595
00596 ;
00597
00601
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
00613
00616
00617 extern struct poptOption rpmSignPoptTable[];
00618
00626 int rpmcliSign(rpmts ts, QVA_t qva, const char ** argv)
00627
00628
00629
00630 ;
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
00644 rpmmi qva_mi;
00645
00646 rpmgi qva_gi;
00647 rpmRC qva_rc;
00649
00650 QVF_t qva_showPackage;
00651 int qva_showOK;
00652 int qva_showFAIL;
00653
00654 QSpecF_t qva_specQuery;
00655
00656 int qva_verbose;
00657
00658 const char * qva_queryFormat;
00659 int sign;
00660 int nopassword;
00661 int trust;
00662
00663 const char * passPhrase;
00664
00665 const char * qva_prefix;
00666 char qva_mode;
00676 char qva_char;
00678
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
00691 rpmRelocation relocations;
00692 int nrelocations;
00693
00694
00695 int init;
00696 int rebuild;
00697 int verify;
00699
00700 int (*rbCheck) (rpmts ts);
00701 int (*rbOrder) (rpmts ts);
00702 int (*rbRun) (rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet);
00703 };
00704 #endif
00705
00708
00709 extern struct rpmQVKArguments_s rpmQVKArgs;
00710
00713
00714 extern struct rpmQVKArguments_s rpmIArgs;
00715
00718
00719 extern struct rpmQVKArguments_s rpmDBArgs;
00720
00721
00724
00728 struct rpmBuildArguments_s {
00729 rpmQueryFlags qva_flags;
00730 int buildAmount;
00731
00732 const char * passPhrase;
00733
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
00745 const char * rootdir;
00746 };
00747
00750 typedef struct rpmBuildArguments_s * BTA_t;
00751
00754
00755 extern struct rpmBuildArguments_s rpmBTArgs;
00756
00759
00760 extern struct poptOption rpmBuildPoptTable[];
00761
00764 #ifdef __cplusplus
00765 }
00766 #endif
00767
00768 #endif