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 #define RPMCLI_POPT_NOCONTEXTS -1032
00085
00086
00089
00094 typedef enum rpmQVSources_e {
00095 RPMQV_PACKAGE = 0,
00096 RPMQV_PATH,
00097 RPMQV_ALL,
00098 RPMQV_RPM,
00099 RPMQV_GROUP,
00100 RPMQV_WHATPROVIDES,
00101 RPMQV_WHATREQUIRES,
00102 RPMQV_TRIGGEREDBY,
00103 RPMQV_DBOFFSET,
00104 RPMQV_SPECFILE,
00105 RPMQV_PKGID,
00106 RPMQV_HDRID,
00107 RPMQV_FILEID,
00108 RPMQV_TID
00109 } rpmQVSources;
00110
00114 typedef enum rpmVerifyAttrs_e {
00115 RPMVERIFY_NONE = 0,
00116 RPMVERIFY_MD5 = (1 << 0),
00117 RPMVERIFY_FILESIZE = (1 << 1),
00118 RPMVERIFY_LINKTO = (1 << 2),
00119 RPMVERIFY_USER = (1 << 3),
00120 RPMVERIFY_GROUP = (1 << 4),
00121 RPMVERIFY_MTIME = (1 << 5),
00122 RPMVERIFY_MODE = (1 << 6),
00123 RPMVERIFY_RDEV = (1 << 7),
00124
00125 RPMVERIFY_CONTEXTS = (1 << 15),
00126
00127
00128 RPMVERIFY_READLINKFAIL= (1 << 28),
00129 RPMVERIFY_READFAIL = (1 << 29),
00130 RPMVERIFY_LSTATFAIL = (1 << 30),
00131 RPMVERIFY_LGETFILECONFAIL = (1 << 31)
00132 } rpmVerifyAttrs;
00133 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE)
00134 #define RPMVERIFY_FAILURES \
00135 (RPMVERIFY_LSTATFAIL|RPMVERIFY_READFAIL|RPMVERIFY_READLINKFAIL|RPMVERIFY_LGETFILECONFAIL)
00136
00141 typedef enum rpmQueryFlags_e {
00142
00143 QUERY_FOR_DEFAULT = 0,
00144 QUERY_MD5 = (1 << 0),
00145 QUERY_SIZE = (1 << 1),
00146 QUERY_LINKTO = (1 << 2),
00147 QUERY_USER = (1 << 3),
00148 QUERY_GROUP = (1 << 4),
00149 QUERY_MTIME = (1 << 5),
00150 QUERY_MODE = (1 << 6),
00151 QUERY_RDEV = (1 << 7),
00152
00153 QUERY_CONTEXTS = (1 << 15),
00154 QUERY_FILES = (1 << 16),
00155 QUERY_DEPS = (1 << 17),
00156 QUERY_SCRIPT = (1 << 18),
00157 QUERY_DIGEST = (1 << 19),
00158 QUERY_SIGNATURE = (1 << 20),
00159 QUERY_PATCHES = (1 << 21),
00160 QUERY_HDRCHK = (1 << 22),
00161
00162 QUERY_FOR_LIST = (1 << 23),
00163 QUERY_FOR_STATE = (1 << 24),
00164 QUERY_FOR_DOCS = (1 << 25),
00165 QUERY_FOR_CONFIG = (1 << 26),
00166 QUERY_FOR_DUMPFILES = (1 << 27)
00167 } rpmQueryFlags;
00168
00169 #define _QUERY_FOR_BITS \
00170 (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
00171 QUERY_FOR_DUMPFILES)
00172
00176
00177 extern rpmQueryFlags rpmcliQueryFlags;
00178
00183 typedef enum rpmVerifyFlags_e {
00184
00185 VERIFY_DEFAULT = 0,
00186
00187 VERIFY_MD5 = (1 << 0),
00188 VERIFY_SIZE = (1 << 1),
00189 VERIFY_LINKTO = (1 << 2),
00190 VERIFY_USER = (1 << 3),
00191 VERIFY_GROUP = (1 << 4),
00192 VERIFY_MTIME = (1 << 5),
00193 VERIFY_MODE = (1 << 6),
00194 VERIFY_RDEV = (1 << 7),
00195
00196 VERIFY_CONTEXTS = (1 << 15),
00197 VERIFY_FILES = (1 << 16),
00198 VERIFY_DEPS = (1 << 17),
00199 VERIFY_SCRIPT = (1 << 18),
00200 VERIFY_DIGEST = (1 << 19),
00201 VERIFY_SIGNATURE = (1 << 20),
00202 VERIFY_PATCHES = (1 << 21),
00203 VERIFY_HDRCHK = (1 << 22),
00204
00205 VERIFY_FOR_LIST = (1 << 23),
00206 VERIFY_FOR_STATE = (1 << 24),
00207 VERIFY_FOR_DOCS = (1 << 25),
00208 VERIFY_FOR_CONFIG = (1 << 26),
00209 VERIFY_FOR_DUMPFILES= (1 << 27)
00210
00211
00212 } rpmVerifyFlags;
00213
00214 #define VERIFY_ATTRS \
00215 ( VERIFY_MD5 | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \
00216 VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV | VERIFY_CONTEXTS )
00217 #define VERIFY_ALL \
00218 ( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST |\
00219 VERIFY_SIGNATURE | VERIFY_HDRCHK )
00220
00223 typedef struct rpmQVKArguments_s * QVA_t;
00224
00233 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h)
00234
00235 ;
00236
00245 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg)
00246
00247
00248
00249 ;
00250
00254 struct rpmQVKArguments_s {
00255 rpmQVSources qva_source;
00256 int qva_sourceCount;
00257 rpmQueryFlags qva_flags;
00258 rpmfileAttrs qva_fflags;
00259
00260 rpmdbMatchIterator qva_mi;
00261
00262 QVF_t qva_showPackage;
00263
00264 QSpecF_t qva_specQuery;
00265
00266 int qva_verbose;
00267
00268 const char * qva_queryFormat;
00269 int sign;
00270
00271 const char * passPhrase;
00272
00273 const char * qva_prefix;
00274 char qva_mode;
00284 char qva_char;
00285 };
00286
00289
00290 extern struct rpmQVKArguments_s rpmQVKArgs;
00291
00294
00295 extern struct poptOption rpmQVSourcePoptTable[];
00296
00299
00300 extern int specedit;
00301
00304
00305 extern struct poptOption rpmQueryPoptTable[];
00306
00309
00310 extern struct poptOption rpmVerifyPoptTable[];
00311
00323 int rpmcliShowMatches(QVA_t qva, rpmts ts)
00324
00325 ;
00326
00331 void rpmDisplayQueryTags(FILE * fp)
00332
00333 ;
00334
00347 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg)
00348
00349
00350
00351 ;
00352
00361 int showQueryPackage(QVA_t qva, rpmts ts, Header h)
00362
00363 ;
00364
00373 int rpmcliQuery(rpmts ts, QVA_t qva, const char ** argv)
00374
00375
00376
00377 ;
00378
00388
00389 int rpmVerifyFile(const rpmts ts, rpmfi fi,
00390 rpmVerifyAttrs * res, rpmVerifyAttrs omitMask)
00391
00392
00393 ;
00394
00395
00403 int showVerifyPackage(QVA_t qva, rpmts ts, Header h)
00404
00405 ;
00406
00415 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn)
00416
00417
00418 ;
00419
00428 int rpmcliVerify(rpmts ts, QVA_t qva, const char ** argv)
00429
00430
00431
00432 ;
00433
00435
00438
00442 struct rpmBuildArguments_s {
00443 rpmQueryFlags qva_flags;
00444 int buildAmount;
00445
00446 const char * buildRootOverride;
00447
00448 char * targets;
00449
00450 const char * passPhrase;
00451
00452 const char * cookie;
00453 int force;
00454 int noBuild;
00455 int noDeps;
00456 int noLang;
00457 int shortCircuit;
00458 int sign;
00459 int useCatalog;
00460 char buildMode;
00461 char buildChar;
00462
00463 const char * rootdir;
00464 };
00465
00468 typedef struct rpmBuildArguments_s * BTA_t;
00469
00472
00473 extern struct rpmBuildArguments_s rpmBTArgs;
00474
00477
00478 extern struct poptOption rpmBuildPoptTable[];
00479
00481
00484
00485
00486
00487 extern int rpmcliPackagesTotal;
00488
00489 extern int rpmcliHashesCurrent;
00490
00491 extern int rpmcliHashesTotal;
00492
00493 extern int rpmcliProgressCurrent;
00494
00495 extern int rpmcliProgressTotal;
00496
00511
00512 void * rpmShowProgress( const void * arg,
00513 const rpmCallbackType what,
00514 const unsigned long amount,
00515 const unsigned long total,
00516 fnpyKey key,
00517 void * data)
00518
00519
00520
00521
00522
00523 ;
00524
00533 int rpmInstallSource(rpmts ts, const char * arg,
00534 const char ** specFilePtr,
00535 const char ** cookie)
00536
00537
00538
00539 ;
00540
00544 struct rpmInstallArguments_s {
00545 rpmtransFlags transFlags;
00546 rpmprobFilterFlags probFilter;
00547 rpmInstallInterfaceFlags installInterfaceFlags;
00548 rpmEraseInterfaceFlags eraseInterfaceFlags;
00549 rpmQueryFlags qva_flags;
00550 uint_32 rbtid;
00551 int numRelocations;
00552 int noDeps;
00553 int incldocs;
00554
00555 rpmRelocation * relocations;
00556
00557 const char * prefix;
00558
00559 const char * rootdir;
00560 };
00561
00569 int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia,
00570 const char ** fileArgv)
00571
00572
00573
00574 ;
00575
00583 int rpmErase(rpmts ts, struct rpmInstallArguments_s * ia,
00584 const char ** argv)
00585
00586
00587 ;
00588
00592
00593 typedef struct IDT_s {
00594 unsigned int instance;
00595
00596 const char * key;
00597 Header h;
00598 union {
00599 uint_32 u32;
00600 } val;
00601 } * IDT;
00602
00603
00607 typedef struct IDTindex_s {
00608 int delta;
00609 int size;
00610 int alloced;
00611 int nidt;
00612
00613 IDT idt;
00614 } * IDTX;
00615
00621
00622 IDTX IDTXfree( IDTX idtx)
00623 ;
00624
00629
00630 IDTX IDTXnew(void)
00631 ;
00632
00639
00640 IDTX IDTXgrow( IDTX idtx, int need)
00641 ;
00642
00648
00649 IDTX IDTXsort( IDTX idtx)
00650 ;
00651
00658
00659 IDTX IDTXload(rpmts ts, rpmTag tag)
00660
00661 ;
00662
00670
00671 IDTX IDTXglob(rpmts ts, const char * globstr, rpmTag tag)
00672
00673 ;
00674
00682 int rpmRollback(rpmts ts, struct rpmInstallArguments_s * ia,
00683 const char ** argv)
00684
00685
00686
00687 ;
00688
00691
00692 extern struct rpmInstallArguments_s rpmIArgs;
00693
00696
00697 extern struct poptOption rpmInstallPoptTable[];
00698
00700
00703
00704
00708 struct rpmDatabaseArguments_s {
00709 int init;
00710 int rebuild;
00711 int verify;
00712 };
00713
00716
00717 extern struct rpmDatabaseArguments_s rpmDBArgs;
00718
00721
00722 extern struct poptOption rpmDatabasePoptTable[];
00723
00725
00728
00737 rpmRC rpmcliImportPubkey(const rpmts ts,
00738 const unsigned char * pkt, ssize_t pktlen)
00739
00740
00741
00742 ;
00743
00747
00748 typedef enum rpmSignFlags_e {
00749 RPMSIGN_NONE = 0,
00750 RPMSIGN_CHK_SIGNATURE = 'K',
00751 RPMSIGN_NEW_SIGNATURE = 'R',
00752 RPMSIGN_ADD_SIGNATURE = 'A',
00753 RPMSIGN_IMPORT_PUBKEY = 'I',
00754 } rpmSignFlags;
00755
00756
00759
00760 extern struct poptOption rpmSignPoptTable[];
00761
00769 int rpmcliSign(rpmts ts, QVA_t qva, const char ** argv)
00770
00771
00772
00773 ;
00774
00777 #ifdef __cplusplus
00778 }
00779 #endif
00780
00781 #endif