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 ;
00565
00569
00570 typedef struct IDT_s {
00571 unsigned int instance;
00572
00573 const char * key;
00574 Header h;
00575 union {
00576 uint_32 u32;
00577 } val;
00578 } * IDT;
00579
00580
00584 typedef struct IDTindex_s {
00585 int delta;
00586 int size;
00587 int alloced;
00588 int nidt;
00589
00590 IDT idt;
00591 } * IDTX;
00592
00598
00599 IDTX IDTXfree( IDTX idtx)
00600 ;
00601
00606
00607 IDTX IDTXnew(void)
00608 ;
00609
00616
00617 IDTX IDTXgrow( IDTX idtx, int need)
00618 ;
00619
00625
00626 IDTX IDTXsort( IDTX idtx)
00627 ;
00628
00635
00636 IDTX IDTXload(rpmts ts, rpmTag tag)
00637
00638 ;
00639
00647
00648 IDTX IDTXglob(rpmts ts, const char * globstr, rpmTag tag)
00649
00650 ;
00651
00659 int rpmRollback(rpmts ts, struct rpmInstallArguments_s * ia,
00660 const char ** argv)
00661
00662
00663
00664 ;
00665
00668
00669 extern struct rpmInstallArguments_s rpmIArgs;
00670
00673
00674 extern struct poptOption rpmInstallPoptTable[];
00675
00677
00680
00681
00685 struct rpmDatabaseArguments_s {
00686 int init;
00687 int rebuild;
00688 int verify;
00689 };
00690
00693
00694 extern struct rpmDatabaseArguments_s rpmDBArgs;
00695
00698
00699 extern struct poptOption rpmDatabasePoptTable[];
00700
00702
00705
00714 int rpmcliImportPubkey(const rpmts ts,
00715 const unsigned char * pkt, ssize_t pktlen)
00716
00717
00718
00719 ;
00720
00724
00725 typedef enum rpmSignFlags_e {
00726 RPMSIGN_NONE = 0,
00727 RPMSIGN_CHK_SIGNATURE = 'K',
00728 RPMSIGN_NEW_SIGNATURE = 'R',
00729 RPMSIGN_ADD_SIGNATURE = 'A',
00730 RPMSIGN_IMPORT_PUBKEY = 'I',
00731 } rpmSignFlags;
00732
00733
00736
00737 extern struct poptOption rpmSignPoptTable[];
00738
00746 int rpmcliSign(rpmts ts, QVA_t qva, const char ** argv)
00747
00748
00749
00750 ;
00751
00754 #ifdef __cplusplus
00755 }
00756 #endif
00757
00758 #endif