00001 #ifndef H_RPMCLI
00002 #define H_RPMCLI
00003
00008 #include "rpmlib.h"
00009 #include "rpmurl.h"
00010 #include "rpmmacro.h"
00011
00015
00016
00017 extern int _noDirTokens;
00018
00019
00020 #ifdef __cplusplus
00021 extern "C" {
00022 #endif
00023
00027
00028 extern struct poptOption rpmcliAllPoptTable[];
00029
00030
00031 extern const char * rpmcliPipeOutput;
00032
00033
00034 extern const char * rpmcliRcfile;
00035
00036
00037 extern const char * rpmcliRootDir;
00038
00046
00047 poptContext
00048 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable)
00049
00050
00051
00052 ;
00053
00058
00059 void rpmcliConfigured(void)
00060
00061
00062
00063 ;
00064
00070 poptContext
00071 rpmcliFini( poptContext optCon)
00072 ;
00073
00077 #define RPMCLI_POPT_NODEPS -1025
00078 #define RPMCLI_POPT_FORCE -1026
00079 #define RPMCLI_POPT_NOMD5 -1027
00080 #define RPMCLI_POPT_NOSCRIPTS -1028
00081 #define RPMCLI_POPT_NOSIGNATURE -1029
00082 #define RPMCLI_POPT_NODIGEST -1030
00083 #define RPMCLI_POPT_NOHDRCHK -1031
00084
00085
00088
00093 typedef enum rpmQVSources_e {
00094 RPMQV_PACKAGE = 0,
00095 RPMQV_PATH,
00096 RPMQV_ALL,
00097 RPMQV_RPM,
00098 RPMQV_GROUP,
00099 RPMQV_WHATPROVIDES,
00100 RPMQV_WHATREQUIRES,
00101 RPMQV_TRIGGEREDBY,
00102 RPMQV_DBOFFSET,
00103 RPMQV_SPECFILE,
00104 RPMQV_PKGID,
00105 RPMQV_HDRID,
00106 RPMQV_FILEID,
00107 RPMQV_TID
00108 } rpmQVSources;
00109
00113 typedef enum rpmVerifyAttrs_e {
00114 RPMVERIFY_NONE = 0,
00115 RPMVERIFY_MD5 = (1 << 0),
00116 RPMVERIFY_FILESIZE = (1 << 1),
00117 RPMVERIFY_LINKTO = (1 << 2),
00118 RPMVERIFY_USER = (1 << 3),
00119 RPMVERIFY_GROUP = (1 << 4),
00120 RPMVERIFY_MTIME = (1 << 5),
00121 RPMVERIFY_MODE = (1 << 6),
00122 RPMVERIFY_RDEV = (1 << 7),
00123
00124
00125
00126
00127 RPMVERIFY_READLINKFAIL= (1 << 28),
00128 RPMVERIFY_READFAIL = (1 << 29),
00129 RPMVERIFY_LSTATFAIL = (1 << 30)
00130
00131 } rpmVerifyAttrs;
00132 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE)
00133
00138 typedef enum rpmQueryFlags_e {
00139
00140 QUERY_FOR_DEFAULT = 0,
00141 QUERY_MD5 = (1 << 0),
00142 QUERY_SIZE = (1 << 1),
00143 QUERY_LINKTO = (1 << 2),
00144 QUERY_USER = (1 << 3),
00145 QUERY_GROUP = (1 << 4),
00146 QUERY_MTIME = (1 << 5),
00147 QUERY_MODE = (1 << 6),
00148 QUERY_RDEV = (1 << 7),
00149
00150 QUERY_FILES = (1 << 16),
00151 QUERY_DEPS = (1 << 17),
00152 QUERY_SCRIPT = (1 << 18),
00153 QUERY_DIGEST = (1 << 19),
00154 QUERY_SIGNATURE = (1 << 20),
00155 QUERY_PATCHES = (1 << 21),
00156 QUERY_HDRCHK = (1 << 22),
00157
00158 QUERY_FOR_LIST = (1 << 23),
00159 QUERY_FOR_STATE = (1 << 24),
00160 QUERY_FOR_DOCS = (1 << 25),
00161 QUERY_FOR_CONFIG = (1 << 26),
00162 QUERY_FOR_DUMPFILES = (1 << 27)
00163 } rpmQueryFlags;
00164
00165 #define _QUERY_FOR_BITS \
00166 (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
00167 QUERY_FOR_DUMPFILES)
00168
00172
00173 extern rpmQueryFlags rpmcliQueryFlags;
00174
00179 typedef enum rpmVerifyFlags_e {
00180
00181 VERIFY_DEFAULT = 0,
00182
00183 VERIFY_MD5 = (1 << 0),
00184 VERIFY_SIZE = (1 << 1),
00185 VERIFY_LINKTO = (1 << 2),
00186 VERIFY_USER = (1 << 3),
00187 VERIFY_GROUP = (1 << 4),
00188 VERIFY_MTIME = (1 << 5),
00189 VERIFY_MODE = (1 << 6),
00190 VERIFY_RDEV = (1 << 7),
00191
00192 VERIFY_FILES = (1 << 16),
00193 VERIFY_DEPS = (1 << 17),
00194 VERIFY_SCRIPT = (1 << 18),
00195 VERIFY_DIGEST = (1 << 19),
00196 VERIFY_SIGNATURE = (1 << 20),
00197 VERIFY_PATCHES = (1 << 21),
00198 VERIFY_HDRCHK = (1 << 22),
00199
00200 VERIFY_FOR_LIST = (1 << 23),
00201 VERIFY_FOR_STATE = (1 << 24),
00202 VERIFY_FOR_DOCS = (1 << 25),
00203 VERIFY_FOR_CONFIG = (1 << 26),
00204 VERIFY_FOR_DUMPFILES= (1 << 27)
00205
00206
00207 } rpmVerifyFlags;
00208
00209 #define VERIFY_ATTRS \
00210 ( VERIFY_MD5 | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \
00211 VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV )
00212 #define VERIFY_ALL \
00213 ( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST |\
00214 VERIFY_SIGNATURE | VERIFY_HDRCHK )
00215
00218 typedef struct rpmQVKArguments_s * QVA_t;
00219
00228 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h)
00229
00230 ;
00231
00240 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg)
00241
00242
00243
00244 ;
00245
00249 struct rpmQVKArguments_s {
00250 rpmQVSources qva_source;
00251 int qva_sourceCount;
00252 rpmQueryFlags qva_flags;
00253 rpmfileAttrs qva_fflags;
00254
00255 rpmdbMatchIterator qva_mi;
00256
00257 QVF_t qva_showPackage;
00258
00259 QSpecF_t qva_specQuery;
00260
00261 int qva_verbose;
00262
00263 const char * qva_queryFormat;
00264 int sign;
00265
00266 const char * passPhrase;
00267
00268 const char * qva_prefix;
00269 char qva_mode;
00279 char qva_char;
00280 };
00281
00284
00285 extern struct rpmQVKArguments_s rpmQVKArgs;
00286
00289
00290 extern struct poptOption rpmQVSourcePoptTable[];
00291
00294
00295 extern int specedit;
00296
00299
00300 extern struct poptOption rpmQueryPoptTable[];
00301
00304
00305 extern struct poptOption rpmVerifyPoptTable[];
00306
00318 int rpmcliShowMatches(QVA_t qva, rpmts ts)
00319
00320 ;
00321
00326 void rpmDisplayQueryTags(FILE * fp)
00327
00328 ;
00329
00342 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg)
00343
00344
00345
00346 ;
00347
00356 int showQueryPackage(QVA_t qva, rpmts ts, Header h)
00357
00358 ;
00359
00368 int rpmcliQuery(rpmts ts, QVA_t qva, const char ** argv)
00369
00370
00371
00372 ;
00373
00383
00384 int rpmVerifyFile(const rpmts ts, rpmfi fi,
00385 rpmVerifyAttrs * res, rpmVerifyAttrs omitMask)
00386
00387
00388 ;
00389
00390
00398 int showVerifyPackage(QVA_t qva, rpmts ts, Header h)
00399
00400 ;
00401
00410 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn)
00411
00412
00413 ;
00414
00423 int rpmcliVerify(rpmts ts, QVA_t qva, const char ** argv)
00424
00425
00426
00427 ;
00428
00430
00433
00437 struct rpmBuildArguments_s {
00438 rpmQueryFlags qva_flags;
00439 int buildAmount;
00440
00441 const char * buildRootOverride;
00442
00443 char * targets;
00444
00445 const char * passPhrase;
00446
00447 const char * cookie;
00448 int force;
00449 int noBuild;
00450 int noDeps;
00451 int noLang;
00452 int shortCircuit;
00453 int sign;
00454 int useCatalog;
00455 char buildMode;
00456 char buildChar;
00457
00458 const char * rootdir;
00459 };
00460
00463 typedef struct rpmBuildArguments_s * BTA_t;
00464
00467
00468 extern struct rpmBuildArguments_s rpmBTArgs;
00469
00472
00473 extern struct poptOption rpmBuildPoptTable[];
00474
00476
00479
00480
00481
00482 extern int rpmcliPackagesTotal;
00483
00484 extern int rpmcliHashesCurrent;
00485
00486 extern int rpmcliHashesTotal;
00487
00488 extern int rpmcliProgressCurrent;
00489
00490 extern int rpmcliProgressTotal;
00491
00506
00507 void * rpmShowProgress( const void * arg,
00508 const rpmCallbackType what,
00509 const unsigned long amount,
00510 const unsigned long total,
00511 fnpyKey key,
00512 void * data)
00513
00514
00515
00516
00517
00518 ;
00519
00528 int rpmInstallSource(rpmts ts, const char * arg,
00529 const char ** specFilePtr,
00530 const char ** cookie)
00531
00532
00533
00534 ;
00535
00539 struct rpmInstallArguments_s {
00540 rpmtransFlags transFlags;
00541 rpmprobFilterFlags probFilter;
00542 rpmInstallInterfaceFlags installInterfaceFlags;
00543 rpmEraseInterfaceFlags eraseInterfaceFlags;
00544 rpmQueryFlags qva_flags;
00545 uint_32 rbtid;
00546 int numRelocations;
00547 int noDeps;
00548 int incldocs;
00549
00550 rpmRelocation * relocations;
00551
00552 const char * prefix;
00553
00554 const char * rootdir;
00555 };
00556
00564 int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia,
00565 const char ** fileArgv)
00566
00567
00568
00569 ;
00570
00578 int rpmErase(rpmts ts, struct rpmInstallArguments_s * ia,
00579 const char ** argv)
00580
00581
00582 ;
00583
00587
00588 typedef struct IDT_s {
00589 unsigned int instance;
00590
00591 const char * key;
00592 Header h;
00593 union {
00594 uint_32 u32;
00595 } val;
00596 } * IDT;
00597
00598
00602 typedef struct IDTindex_s {
00603 int delta;
00604 int size;
00605 int alloced;
00606 int nidt;
00607
00608 IDT idt;
00609 } * IDTX;
00610
00616
00617 IDTX IDTXfree( IDTX idtx)
00618 ;
00619
00624
00625 IDTX IDTXnew(void)
00626 ;
00627
00634
00635 IDTX IDTXgrow( IDTX idtx, int need)
00636 ;
00637
00643
00644 IDTX IDTXsort( IDTX idtx)
00645 ;
00646
00653
00654 IDTX IDTXload(rpmts ts, rpmTag tag)
00655
00656 ;
00657
00665
00666 IDTX IDTXglob(rpmts ts, const char * globstr, rpmTag tag)
00667
00668 ;
00669
00677 int rpmRollback(rpmts ts, struct rpmInstallArguments_s * ia,
00678 const char ** argv)
00679
00680
00681
00682 ;
00683
00686
00687 extern struct rpmInstallArguments_s rpmIArgs;
00688
00691
00692 extern struct poptOption rpmInstallPoptTable[];
00693
00695
00698
00699
00703 struct rpmDatabaseArguments_s {
00704 int init;
00705 int rebuild;
00706 int verify;
00707 };
00708
00711
00712 extern struct rpmDatabaseArguments_s rpmDBArgs;
00713
00716
00717 extern struct poptOption rpmDatabasePoptTable[];
00718
00720
00723
00732 int rpmcliImportPubkey(const rpmts ts,
00733 const unsigned char * pkt, ssize_t pktlen)
00734
00735
00736
00737 ;
00738
00742
00743 typedef enum rpmSignFlags_e {
00744 RPMSIGN_NONE = 0,
00745 RPMSIGN_CHK_SIGNATURE = 'K',
00746 RPMSIGN_NEW_SIGNATURE = 'R',
00747 RPMSIGN_ADD_SIGNATURE = 'A',
00748 RPMSIGN_IMPORT_PUBKEY = 'I',
00749 } rpmSignFlags;
00750
00751
00754
00755 extern struct poptOption rpmSignPoptTable[];
00756
00764 int rpmcliSign(rpmts ts, QVA_t qva, const char ** argv)
00765
00766
00767
00768 ;
00769
00772 #ifdef __cplusplus
00773 }
00774 #endif
00775
00776 #endif