00001 #ifndef H_RPMCLI
00002 #define H_RPMCLI
00003
00008 #include <popt.h>
00009
00010 #include <rpm/rpmlib.h>
00011 #include <rpm/rpmurl.h>
00012 #include <rpm/rpmmacro.h>
00013 #include <rpm/rpmcallback.h>
00014 #include <rpm/rpmts.h>
00015 #include <rpm/rpmfi.h>
00016 #include <rpm/rpmvf.h>
00017 #include <rpm/argv.h>
00018
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif
00022
00026 extern int _noDirTokens;
00027
00031 extern struct poptOption rpmcliAllPoptTable[];
00032
00033 extern int ftsOpts;
00034
00035 extern struct poptOption rpmcliFtsPoptTable[];
00036
00037 extern const char * rpmcliPipeOutput;
00038
00039 extern const char * rpmcliRcfile;
00040
00041 extern const char * rpmcliRootDir;
00042
00050 poptContext
00051 rpmcliInit(int argc, char *const argv[], struct poptOption * optionsTable);
00052
00057 void rpmcliConfigured(void);
00058
00064 poptContext
00065 rpmcliFini(poptContext optCon);
00066
00070 #define RPMCLI_POPT_NODEPS -1025
00071 #define RPMCLI_POPT_FORCE -1026
00072 #define RPMCLI_POPT_NOMD5 -1027
00073 #define RPMCLI_POPT_NOFILEDIGEST -1027
00074 #define RPMCLI_POPT_NOSCRIPTS -1028
00075 #define RPMCLI_POPT_NOSIGNATURE -1029
00076 #define RPMCLI_POPT_NODIGEST -1030
00077 #define RPMCLI_POPT_NOHDRCHK -1031
00078 #define RPMCLI_POPT_NOCONTEXTS -1032
00079
00080
00087 typedef enum rpmQVSources_e {
00088 RPMQV_PACKAGE = 0,
00089 RPMQV_PATH,
00090 RPMQV_ALL,
00091 RPMQV_RPM,
00092 RPMQV_GROUP,
00093 RPMQV_WHATPROVIDES,
00094 RPMQV_WHATREQUIRES,
00095 RPMQV_TRIGGEREDBY,
00096 RPMQV_DBOFFSET,
00097 RPMQV_SPECFILE,
00098 RPMQV_PKGID,
00099 RPMQV_HDRID,
00100 RPMQV_FILEID,
00101 RPMQV_TID,
00102 RPMQV_HDLIST,
00103 RPMQV_FTSWALK
00104 } rpmQVSources;
00105
00110 typedef enum rpmQueryFlags_e {
00111 QUERY_FOR_DEFAULT = 0,
00112 QUERY_MD5 = (1 << 0),
00113 QUERY_FILEDIGEST = (1 << 0),
00114 QUERY_SIZE = (1 << 1),
00115 QUERY_LINKTO = (1 << 2),
00116 QUERY_USER = (1 << 3),
00117 QUERY_GROUP = (1 << 4),
00118 QUERY_MTIME = (1 << 5),
00119 QUERY_MODE = (1 << 6),
00120 QUERY_RDEV = (1 << 7),
00121
00122 QUERY_CONTEXTS = (1 << 15),
00123 QUERY_FILES = (1 << 16),
00124 QUERY_DEPS = (1 << 17),
00125 QUERY_SCRIPT = (1 << 18),
00126 QUERY_DIGEST = (1 << 19),
00127 QUERY_SIGNATURE = (1 << 20),
00128 QUERY_PATCHES = (1 << 21),
00129 QUERY_HDRCHK = (1 << 22),
00130 QUERY_FOR_LIST = (1 << 23),
00131 QUERY_FOR_STATE = (1 << 24),
00132 QUERY_FOR_DOCS = (1 << 25),
00133 QUERY_FOR_CONFIG = (1 << 26),
00134 QUERY_FOR_DUMPFILES = (1 << 27)
00135 } rpmQueryFlags;
00136
00137 #define _QUERY_FOR_BITS \
00138 (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
00139 QUERY_FOR_DUMPFILES)
00140
00144 extern rpmQueryFlags rpmcliQueryFlags;
00145
00148 typedef struct rpmQVKArguments_s * QVA_t;
00149
00158 typedef int (*QVF_t) (QVA_t qva, rpmts ts, Header h);
00159
00168 typedef int (*QSpecF_t) (rpmts ts, QVA_t qva, const char * arg);
00169
00173 struct rpmQVKArguments_s {
00174 rpmQVSources qva_source;
00175 int qva_sourceCount;
00176 rpmQueryFlags qva_flags;
00177 rpmfileAttrs qva_fflags;
00178 rpmdbMatchIterator qva_mi;
00179 rpmgi qva_gi;
00180 rpmRC qva_rc;
00182 QVF_t qva_showPackage;
00183 QSpecF_t qva_specQuery;
00184 int qva_verbose;
00185 char * qva_queryFormat;
00186 int sign;
00187 const char * passPhrase;
00188 const char * qva_prefix;
00189 char qva_mode;
00199 char qva_char;
00200 };
00201
00204 extern struct rpmQVKArguments_s rpmQVKArgs;
00205
00208 extern struct poptOption rpmQVSourcePoptTable[];
00209
00212 extern struct poptOption rpmQueryPoptTable[];
00213
00216 extern struct poptOption rpmVerifyPoptTable[];
00217
00229 int rpmcliShowMatches(QVA_t qva, rpmts ts);
00230
00235 void rpmDisplayQueryTags(FILE * fp);
00236
00249 int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg);
00250
00259 int showQueryPackage(QVA_t qva, rpmts ts, Header h);
00260
00268 int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv);
00269
00278 int rpmcliQuery(rpmts ts, QVA_t qva, ARGV_const_t argv);
00279
00287 int showVerifyPackage(QVA_t qva, rpmts ts, Header h);
00288
00297 int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn);
00298
00307 int rpmcliVerify(rpmts ts, QVA_t qva, ARGV_const_t argv);
00308
00309
00315 struct rpmBuildArguments_s {
00316 rpmQueryFlags qva_flags;
00317 int buildAmount;
00318 char * buildRootOverride;
00319 char * targets;
00320 const char * passPhrase;
00321 char * cookie;
00322 int force;
00323 int noBuild;
00324 int noDeps;
00325 int noLang;
00326 int shortCircuit;
00327 int sign;
00328 char buildMode;
00329 char buildChar;
00330 const char * rootdir;
00331 };
00332
00335 typedef struct rpmBuildArguments_s * BTA_t;
00336
00339 extern struct rpmBuildArguments_s rpmBTArgs;
00340
00343 extern struct poptOption rpmBuildPoptTable[];
00344
00345
00347
00348
00352 typedef enum rpmInstallFlags_e {
00353 INSTALL_NONE = 0,
00354 INSTALL_PERCENT = (1 << 0),
00355 INSTALL_HASH = (1 << 1),
00356 INSTALL_NODEPS = (1 << 2),
00357 INSTALL_NOORDER = (1 << 3),
00358 INSTALL_LABEL = (1 << 4),
00359 INSTALL_UPGRADE = (1 << 5),
00360 INSTALL_FRESHEN = (1 << 6),
00361 INSTALL_INSTALL = (1 << 7),
00362 INSTALL_ERASE = (1 << 8),
00363 INSTALL_ALLMATCHES = (1 << 9)
00364 } rpmInstallFlags;
00365
00369 #define UNINSTALL_NONE INSTALL_NONE
00370 #define UNINSTALL_NODEPS INSTALL_NODEPS
00371 #define UNINSTALL_ALLMATCHES INSTALL_ALLMATCHES
00372
00373 extern int rpmcliPackagesTotal;
00374 extern int rpmcliHashesCurrent;
00375 extern int rpmcliHashesTotal;
00376 extern int rpmcliProgressCurrent;
00377 extern int rpmcliProgressTotal;
00378
00393 void * rpmShowProgress(const void * arg,
00394 const rpmCallbackType what,
00395 const rpm_loff_t amount,
00396 const rpm_loff_t total,
00397 fnpyKey key,
00398 void * data);
00399
00408 int rpmInstallSource(rpmts ts, const char * arg,
00409 char ** specFilePtr,
00410 char ** cookie);
00411
00412
00416 struct rpmInstallArguments_s {
00417 rpmtransFlags transFlags;
00418 rpmprobFilterFlags probFilter;
00419 rpmInstallFlags installInterfaceFlags;
00420 rpmQueryFlags qva_flags;
00421 int numRelocations;
00422 int noDeps;
00423 int incldocs;
00424 rpmRelocation * relocations;
00425 char * prefix;
00426 const char * rootdir;
00427 };
00428
00438 int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia, ARGV_t fileArgv);
00439
00448 int rpmErase(rpmts ts, struct rpmInstallArguments_s * ia, ARGV_const_t argv);
00449
00452 extern struct rpmInstallArguments_s rpmIArgs;
00453
00456 extern struct poptOption rpmInstallPoptTable[];
00457
00458
00460
00461
00465 struct rpmDatabaseArguments_s {
00466 int init;
00467 int rebuild;
00468 int verify;
00469 };
00470
00473 extern struct rpmDatabaseArguments_s rpmDBArgs;
00474
00477 extern struct poptOption rpmDatabasePoptTable[];
00478
00479
00485 typedef enum rpmSignFlags_e {
00486 RPMSIGN_NONE = 0,
00487 RPMSIGN_CHK_SIGNATURE = 'K',
00488 RPMSIGN_NEW_SIGNATURE = 'R',
00489 RPMSIGN_ADD_SIGNATURE = 'A',
00490 RPMSIGN_DEL_SIGNATURE = 'D',
00491 RPMSIGN_IMPORT_PUBKEY = 'I',
00492 } rpmSignFlags;
00493
00496 extern struct poptOption rpmSignPoptTable[];
00497
00505 int rpmcliSign(rpmts ts, QVA_t qva, ARGV_const_t argv);
00506
00507 #ifdef __cplusplus
00508 }
00509 #endif
00510
00511 #endif