csomh / source-git / rpm

Forked from source-git/rpm 4 years ago
Clone
2ff057
#ifndef _RPMFILES_H
2ff057
#define _RPMFILES_H
2ff057
2ff057
/** \ingroup rpmfilesles
2ff057
 * \file lib/rpmfiles.h
2ff057
 * File info set API.
2ff057
 */
2ff057
#include <sys/types.h>
2ff057
#include <sys/stat.h>
2ff057
#include <unistd.h>
2ff057
2ff057
#include <rpm/rpmtypes.h>
2ff057
#include <rpm/rpmvf.h>
2ff057
#include <rpm/rpmpgp.h>
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * File types.
2ff057
 * These are the file types used internally by rpm. The file
2ff057
 * type is determined by applying stat(2) macros like S_ISDIR to
2ff057
 * the file mode tag from a header. The values are arbitrary,
2ff057
 * but are identical to the linux stat(2) file types.
2ff057
 */
2ff057
typedef enum rpmFileTypes_e {
2ff057
    PIPE	=  1,	/*!< pipe/fifo */
2ff057
    CDEV	=  2,	/*!< character device */
2ff057
    XDIR	=  4,	/*!< directory */
2ff057
    BDEV	=  6,	/*!< block device */
2ff057
    REG		=  8,	/*!< regular file */
2ff057
    LINK	= 10,	/*!< hard link */
2ff057
    SOCK	= 12	/*!< socket */
2ff057
} rpmFileTypes;
2ff057
2ff057
/**
2ff057
 * File States (when installed).
2ff057
 */
2ff057
typedef enum rpmfileState_e {
2ff057
    RPMFILE_STATE_MISSING	= -1,	/* used for unavailable data */
2ff057
    RPMFILE_STATE_NORMAL 	= 0,
2ff057
    RPMFILE_STATE_REPLACED 	= 1,
2ff057
    RPMFILE_STATE_NOTINSTALLED	= 2,
2ff057
    RPMFILE_STATE_NETSHARED	= 3,
2ff057
    RPMFILE_STATE_WRONGCOLOR	= 4
2ff057
} rpmfileState;
2ff057
2ff057
#define RPMFILE_IS_INSTALLED(_x) ((_x) == RPMFILE_STATE_NORMAL || (_x) == RPMFILE_STATE_NETSHARED)
2ff057
2ff057
/**
2ff057
 * Exported File Attributes (ie RPMTAG_FILEFLAGS)
2ff057
 */
2ff057
enum rpmfileAttrs_e {
2ff057
    RPMFILE_NONE	= 0,
2ff057
    RPMFILE_CONFIG	= (1 <<  0),	/*!< from %%config */
2ff057
    RPMFILE_DOC		= (1 <<  1),	/*!< from %%doc */
2ff057
    RPMFILE_ICON	= (1 <<  2),	/*!< from %%donotuse. */
2ff057
    RPMFILE_MISSINGOK	= (1 <<  3),	/*!< from %%config(missingok) */
2ff057
    RPMFILE_NOREPLACE	= (1 <<  4),	/*!< from %%config(noreplace) */
2ff057
    RPMFILE_SPECFILE	= (1 <<  5),	/*!< @todo (unnecessary) marks 1st file in srpm. */
2ff057
    RPMFILE_GHOST	= (1 <<  6),	/*!< from %%ghost */
2ff057
    RPMFILE_LICENSE	= (1 <<  7),	/*!< from %%license */
2ff057
    RPMFILE_README	= (1 <<  8),	/*!< from %%readme */
2ff057
    /* bits 9-10 unused */
2ff057
    RPMFILE_PUBKEY	= (1 << 11),	/*!< from %%pubkey */
2ff057
    RPMFILE_ARTIFACT	= (1 << 12),	/*!< from %%artifact */
2ff057
};
2ff057
2ff057
typedef rpmFlags rpmfileAttrs;
2ff057
2ff057
#define	RPMFILE_ALL	~(RPMFILE_NONE)
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * File disposition(s) during package install/erase transaction.
2ff057
 */
2ff057
typedef enum rpmFileAction_e {
2ff057
    FA_UNKNOWN		= 0,	/*!< initial action for file ... */
2ff057
    FA_CREATE		= 1,	/*!< ... create from payload. */
2ff057
    FA_COPYIN		= 2,	/*!< obsolete, unused. */
2ff057
    FA_COPYOUT		= 3,	/*!< obsolete, unused. */
2ff057
    FA_BACKUP		= 4,	/*!< ... renamed with ".rpmorig" extension. */
2ff057
    FA_SAVE		= 5,	/*!< ... renamed with ".rpmsave" extension. */
2ff057
    FA_SKIP		= 6, 	/*!< ... already replaced, don't remove. */
2ff057
    FA_ALTNAME		= 7,	/*!< ... create with ".rpmnew" extension. */
2ff057
    FA_ERASE		= 8,	/*!< ... to be removed. */
2ff057
    FA_SKIPNSTATE	= 9,	/*!< ... untouched, state "not installed". */
2ff057
    FA_SKIPNETSHARED	= 10,	/*!< ... untouched, state "netshared". */
2ff057
    FA_SKIPCOLOR	= 11,	/*!< ... untouched, state "wrong color". */
2ff057
    FA_TOUCH		= 12,	/*!< ... change metadata only. */
2ff057
    /* bits 16-31 reserved */
2ff057
} rpmFileAction;
2ff057
2ff057
#define XFA_SKIPPING(_a)	\
2ff057
    ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPCOLOR)
2ff057
2ff057
/**
2ff057
 * We pass these around as an array with a sentinel.
2ff057
 */
2ff057
struct rpmRelocation_s {
2ff057
    char * oldPath;	/*!< NULL here evals to RPMTAG_DEFAULTPREFIX, */
2ff057
    char * newPath;	/*!< NULL means to omit the file completely! */
2ff057
};
2ff057
2ff057
enum rpmfiFlags_e {
2ff057
    RPMFI_NOHEADER		= 0,
2ff057
    RPMFI_KEEPHEADER		= (1 << 0),
2ff057
    RPMFI_NOFILECLASS		= (1 << 1),
2ff057
    RPMFI_NOFILEDEPS		= (1 << 2),
2ff057
    RPMFI_NOFILELANGS		= (1 << 3),
2ff057
    RPMFI_NOFILEUSER		= (1 << 4),
2ff057
    RPMFI_NOFILEGROUP		= (1 << 5),
2ff057
    RPMFI_NOFILEMODES		= (1 << 6),
2ff057
    RPMFI_NOFILESIZES		= (1 << 7),
2ff057
    RPMFI_NOFILECAPS		= (1 << 8),
2ff057
    RPMFI_NOFILELINKTOS		= (1 << 9),
2ff057
    RPMFI_NOFILEDIGESTS		= (1 << 10),
2ff057
    RPMFI_NOFILEMTIMES		= (1 << 11),
2ff057
    RPMFI_NOFILERDEVS		= (1 << 12),
2ff057
    RPMFI_NOFILEINODES		= (1 << 13),
2ff057
    RPMFI_NOFILESTATES		= (1 << 14),
2ff057
    RPMFI_NOFILECOLORS		= (1 << 15),
2ff057
    RPMFI_NOFILEVERIFYFLAGS	= (1 << 16),
2ff057
    RPMFI_NOFILEFLAGS		= (1 << 17),
2ff057
    RPMFI_NOFILESIGNATURES	= (1 << 18),
2ff057
};
2ff057
2ff057
typedef rpmFlags rpmfiFlags;
2ff057
2ff057
#define RPMFI_FLAGS_ERASE \
2ff057
    (RPMFI_NOFILECLASS | RPMFI_NOFILELANGS | \
2ff057
     RPMFI_NOFILEMTIMES | RPMFI_NOFILERDEVS | \
2ff057
     RPMFI_NOFILEVERIFYFLAGS)
2ff057
2ff057
#define RPMFI_FLAGS_INSTALL \
2ff057
    (RPMFI_NOFILECLASS | RPMFI_NOFILEVERIFYFLAGS)
2ff057
2ff057
#define RPMFI_FLAGS_VERIFY \
2ff057
    (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
2ff057
     RPMFI_NOFILECOLORS)
2ff057
2ff057
#define RPMFI_FLAGS_QUERY \
2ff057
    (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
2ff057
     RPMFI_NOFILECOLORS | RPMFI_NOFILEVERIFYFLAGS)
2ff057
2ff057
#define RPMFI_FLAGS_FILETRIGGER \
2ff057
    (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
2ff057
     RPMFI_NOFILEUSER | RPMFI_NOFILEGROUP | RPMFI_NOFILEMODES | \
2ff057
     RPMFI_NOFILESIZES | RPMFI_NOFILECAPS | RPMFI_NOFILELINKTOS | \
2ff057
     RPMFI_NOFILEDIGESTS | RPMFI_NOFILEMTIMES | RPMFI_NOFILERDEVS | \
2ff057
     RPMFI_NOFILEINODES | RPMFI_NOFILECOLORS | \
2ff057
     RPMFI_NOFILEVERIFYFLAGS | RPMFI_NOFILEFLAGS)
2ff057
2ff057
#define RPMFI_FLAGS_ONLY_FILENAMES \
2ff057
    (RPMFI_FLAGS_FILETRIGGER | RPMFI_NOFILESTATES)
2ff057
2ff057
typedef enum rpmFileIter_e {
2ff057
    RPMFI_ITER_FWD	= 0,
2ff057
    RPMFI_ITER_BACK	= 1,
2ff057
    RPMFI_ITER_WRITE_ARCHIVE	= 2,
2ff057
    RPMFI_ITER_READ_ARCHIVE	= 3,
2ff057
    RPMFI_ITER_READ_ARCHIVE_CONTENT_FIRST = 4,
2ff057
    RPMFI_ITER_READ_ARCHIVE_OMIT_HARDLINKS = 5,
2ff057
    RPMFI_ITER_INTERVAL = 6,
2ff057
} rpmFileIter;
2ff057
2ff057
#define RPMFILEITERMAX 6
2ff057
2ff057
#ifdef __cplusplus
2ff057
extern "C" {
2ff057
#endif
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Create and load a file info set.
2ff057
 * @param pool		shared string pool (or NULL for private pool)
2ff057
 * @param h		header
2ff057
 * @param tagN		unused
2ff057
 * @param flags		Flags to control what information is loaded.
2ff057
 * @return		new file info set
2ff057
 */
2ff057
rpmfiles rpmfilesNew(rpmstrPool pool, Header h, rpmTagVal tagN, rpmfiFlags flags);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Reference a file info set instance.
2ff057
 * @param fi		file info set
2ff057
 * @return		new file info set reference
2ff057
 */
2ff057
rpmfiles rpmfilesLink(rpmfiles fi);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Destroy a file info set.
2ff057
 * @param fi		file info set
2ff057
 * @return		NULL always
2ff057
 */
2ff057
rpmfiles rpmfilesFree(rpmfiles fi);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file count from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @return		file count
2ff057
 */
2ff057
rpm_count_t rpmfilesFC(rpmfiles fi);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return directory count from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @return		directory count
2ff057
 */
2ff057
rpm_count_t rpmfilesDC(rpmfiles fi);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file index of the given file name or -1 if file is not in the rpmfi.
2ff057
 * The file name may have "." prefixed but is then interpreted as a global
2ff057
 * path without the prefixing "."
2ff057
 * @param files         file info set
2ff057
 * @param fn		file name
2ff057
 * @return              file index or -1
2ff057
 */
2ff057
int rpmfilesFindFN(rpmfiles files, const char * fn);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file index of the given original file name or -1 if file is not
2ff057
 * in the rpmfi. The file name may have "." prefixed but is then interpreted
2ff057
 * as a global path without the prefixing "."
2ff057
 * @param files         file info set
2ff057
 * @param fn		file name
2ff057
 * @return              file index or -1
2ff057
 */
2ff057
int rpmfilesFindOFN(rpmfiles files, const char * fn);
2ff057
2ff057
rpmfi rpmfilesIter(rpmfiles files, int itype);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return digest algorithm of a file info set.
2ff057
 * @param fi		file info set
2ff057
 * @return		digest algorithm of file info set, 0 on invalid
2ff057
 */
2ff057
int rpmfilesDigestAlgo(rpmfiles fi);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return union of all file color bits from file info set.
2ff057
 * @param files		file info set
2ff057
 * @return		color
2ff057
 */
2ff057
rpm_color_t rpmfilesColor(rpmfiles files);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file info comparison.
2ff057
 * @param afi		1st file info
2ff057
 * @param aix		index of the 1st file
2ff057
 * @param bfi		2nd file info
2ff057
 * @param bix		index of the 2nd file
2ff057
 * @return		0 if identical
2ff057
 */
2ff057
int rpmfilesCompare(rpmfiles afi, int aix, rpmfiles bfi, int bix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return base name from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		base name, NULL on invalid
2ff057
 */
2ff057
const char * rpmfilesBN(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return directory name from file info set. Note the index is on
2ff057
 * distinct directories within the file set, not a file index. The
2ff057
 * directory index associated with a given file index can be retrieved
2ff057
 * with rpmfilesDI(). Ie to constuct the full path of file index X
2ff057
 * you'd catenate the results of rpmfilesDN(f, rpmfilesDI(f, X)) and
2ff057
 * rpmfilesBN(f, X).
2ff057
 * @param fi		file info set
2ff057
 * @param jx		directory index
2ff057
 * @return		directory, NULL on invalid
2ff057
 */
2ff057
const char * rpmfilesDN(rpmfiles fi, int jx);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return directory index from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		directory index, -1 on invalid
2ff057
 */
2ff057
int rpmfilesDI(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file name from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file name (malloced)
2ff057
 */
2ff057
char * rpmfilesFN(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return original directory index from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		directory index, -1 on invalid
2ff057
 */
2ff057
int rpmfilesODI(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return original base name from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		base name, NULL on invalid
2ff057
 */
2ff057
const char * rpmfilesOBN(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return original directory name from file info set. Note the index is on
2ff057
 * distinct directories within the file set, not a file index. The
2ff057
 * directory index associated with a given file index can be retrieved
2ff057
 * with rpmfilesODI(). Ie to constuct the full path of file index X
2ff057
 * you'd catenate the results of rpmfilesODN(f, rpmfilesODI(f, X)) and
2ff057
 * rpmfilesOBN(f, X). 
2ff057
 * @param fi		file info set
2ff057
 * @param jx		directory index
2ff057
 * @return		directory, NULL on invalid
2ff057
 */
2ff057
const char * rpmfilesODN(rpmfiles fi, int jx);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return original file name from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file name
2ff057
 */
2ff057
char * rpmfilesOFN(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file verify flags from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file verify flags, 0 on invalid
2ff057
 */
2ff057
rpmVerifyAttrs rpmfilesVFlags(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file state from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file state, 0 on invalid
2ff057
 */
2ff057
rpmfileState rpmfilesFState(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file linkto (i.e. symlink(2) target) from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file linkto, NULL on invalid
2ff057
 */
2ff057
const char * rpmfilesFLink(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file size from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file size, 0 on invalid
2ff057
 */
2ff057
rpm_loff_t rpmfilesFSize(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file color bits from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file color
2ff057
 */
2ff057
rpm_color_t rpmfilesFColor(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file class from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file class, 0 on invalid
2ff057
 */
2ff057
const char * rpmfilesFClass(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file depends dictionary from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @retval *fddictp	file depends dictionary array (or NULL)
2ff057
 * @return		no. of file depends entries, 0 on invalid
2ff057
 */
2ff057
uint32_t rpmfilesFDepends(rpmfiles fi, int ix, const uint32_t ** fddictp);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return (calculated) file nlink count from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file nlink count, 0 on invalid
2ff057
 */
2ff057
uint32_t rpmfilesFNlink(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return (calculated) file nlink count from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @param files         returns array of file ids hardlinked including ix,
2ff057
			NULL for nlink count == 1
2ff057
 * @return		file nlink count, 0 on invalid
2ff057
 */
2ff057
uint32_t rpmfilesFLinks(rpmfiles fi, int ix, const int ** files);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file language(s) from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file language(s), NULL on invalid
2ff057
 */
2ff057
const char * rpmfilesFLangs(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file flags from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file flags, 0 on invalid
2ff057
 */
2ff057
rpmfileAttrs rpmfilesFFlags(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file mode from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file mode, 0 on invalid
2ff057
 */
2ff057
rpm_mode_t rpmfilesFMode(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file (binary) digest of file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @retval algo		digest hash algorithm used (pass NULL to ignore)
2ff057
 * @retval len		digest hash length (pass NULL to ignore)
2ff057
 * @return		file digest, NULL on invalid
2ff057
 */
2ff057
const unsigned char * rpmfilesFDigest(rpmfiles fi, int ix, int *algo, size_t *len);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file (binary) digest of file info set.
2ff057
 * @param fi            file info set
2ff057
 * @param ix            file index
2ff057
 * @retval len       signature length (pass NULL to ignore)
2ff057
 * @return              file signature, NULL on invalid
2ff057
 */
2ff057
const unsigned char * rpmfilesFSignature(rpmfiles fi, int ix, size_t *len);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file rdev from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file rdev, 0 on invalid
2ff057
 */
2ff057
rpm_rdev_t rpmfilesFRdev(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file inode from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file inode, 0 on invalid
2ff057
 */
2ff057
rpm_ino_t rpmfilesFInode(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file modify time from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file modify time, 0 on invalid
2ff057
 */
2ff057
rpm_time_t rpmfilesFMtime(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file owner from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file owner, NULL on invalid
2ff057
 */
2ff057
const char * rpmfilesFUser(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return file group from file info set.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file group, NULL on invalid
2ff057
 */
2ff057
const char * rpmfilesFGroup(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Return textual representation of file capabilities 
2ff057
 * from file info set. See cap_from_text(3) for details.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @return		file capability description, "" for no capabilities
2ff057
 * 			and NULL on invalid
2ff057
 */
2ff057
const char * rpmfilesFCaps(rpmfiles fi, int ix);
2ff057
2ff057
/** \ingroup rpmfi
2ff057
 * Map file stat(2) info.
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @param flags		flags
2ff057
 * @retval sb		mapped stat(2) data
2ff057
 * @return		0 on success
2ff057
 */
2ff057
int rpmfilesStat(rpmfiles fi, int ix, int flags, struct stat *sb);
2ff057
2ff057
/** \ingroup rpmfiles
2ff057
 * Verify file attributes (including digest).
2ff057
 * @param fi		file info set
2ff057
 * @param ix		file index
2ff057
 * @param omitMask	bit(s) to disable verify checks
2ff057
 * @return		bit(s) to indicate failure (ie 0 for passed verify)
2ff057
 */
2ff057
rpmVerifyAttrs rpmfilesVerify(rpmfiles fi, int ix, rpmVerifyAttrs omitMask);
2ff057
2ff057
#ifdef __cplusplus
2ff057
}
2ff057
#endif
2ff057
2ff057
#endif /* _RPMFILES_H */