00001 #ifndef H_RPMCLI
00002 #define H_RPMCLI
00003
00008 #include "popt.h"
00009 #include "argv.h"
00010 #include "rpmcb.h"
00011 #include "rpmmacro.h"
00012 #include "rpmurl.h"
00013 #include "rpmlib.h"
00014 #include "rpmps.h"
00015 #include "rpmte.h"
00016 #include "rpmts.h"
00017
00021
00022
00023 extern int _noDirTokens;
00024
00025
00026 #ifdef __cplusplus
00027 extern "C" {
00028 #endif
00029
00033
00034 extern struct poptOption rpmcliAllPoptTable[];
00035
00036
00037 extern int ftsOpts;
00038
00039
00040 extern struct poptOption rpmcliFtsPoptTable[];
00041
00042
00043 extern int global_depFlags;
00044
00045
00046 extern struct poptOption rpmcliDepFlagsPoptTable[];
00047
00048
00049 extern const char * rpmcliPipeOutput;
00050
00051
00052 extern const char * rpmcliRootDir;
00053
00054
00055 extern const char * rpmcliTargets;
00056
00057
00065
00066 poptContext
00067 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable)
00068
00069
00070
00071 ;
00072
00077
00078 void rpmcliConfigured(void)
00079
00080
00081
00082 ;
00083
00089 poptContext
00090 rpmcliFini( poptContext optCon)
00091
00092
00093
00094 ;
00095
00099 #define RPMCLI_POPT_NODEPS -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 RPMQV_SOURCEPKGID
00136 } rpmQVSources;
00137
00141 typedef enum rpmVerifyAttrs_e {
00142 RPMVERIFY_NONE = 0,
00143 RPMVERIFY_FDIGEST = (1 << 0),
00144 RPMVERIFY_FILESIZE = (1 << 1),
00145 RPMVERIFY_LINKTO = (1 << 2),
00146 RPMVERIFY_USER = (1 << 3),
00147 RPMVERIFY_GROUP = (1 << 4),
00148 RPMVERIFY_MTIME = (1 << 5),
00149 RPMVERIFY_MODE = (1 << 6),
00150 RPMVERIFY_RDEV = (1 << 7),
00151
00152 RPMVERIFY_CONTEXTS = (1 << 15),
00153
00154
00155 RPMVERIFY_READLINKFAIL= (1 << 28),
00156 RPMVERIFY_READFAIL = (1 << 29),
00157 RPMVERIFY_LSTATFAIL = (1 << 30),
00158 RPMVERIFY_LGETFILECONFAIL = (1 << 31)
00159 } rpmVerifyAttrs;
00160 #define RPMVERIFY_MD5 RPMVERIFY_FDIGEST
00161 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE)
00162 #define RPMVERIFY_FAILURES \
00163 (RPMVERIFY_LSTATFAIL|RPMVERIFY_READFAIL|RPMVERIFY_READLINKFAIL|RPMVERIFY_LGETFILECONFAIL)
00164
00169 typedef enum rpmQueryFlags_e {
00170
00171 QUERY_FOR_DEFAULT = 0,
00172 QUERY_FDIGEST = (1 << 0),
00173 QUERY_SIZE = (1 << 1),
00174 QUERY_LINKTO = (1 << 2),
00175 QUERY_USER = (1 << 3),
00176 QUERY_GROUP = (1 << 4),
00177 QUERY_MTIME = (1 << 5),
00178 QUERY_MODE = (1 << 6),
00179 QUERY_RDEV = (1 << 7),
00180
00181 QUERY_CONTEXTS = (1 << 15),
00182 QUERY_FILES = (1 << 16),
00183 QUERY_DEPS = (1 << 17),
00184 QUERY_SCRIPT = (1 << 18),
00185 QUERY_DIGEST = (1 << 19),
00186 QUERY_SIGNATURE = (1 << 20),
00187 QUERY_PATCHES = (1 << 21),
00188 QUERY_HDRCHK = (1 << 22),
00189
00190 QUERY_FOR_LIST = (1 << 23),
00191 QUERY_FOR_STATE = (1 << 24),
00192 QUERY_FOR_DOCS = (1 << 25),
00193 QUERY_FOR_CONFIG = (1 << 26),
00194 QUERY_FOR_DUMPFILES = (1 << 27)
00195 } rpmQueryFlags;
00196
00197 #define _QUERY_FOR_BITS \
00198 (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
00199 QUERY_FOR_DUMPFILES)
00200
00204
00205 extern rpmQueryFlags rpmcliQueryFlags;
00206
00211 typedef enum rpmVerifyFlags_e {
00212
00213 VERIFY_DEFAULT = 0,
00214
00215 VERIFY_FDIGEST = (1 << 0),
00216 VERIFY_SIZE = (1 << 1),
00217 VERIFY_LINKTO = (1 << 2),
00218 VERIFY_USER = (1 << 3),
00219 VERIFY_GROUP = (1 << 4),
00220 VERIFY_MTIME = (1 << 5),
00221 VERIFY_MODE = (1 << 6),
00222 VERIFY_RDEV = (1 << 7),
00223
00224 VERIFY_CONTEXTS = (1 << 15),
00225 VERIFY_FILES = (1 << 16),
00226 VERIFY_DEPS = (1 << 17),
00227 VERIFY_SCRIPT = (1 << 18),
00228 VERIFY_DIGEST = (1 << 19),
00229 VERIFY_SIGNATURE = (1 << 20),
00230 VERIFY_PATCHES = (1 << 21),
00231 VERIFY_HDRCHK = (1 << 22),
00232
00233 VERIFY_FOR_LIST = (1 << 23),
00234 VERIFY_FOR_STATE = (1 << 24),
00235 VERIFY_FOR_DOCS = (1 << 25),
00236 VERIFY_FOR_CONFIG = (1 << 26),
00237 VERIFY_FOR_DUMPFILES= (1 << 27)
00238
00239
00240 } rpmVerifyFlags;
00241
00242 #define VERIFY_ATTRS \
00243 ( VERIFY_FDIGEST | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \
00244 VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV | VERIFY_CONTEXTS )
00245 #define VERIFY_ALL \
00246 ( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST |\
00247 VERIFY_SIGNATURE | VERIFY_HDRCHK )
00248
00251 typedef struct rpmQVKArguments_s * QVA_t;
00252
00261 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h)
00262
00263 ;
00264
00273 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg)
00274
00275
00276
00277 ;
00278
00281
00282 extern struct poptOption rpmQVSourcePoptTable[];
00283
00286
00287 extern int specedit;
00288
00291
00292 extern struct poptOption rpmQueryPoptTable[];
00293
00296
00297 extern struct poptOption rpmVerifyPoptTable[];
00298
00310 int rpmcliShowMatches(QVA_t qva, rpmts ts)
00311
00312 ;
00313
00326 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg)
00327
00328
00329
00330 ;
00331
00340 int showQueryPackage(QVA_t qva, rpmts ts, Header h)
00341
00342 ;
00343
00351 int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_t argv)
00352
00353
00354
00355 ;
00356
00365 int rpmcliQuery(rpmts ts, QVA_t qva, const char ** argv)
00366
00367
00368
00369 ;
00370
00380
00381 int rpmVerifyFile(const rpmts ts, rpmfi fi,
00382 rpmVerifyAttrs * res, rpmVerifyAttrs omitMask)
00383
00384
00385 ;
00386
00387
00395 int showVerifyPackage(QVA_t qva, rpmts ts, Header h)
00396
00397 ;
00398
00407 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn)
00408
00409
00410 ;
00411
00420 int rpmcliVerify(rpmts ts, QVA_t qva, const char ** argv)
00421
00422
00423
00424 ;
00425
00427
00430
00431
00435 typedef enum rpmInstallInterfaceFlags_e {
00436 INSTALL_NONE = 0,
00437 INSTALL_PERCENT = (1 << 0),
00438 INSTALL_HASH = (1 << 1),
00439 INSTALL_NODEPS = (1 << 2),
00440 INSTALL_NOORDER = (1 << 3),
00441 INSTALL_LABEL = (1 << 4),
00442 INSTALL_UPGRADE = (1 << 5),
00443 INSTALL_FRESHEN = (1 << 6),
00444 INSTALL_INSTALL = (1 << 7),
00445 INSTALL_ERASE = (1 << 8),
00446 INSTALL_ALLMATCHES = (1 << 9)
00447 } rpmInstallInterfaceFlags;
00448
00449
00450
00451 extern int rpmcliPackagesTotal;
00452
00453
00454 extern int rpmcliHashesCurrent;
00455
00456 extern int rpmcliHashesTotal;
00457
00458 extern uint64_t rpmcliProgressCurrent;
00459
00460 extern uint64_t rpmcliProgressTotal;
00461
00478
00479 void * rpmShowProgress( const void * arg,
00480 const rpmCallbackType what,
00481 const uint64_t amount,
00482 const uint64_t total,
00483 fnpyKey key,
00484 void * data)
00485
00486
00487
00488
00489
00490 ;
00491
00500 int rpmInstallSource(rpmts ts, const char * arg,
00501 const char ** specFilePtr,
00502 const char ** cookie)
00503
00504
00505
00506 ;
00507
00515 int rpmcliInstallProblems(rpmts ts, const char * msg, int rc)
00516
00517 ;
00518
00524 int rpmcliInstallSuggests(rpmts ts)
00525
00526 ;
00527
00533 int rpmcliInstallCheck(rpmts ts)
00534
00535 ;
00536
00542 int rpmcliInstallOrder(rpmts ts)
00543
00544 ;
00545
00553 int rpmcliInstallRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)
00554
00555 ;
00556
00565 int rpmcliInstall(rpmts ts, QVA_t ia, const char ** argv)
00566
00567
00568
00569 ;
00570
00578 int rpmErase(rpmts ts, QVA_t ia, const char ** argv)
00579
00580
00581 ;
00582
00586
00587 typedef struct IDT_s * IDT;
00588 #if !defined(SWIG)
00589 struct IDT_s {
00590 int done;
00591 unsigned int instance;
00592
00593 const char * key;
00594 Header h;
00595 union {
00596 uint32_t u32;
00597 } val;
00598 };
00599 #endif
00600
00601
00605 typedef struct IDTindex_s * IDTX;
00606 #if !defined(SWIG)
00607 struct IDTindex_s {
00608 int delta;
00609 int size;
00610 int alloced;
00611 int nidt;
00612
00613 IDT idt;
00614 };
00615 #endif
00616
00622
00623 IDTX IDTXfree( IDTX idtx)
00624 ;
00625
00630
00631 IDTX IDTXnew(void)
00632 ;
00633
00640
00641 IDTX IDTXgrow( IDTX idtx, int need)
00642 ;
00643
00649
00650 IDTX IDTXsort( IDTX idtx)
00651 ;
00652
00660
00661 IDTX IDTXload(rpmts ts, rpmTag tag, uint32_t rbtid)
00662
00663 ;
00664
00673
00674 IDTX IDTXglob(rpmts ts, const char * globstr, rpmTag tag, uint32_t rbtid)
00675
00676 ;
00677
00685 int rpmRollback(rpmts ts, QVA_t ia, const char ** argv)
00686
00687
00688
00689 ;
00690
00693
00694 extern struct poptOption rpmInstallPoptTable[];
00695
00697
00700
00703
00704 extern struct poptOption rpmDatabasePoptTable[];
00705
00707
00710
00719 rpmRC rpmcliImportPubkey(const rpmts ts,
00720 const unsigned char * pkt, ssize_t pktlen)
00721
00722
00723
00724 ;
00725
00729
00730 #if !defined(SWIG)
00731 typedef enum rpmSignFlags_e {
00732 RPMSIGN_NONE = 0,
00733 RPMSIGN_CHK_SIGNATURE = 'K',
00734 RPMSIGN_NEW_SIGNATURE = 'R',
00735 RPMSIGN_ADD_SIGNATURE = 'A',
00736 RPMSIGN_DEL_SIGNATURE = 'D',
00737 RPMSIGN_IMPORT_PUBKEY = 'I',
00738 } rpmSignFlags;
00739 #endif
00740
00741
00744
00745 extern struct poptOption rpmSignPoptTable[];
00746
00754 int rpmcliSign(rpmts ts, QVA_t qva, const char ** argv)
00755
00756
00757
00758 ;
00759
00765 #if !defined(SWIG)
00766 struct rpmQVKArguments_s {
00767 rpmQVSources qva_source;
00768 int qva_sourceCount;
00769 rpmQueryFlags qva_flags;
00770 rpmfileAttrs qva_fflags;
00771
00772 rpmdbMatchIterator qva_mi;
00773
00774 rpmgi qva_gi;
00775 rpmRC qva_rc;
00777
00778 QVF_t qva_showPackage;
00779 int qva_showOK;
00780 int qva_showFAIL;
00781
00782 QSpecF_t qva_specQuery;
00783
00784 int qva_verbose;
00785
00786 const char * qva_queryFormat;
00787 int sign;
00788 int trust;
00789
00790 const char * passPhrase;
00791
00792 const char * qva_prefix;
00793 char qva_mode;
00803 char qva_char;
00805
00806 rpmdepFlags depFlags;
00807 rpmtransFlags transFlags;
00808 rpmprobFilterFlags probFilter;
00809 rpmInstallInterfaceFlags installInterfaceFlags;
00810 uint32_t arbtid;
00811 uint32_t rbtid;
00812 uint32_t *rbtidExcludes;
00813 int numrbtidExcludes;
00814 int numRelocations;
00815 int noDeps;
00816 int incldocs;
00817 int no_rollback_links;
00818
00819 rpmRelocation relocations;
00820
00821
00822 int init;
00823 int rebuild;
00824 int verify;
00826
00827 int (*rbCheck) (rpmts ts);
00828 int (*rbOrder) (rpmts ts);
00829 int (*rbRun) (rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet);
00830 };
00831 #endif
00832
00835
00836 extern struct rpmQVKArguments_s rpmQVKArgs;
00837
00840
00841 extern struct rpmQVKArguments_s rpmIArgs;
00842
00845
00846 extern struct rpmQVKArguments_s rpmDBArgs;
00847
00848
00851
00855 struct rpmBuildArguments_s {
00856 rpmQueryFlags qva_flags;
00857 int buildAmount;
00858
00859 const char * passPhrase;
00860
00861 const char * cookie;
00862 int noBuild;
00863 int noDeps;
00864 int noLang;
00865 int shortCircuit;
00866 int sign;
00867 int useCatalog;
00868 char buildMode;
00869 char buildChar;
00870
00871 const char * rootdir;
00872 };
00873
00876 typedef struct rpmBuildArguments_s * BTA_t;
00877
00880
00881 extern struct rpmBuildArguments_s rpmBTArgs;
00882
00885
00886 extern struct poptOption rpmBuildPoptTable[];
00887
00890 #ifdef __cplusplus
00891 }
00892 #endif
00893
00894 #endif