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
00227 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h)
00228
00229 ;
00230
00234 struct rpmQVKArguments_s {
00235 rpmQVSources qva_source;
00236 int qva_sourceCount;
00237 rpmQueryFlags qva_flags;
00238 rpmfileAttrs qva_fflags;
00239
00240 rpmdbMatchIterator qva_mi;
00241
00242 QVF_t qva_showPackage;
00243
00244 int qva_verbose;
00245
00246 const char * qva_queryFormat;
00247 int sign;
00248
00249 const char * passPhrase;
00250
00251 const char * qva_prefix;
00252 char qva_mode;
00262 char qva_char;
00263 };
00264
00267
00268 extern struct rpmQVKArguments_s rpmQVKArgs;
00269
00272
00273 extern struct poptOption rpmQVSourcePoptTable[];
00274
00277
00278 extern int specedit;
00279
00282
00283 extern struct poptOption rpmQueryPoptTable[];
00284
00287
00288 extern struct poptOption rpmVerifyPoptTable[];
00289
00301 int rpmcliShowMatches(QVA_t qva, rpmts ts)
00302
00303 ;
00304
00309 void rpmDisplayQueryTags(FILE * fp)
00310
00311 ;
00312
00325 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg)
00326
00327
00328
00329 ;
00330
00339 int showQueryPackage(QVA_t qva, rpmts ts, Header h)
00340
00341 ;
00342
00351 int rpmcliQuery(rpmts ts, QVA_t qva, const char ** argv)
00352
00353
00354
00355 ;
00356
00366
00367 int rpmVerifyFile(const rpmts ts, rpmfi fi,
00368 rpmVerifyAttrs * res, rpmVerifyAttrs omitMask)
00369
00370
00371 ;
00372
00373
00381 int showVerifyPackage(QVA_t qva, rpmts ts, Header h)
00382
00383 ;
00384
00393 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn)
00394
00395
00396 ;
00397
00406 int rpmcliVerify(rpmts ts, QVA_t qva, const char ** argv)
00407
00408
00409
00410 ;
00411
00413
00416
00420 struct rpmBuildArguments_s {
00421 rpmQueryFlags qva_flags;
00422 int buildAmount;
00423
00424 const char * buildRootOverride;
00425
00426 char * targets;
00427
00428 const char * passPhrase;
00429
00430 const char * cookie;
00431 int force;
00432 int noBuild;
00433 int noDeps;
00434 int noLang;
00435 int shortCircuit;
00436 int sign;
00437 int useCatalog;
00438 char buildMode;
00439 char buildChar;
00440
00441 const char * rootdir;
00442 };
00443
00446 typedef struct rpmBuildArguments_s * BTA_t;
00447
00450
00451 extern struct rpmBuildArguments_s rpmBTArgs;
00452
00455
00456 extern struct poptOption rpmBuildPoptTable[];
00457
00459
00462
00463
00464
00465 extern int rpmcliPackagesTotal;
00466
00467 extern int rpmcliHashesCurrent;
00468
00469 extern int rpmcliHashesTotal;
00470
00471 extern int rpmcliProgressCurrent;
00472
00473 extern int rpmcliProgressTotal;
00474
00489 void * rpmShowProgress( const void * arg,
00490 const rpmCallbackType what,
00491 const unsigned long amount,
00492 const unsigned long total,
00493 fnpyKey key,
00494 void * data)
00495
00496
00497
00498
00499
00500 ;
00501
00510 int rpmInstallSource(rpmts ts, const char * arg,
00511 const char ** specFilePtr,
00512 const char ** cookie)
00513
00514
00515
00516 ;
00517
00521 struct rpmInstallArguments_s {
00522 rpmtransFlags transFlags;
00523 rpmprobFilterFlags probFilter;
00524 rpmInstallInterfaceFlags installInterfaceFlags;
00525 rpmEraseInterfaceFlags eraseInterfaceFlags;
00526 rpmQueryFlags qva_flags;
00527 uint_32 rbtid;
00528 int numRelocations;
00529 int noDeps;
00530 int incldocs;
00531
00532 rpmRelocation * relocations;
00533
00534 const char * prefix;
00535
00536 const char * rootdir;
00537 };
00538
00546 int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia,
00547 const char ** fileArgv)
00548
00549
00550
00551 ;
00552
00560 int rpmErase(rpmts ts, const struct rpmInstallArguments_s * ia,
00561 const char ** argv)
00562
00563 ;
00564
00568
00569 typedef struct IDT_s {
00570 unsigned int instance;
00571
00572 const char * key;
00573 Header h;
00574 union {
00575 uint_32 u32;
00576 } val;
00577 } * IDT;
00578
00579
00583 typedef struct IDTindex_s {
00584 int delta;
00585 int size;
00586 int alloced;
00587 int nidt;
00588
00589 IDT idt;
00590 } * IDTX;
00591
00597
00598 IDTX IDTXfree( IDTX idtx)
00599 ;
00600
00605
00606 IDTX IDTXnew(void)
00607 ;
00608
00615
00616 IDTX IDTXgrow( IDTX idtx, int need)
00617 ;
00618
00624
00625 IDTX IDTXsort( IDTX idtx)
00626 ;
00627
00634
00635 IDTX IDTXload(rpmts ts, rpmTag tag)
00636
00637 ;
00638
00646
00647 IDTX IDTXglob(rpmts ts, const char * globstr, rpmTag tag)
00648
00649 ;
00650
00658 int rpmRollback(rpmts ts, struct rpmInstallArguments_s * ia,
00659 const char ** argv)
00660
00661
00662
00663 ;
00664
00667
00668 extern struct rpmInstallArguments_s rpmIArgs;
00669
00672
00673 extern struct poptOption rpmInstallPoptTable[];
00674
00676
00679
00680
00684 struct rpmDatabaseArguments_s {
00685 int init;
00686 int rebuild;
00687 int verify;
00688 };
00689
00692
00693 extern struct rpmDatabaseArguments_s rpmDBArgs;
00694
00697
00698 extern struct poptOption rpmDatabasePoptTable[];
00699
00701
00704
00713 int rpmcliImportPubkey(const rpmts ts,
00714 const unsigned char * pkt, ssize_t pktlen)
00715
00716
00717
00718 ;
00719
00723
00724 typedef enum rpmSignFlags_e {
00725 RPMSIGN_NONE = 0,
00726 RPMSIGN_CHK_SIGNATURE = 'K',
00727 RPMSIGN_NEW_SIGNATURE = 'R',
00728 RPMSIGN_ADD_SIGNATURE = 'A',
00729 RPMSIGN_IMPORT_PUBKEY = 'I',
00730 } rpmSignFlags;
00731
00732
00735
00736 extern struct poptOption rpmSignPoptTable[];
00737
00745 int rpmcliSign(rpmts ts, QVA_t qva, const char ** argv)
00746
00747
00748
00749 ;
00750
00753 #ifdef __cplusplus
00754 }
00755 #endif
00756
00757 #endif