00001 #ifndef H_RPMCLI
00002 #define H_RPMCLI
00003
00008 #include "rpmlib.h"
00009 #include "rpmurl.h"
00010 #include "rpmmacro.h"
00011 #include "rpmps.h"
00012 #include "argv.h"
00013
00017
00018
00019 extern int _noDirTokens;
00020
00021
00022 #ifdef __cplusplus
00023 extern "C" {
00024 #endif
00025
00029
00030 extern struct poptOption rpmcliAllPoptTable[];
00031
00032
00033 extern int ftsOpts;
00034
00035
00036 extern struct poptOption rpmcliFtsPoptTable[];
00037
00038
00039 extern int global_depFlags;
00040
00041
00042 extern struct poptOption rpmcliDepFlagsPoptTable[];
00043
00044
00045 extern const char * rpmcliPipeOutput;
00046
00047
00048 extern const char * rpmcliRcfile;
00049
00050
00051 extern const char * rpmcliRootDir;
00052
00053
00054 extern const char * rpmcliTargets;
00055
00056
00064
00065 poptContext
00066 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable)
00067
00068
00069
00070 ;
00071
00076
00077 void rpmcliConfigured(void)
00078
00079
00080
00081 ;
00082
00088 poptContext
00089 rpmcliFini( poptContext optCon)
00090
00091
00092
00093 ;
00094
00098 #define RPMCLI_POPT_NODEPS -1025
00099 #define RPMCLI_POPT_FORCE -1026
00100 #define RPMCLI_POPT_NOFDIGESTS -1027
00101 #define RPMCLI_POPT_NOSCRIPTS -1028
00102 #define RPMCLI_POPT_NOSIGNATURE -1029
00103 #define RPMCLI_POPT_NODIGEST -1030
00104 #define RPMCLI_POPT_NOHDRCHK -1031
00105 #define RPMCLI_POPT_NOCONTEXTS -1032
00106 #define RPMCLI_POPT_TARGETPLATFORM -1033
00107
00108
00111
00116 typedef enum rpmQVSources_e {
00117 RPMQV_PACKAGE = 0,
00118 RPMQV_PATH,
00119 RPMQV_ALL,
00120 RPMQV_RPM,
00121 RPMQV_GROUP,
00122 RPMQV_WHATPROVIDES,
00123 RPMQV_WHATREQUIRES,
00124 RPMQV_TRIGGEREDBY,
00125 RPMQV_DBOFFSET,
00126 RPMQV_SPECFILE,
00127 RPMQV_PKGID,
00128 RPMQV_HDRID,
00129 RPMQV_FILEID,
00130 RPMQV_TID,
00131 RPMQV_HDLIST,
00132 RPMQV_FTSWALK,
00133 RPMQV_WHATNEEDS,
00134 RPMQV_SPECSRPM
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
00151 RPMVERIFY_CONTEXTS = (1 << 15),
00152
00153
00154 RPMVERIFY_READLINKFAIL= (1 << 28),
00155 RPMVERIFY_READFAIL = (1 << 29),
00156 RPMVERIFY_LSTATFAIL = (1 << 30),
00157 RPMVERIFY_LGETFILECONFAIL = (1 << 31)
00158 } rpmVerifyAttrs;
00159 #define RPMVERIFY_MD5 RPMVERIFY_FDIGEST
00160 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE)
00161 #define RPMVERIFY_FAILURES \
00162 (RPMVERIFY_LSTATFAIL|RPMVERIFY_READFAIL|RPMVERIFY_READLINKFAIL|RPMVERIFY_LGETFILECONFAIL)
00163
00168 typedef enum rpmQueryFlags_e {
00169
00170 QUERY_FOR_DEFAULT = 0,
00171 QUERY_FDIGEST = (1 << 0),
00172 QUERY_SIZE = (1 << 1),
00173 QUERY_LINKTO = (1 << 2),
00174 QUERY_USER = (1 << 3),
00175 QUERY_GROUP = (1 << 4),
00176 QUERY_MTIME = (1 << 5),
00177 QUERY_MODE = (1 << 6),
00178 QUERY_RDEV = (1 << 7),
00179
00180 QUERY_CONTEXTS = (1 << 15),
00181 QUERY_FILES = (1 << 16),
00182 QUERY_DEPS = (1 << 17),
00183 QUERY_SCRIPT = (1 << 18),
00184 QUERY_DIGEST = (1 << 19),
00185 QUERY_SIGNATURE = (1 << 20),
00186 QUERY_PATCHES = (1 << 21),
00187 QUERY_HDRCHK = (1 << 22),
00188
00189 QUERY_FOR_LIST = (1 << 23),
00190 QUERY_FOR_STATE = (1 << 24),
00191 QUERY_FOR_DOCS = (1 << 25),
00192 QUERY_FOR_CONFIG = (1 << 26),
00193 QUERY_FOR_DUMPFILES = (1 << 27)
00194 } rpmQueryFlags;
00195
00196 #define _QUERY_FOR_BITS \
00197 (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
00198 QUERY_FOR_DUMPFILES)
00199
00203
00204 extern rpmQueryFlags rpmcliQueryFlags;
00205
00210 typedef enum rpmVerifyFlags_e {
00211
00212 VERIFY_DEFAULT = 0,
00213
00214 VERIFY_FDIGEST = (1 << 0),
00215 VERIFY_SIZE = (1 << 1),
00216 VERIFY_LINKTO = (1 << 2),
00217 VERIFY_USER = (1 << 3),
00218 VERIFY_GROUP = (1 << 4),
00219 VERIFY_MTIME = (1 << 5),
00220 VERIFY_MODE = (1 << 6),
00221 VERIFY_RDEV = (1 << 7),
00222
00223 VERIFY_CONTEXTS = (1 << 15),
00224 VERIFY_FILES = (1 << 16),
00225 VERIFY_DEPS = (1 << 17),
00226 VERIFY_SCRIPT = (1 << 18),
00227 VERIFY_DIGEST = (1 << 19),
00228 VERIFY_SIGNATURE = (1 << 20),
00229 VERIFY_PATCHES = (1 << 21),
00230 VERIFY_HDRCHK = (1 << 22),
00231
00232 VERIFY_FOR_LIST = (1 << 23),
00233 VERIFY_FOR_STATE = (1 << 24),
00234 VERIFY_FOR_DOCS = (1 << 25),
00235 VERIFY_FOR_CONFIG = (1 << 26),
00236 VERIFY_FOR_DUMPFILES= (1 << 27)
00237
00238
00239 } rpmVerifyFlags;
00240
00241 #define VERIFY_ATTRS \
00242 ( VERIFY_FDIGEST | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \
00243 VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV | VERIFY_CONTEXTS )
00244 #define VERIFY_ALL \
00245 ( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST |\
00246 VERIFY_SIGNATURE | VERIFY_HDRCHK )
00247
00250 typedef struct rpmQVKArguments_s * QVA_t;
00251
00260 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h)
00261
00262 ;
00263
00272 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg)
00273
00274
00275
00276 ;
00277
00280
00281 extern struct poptOption rpmQVSourcePoptTable[];
00282
00285
00286 extern int specedit;
00287
00290
00291 extern struct poptOption rpmQueryPoptTable[];
00292
00295
00296 extern struct poptOption rpmVerifyPoptTable[];
00297
00309 int rpmcliShowMatches(QVA_t qva, rpmts ts)
00310
00311 ;
00312
00317 void rpmDisplayQueryTags(FILE * fp)
00318
00319 ;
00320
00333 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg)
00334
00335
00336
00337 ;
00338
00347 int showQueryPackage(QVA_t qva, rpmts ts, Header h)
00348
00349 ;
00350
00358 int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_t argv)
00359
00360
00361
00362 ;
00363
00372 int rpmcliQuery(rpmts ts, QVA_t qva, const char ** argv)
00373
00374
00375
00376 ;
00377
00387
00388 int rpmVerifyFile(const rpmts ts, rpmfi fi,
00389 rpmVerifyAttrs * res, rpmVerifyAttrs omitMask)
00390
00391
00392 ;
00393
00394
00402 int showVerifyPackage(QVA_t qva, rpmts ts, Header h)
00403
00404 ;
00405
00414 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn)
00415
00416
00417 ;
00418
00427 int rpmcliVerify(rpmts ts, QVA_t qva, const char ** argv)
00428
00429
00430
00431 ;
00432
00434
00437
00438
00442 typedef enum rpmInstallInterfaceFlags_e {
00443 INSTALL_NONE = 0,
00444 INSTALL_PERCENT = (1 << 0),
00445 INSTALL_HASH = (1 << 1),
00446 INSTALL_NODEPS = (1 << 2),
00447 INSTALL_NOORDER = (1 << 3),
00448 INSTALL_LABEL = (1 << 4),
00449 INSTALL_UPGRADE = (1 << 5),
00450 INSTALL_FRESHEN = (1 << 6),
00451 INSTALL_INSTALL = (1 << 7),
00452 INSTALL_ERASE = (1 << 8),
00453 INSTALL_ALLMATCHES = (1 << 9)
00454 } rpmInstallInterfaceFlags;
00455
00456
00457 extern int rpmcliPackagesTotal;
00458
00459 extern int rpmcliHashesCurrent;
00460
00461 extern int rpmcliHashesTotal;
00462
00463 extern unsigned long long rpmcliProgressCurrent;
00464
00465 extern unsigned long long rpmcliProgressTotal;
00466
00483
00484 void * rpmShowProgress( const void * arg,
00485 const rpmCallbackType what,
00486 const unsigned long long amount,
00487 const unsigned long long total,
00488 fnpyKey key,
00489 void * data)
00490
00491
00492
00493
00494
00495 ;
00496
00505 int rpmInstallSource(rpmts ts, const char * arg,
00506 const char ** specFilePtr,
00507 const char ** cookie)
00508
00509
00510
00511 ;
00512
00521 int rpmInstall(rpmts ts, QVA_t ia, const char ** fileArgv)
00522
00523
00524
00525 ;
00526
00534 int rpmErase(rpmts ts, QVA_t ia, const char ** argv)
00535
00536
00537 ;
00538
00542
00543 typedef struct IDT_s * IDT;
00544 #if !defined(SWIG)
00545 struct IDT_s {
00546 int done;
00547 unsigned int instance;
00548
00549 const char * key;
00550 Header h;
00551 union {
00552 uint_32 u32;
00553 } val;
00554 };
00555 #endif
00556
00557
00561 typedef struct IDTindex_s * IDTX;
00562 #if !defined(SWIG)
00563 struct IDTindex_s {
00564 int delta;
00565 int size;
00566 int alloced;
00567 int nidt;
00568
00569 IDT idt;
00570 };
00571 #endif
00572
00578
00579 IDTX IDTXfree( IDTX idtx)
00580 ;
00581
00586
00587 IDTX IDTXnew(void)
00588 ;
00589
00596
00597 IDTX IDTXgrow( IDTX idtx, int need)
00598 ;
00599
00605
00606 IDTX IDTXsort( IDTX idtx)
00607 ;
00608
00616
00617 IDTX IDTXload(rpmts ts, rpmTag tag, uint_32 rbtid)
00618
00619 ;
00620
00629
00630 IDTX IDTXglob(rpmts ts, const char * globstr, rpmTag tag, uint_32 rbtid)
00631
00632 ;
00633
00641 int rpmRollback(rpmts ts, QVA_t ia, const char ** argv)
00642
00643
00644
00645 ;
00646
00649
00650 extern struct poptOption rpmInstallPoptTable[];
00651
00653
00656
00659
00660 extern struct poptOption rpmDatabasePoptTable[];
00661
00663
00666
00675 rpmRC rpmcliImportPubkey(const rpmts ts,
00676 const unsigned char * pkt, ssize_t pktlen)
00677
00678
00679
00680 ;
00681
00685
00686 #if !defined(SWIG)
00687 typedef enum rpmSignFlags_e {
00688 RPMSIGN_NONE = 0,
00689 RPMSIGN_CHK_SIGNATURE = 'K',
00690 RPMSIGN_NEW_SIGNATURE = 'R',
00691 RPMSIGN_ADD_SIGNATURE = 'A',
00692 RPMSIGN_DEL_SIGNATURE = 'D',
00693 RPMSIGN_IMPORT_PUBKEY = 'I',
00694 } rpmSignFlags;
00695 #endif
00696
00697
00700
00701 extern struct poptOption rpmSignPoptTable[];
00702
00710 int rpmcliSign(rpmts ts, QVA_t qva, const char ** argv)
00711
00712
00713
00714 ;
00715
00721 #if !defined(SWIG)
00722 struct rpmQVKArguments_s {
00723 rpmQVSources qva_source;
00724 int qva_sourceCount;
00725 rpmQueryFlags qva_flags;
00726 rpmfileAttrs qva_fflags;
00727
00728 rpmdbMatchIterator qva_mi;
00729
00730 rpmgi qva_gi;
00731 rpmRC qva_rc;
00733
00734 QVF_t qva_showPackage;
00735 int qva_showOK;
00736 int qva_showFAIL;
00737
00738 QSpecF_t qva_specQuery;
00739
00740 int qva_verbose;
00741
00742 const char * qva_queryFormat;
00743 int sign;
00744 int trust;
00745
00746 const char * passPhrase;
00747
00748 const char * qva_prefix;
00749 char qva_mode;
00759 char qva_char;
00761
00762 rpmdepFlags depFlags;
00763 rpmtransFlags transFlags;
00764 rpmprobFilterFlags probFilter;
00765 rpmInstallInterfaceFlags installInterfaceFlags;
00766 uint_32 arbtid;
00767 uint_32 rbtid;
00768 uint_32 *rbtidExcludes;
00769 int numrbtidExcludes;
00770 int numRelocations;
00771 int noDeps;
00772 int incldocs;
00773 int no_rollback_links;
00774
00775 rpmRelocation relocations;
00776
00777
00778 int init;
00779 int rebuild;
00780 int verify;
00782
00783 int (*rbCheck) (rpmts ts);
00784 int (*rbOrder) (rpmts ts);
00785 int (*rbRun) (rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet);
00786 };
00787 #endif
00788
00791
00792 extern struct rpmQVKArguments_s rpmQVKArgs;
00793
00796
00797 extern struct rpmQVKArguments_s rpmIArgs;
00798
00801
00802 extern struct rpmQVKArguments_s rpmDBArgs;
00803
00804
00807
00811 struct rpmBuildArguments_s {
00812 rpmQueryFlags qva_flags;
00813 int buildAmount;
00814
00815 const char * passPhrase;
00816
00817 const char * cookie;
00818 int force;
00819 int noBuild;
00820 int noDeps;
00821 int noLang;
00822 int shortCircuit;
00823 int sign;
00824 int useCatalog;
00825 char buildMode;
00826 char buildChar;
00827
00828 const char * rootdir;
00829 };
00830
00833 typedef struct rpmBuildArguments_s * BTA_t;
00834
00837
00838 extern struct rpmBuildArguments_s rpmBTArgs;
00839
00842
00843 extern struct poptOption rpmBuildPoptTable[];
00844
00847 #ifdef __cplusplus
00848 }
00849 #endif
00850
00851 #endif