1 is error). */
rpmQueryFlags qva_flags; /*!< Bit(s) to control operation. */
rpmfileAttrs qva_fflags; /*!< Bit(s) to filter on attribute. */
QVF_t qva_showPackage; /*!< Function to display iterator matches. */
QSpecF_t qva_specQuery; /*!< Function to query spec file. */
char * qva_queryFormat; /*!< Format for headerFormat(). */
char qva_mode;
/*!<
- 'q' from --query, -q
- 'Q' from --querytags
- 'V' from --verify, -V
- 'I' from --import
- 'K' from --checksig, -K
*/
};
/** \ingroup rpmcli
*/
extern struct rpmQVKArguments_s rpmQVKArgs;
/** \ingroup rpmcli
*/
extern struct poptOption rpmQVSourcePoptTable[];
/** \ingroup rpmcli
*/
extern struct poptOption rpmQueryPoptTable[];
/** \ingroup rpmcli
*/
extern struct poptOption rpmVerifyPoptTable[];
/** \ingroup rpmcli
* Display list of tags that can be used in --queryformat.
* @param fp file handle to use for display
*/
void rpmDisplayQueryTags(FILE * fp);
/** \ingroup rpmcli
* Display results of package query.
* @todo Devise a meaningful return code.
* @param qva parsed query/verify options
* @param ts transaction set
* @param h header to use for query
* @return 0 always
*/
int showQueryPackage(QVA_t qva, rpmts ts, Header h);
/** \ingroup rpmcli
* Iterate over query/verify arg list.
* @param ts transaction set
* @param qva parsed query/verify options
* @param argv query argument(s) (or NULL)
* @return 0 on success, else no. of failures
*/
int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv);
/** \ingroup rpmcli
* Display package information.
* @todo hack: RPMQV_ALL can pass char ** arglist = NULL, not char * arg. Union?
* @param ts transaction set
* @param qva parsed query/verify options
* @param argv query argument(s) (or NULL)
* @return 0 on success, else no. of failures
*/
int rpmcliQuery(rpmts ts, QVA_t qva, ARGV_const_t argv);
/** \ingroup rpmcli
* Display results of package verify.
* @param qva parsed query/verify options
* @param ts transaction set
* @param h header to use for verify
* @return result of last non-zero verify return
*/
int showVerifyPackage(QVA_t qva, rpmts ts, Header h);
/**
* Check package and header signatures.
* @param qva parsed query/verify options
* @param ts transaction set
* @param fd package file handle
* @param fn package file name
* @return 0 on success, 1 on failure
*/
int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn);
/**
* Check package and header signatures.
* @param keyring keyring handle
* @param flags flags to control what to verify
* @param fd package file handle
* @param fn package file name
* @return 0 on success, 1 on failure
*/
int rpmpkgVerifySigs(rpmKeyring keyring, rpmQueryFlags flags, FD_t fd,
const char *fn);
/** \ingroup rpmcli
* Verify package install.
* @todo hack: RPMQV_ALL can pass char ** arglist = NULL, not char * arg. Union?
* @param ts transaction set
* @param qva parsed query/verify options
* @param argv verify argument(s) (or NULL)
* @return 0 on success, else no. of failures
*/
int rpmcliVerify(rpmts ts, QVA_t qva, ARGV_const_t argv);
/* ==================================================================== */
/** \name RPMEIU */
/* --- install/upgrade/erase modes */
/** \ingroup rpmcli
* Bit(s) to control rpmInstall() operation.
*/
enum rpmInstallFlags_e {
INSTALL_NONE = 0,
INSTALL_PERCENT = (1 << 0), /*!< from --percent */
INSTALL_HASH = (1 << 1), /*!< from --hash */
INSTALL_NODEPS = (1 << 2), /*!< from --nodeps */
INSTALL_NOORDER = (1 << 3), /*!< from --noorder */
INSTALL_LABEL = (1 << 4), /*!< from --verbose (notify) */
INSTALL_UPGRADE = (1 << 5), /*!< from --upgrade */
INSTALL_FRESHEN = (1 << 6), /*!< from --freshen */
INSTALL_INSTALL = (1 << 7), /*!< from --install */
INSTALL_ERASE = (1 << 8), /*!< from --erase */
INSTALL_ALLMATCHES = (1 << 9), /*!< from --allmatches */
INSTALL_REINSTALL = (1 << 10), /*!< from --reinstall */
};
typedef rpmFlags rpmInstallFlags;
/** \ingroup rpmcli
* Bit(s) to control rpmErase() operation.
*/
#define UNINSTALL_NONE INSTALL_NONE
#define UNINSTALL_NODEPS INSTALL_NODEPS
#define UNINSTALL_ALLMATCHES INSTALL_ALLMATCHES
/** \ingroup rpmcli
* The rpm CLI generic transaction callback handler.
* @todo Remove headerFormat() from the progress callback.
* @deprecated Transaction callback arguments need to change, so don't rely on
* this routine in the rpmcli API.
*
* @param arg per-callback private data (e.g. an rpm header)
* @param what callback identifier
* @param amount per-callback progress info
* @param total per-callback progress info
* @param key opaque header key (e.g. file name or PyObject)
* @param data private data (e.g. rpmInstallInterfaceFlags)
* @return per-callback data (e.g. an opened FD_t)
*/
void * rpmShowProgress(const void * arg,
const rpmCallbackType what,
const rpm_loff_t amount,
const rpm_loff_t total,
fnpyKey key,
void * data);
/** \ingroup rpmcli
* Install source rpm package.
* @param ts transaction set
* @param arg source rpm file name
* @retval *specFilePtr (installed) spec file name
* @retval *cookie
* @return 0 on success
*/
int rpmInstallSource(rpmts ts, const char * arg,
char ** specFilePtr,
char ** cookie);
/** \ingroup rpmcli
* Describe database command line requests.
*/
struct rpmInstallArguments_s {
rpmtransFlags transFlags;
rpmprobFilterFlags probFilter;
rpmInstallFlags installInterfaceFlags;
int numRelocations;
int noDeps;
int incldocs;
rpmRelocation * relocations;
char * prefix;
};
/** \ingroup rpmcli
* Install/upgrade/freshen/reinstall binary rpm package.
* @param ts transaction set
* @param ia mode flags and parameters
* @param fileArgv array of package file names (NULL terminated)
* @return 0 on success
*
* @todo fileArgv is modified on errors, should be ARGV_const_t
*/
int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia, ARGV_t fileArgv);
/** \ingroup rpmcli
* Erase binary rpm package.
* @param ts transaction set
* @param ia control args/bits
* @param argv array of package file names (NULL terminated)
* @return 0 on success
*/
int rpmErase(rpmts ts, struct rpmInstallArguments_s * ia, ARGV_const_t argv);
/** \ingroup rpmcli
*/
extern struct rpmInstallArguments_s rpmIArgs;
/** \ingroup rpmcli
*/
extern struct poptOption rpmInstallPoptTable[];
/* ==================================================================== */
/** \name RPMK */
/** Import public key(s) to rpm keyring
* @param ts transaction set
* @param argv array of pubkey path arguments (NULL terminated)
* @return 0 on success
*/
int rpmcliImportPubkeys(rpmts ts, ARGV_const_t argv);
/** \ingroup rpmcli
* Verify package signatures
* @param ts transaction set
* @param argv array of package path arguments (NULL terminated)
* @return 0 on success
*/
int rpmcliVerifySignatures(rpmts ts, ARGV_const_t argv);
#ifdef __cplusplus
}
#endif
#endif /* H_RPMCLI */