rpm/rpmio/rpmfileutil.h

124 lines
3.9 KiB
C
Raw Normal View History

#ifndef _RPMFILEUTIL_H
#define _RPMFILEUTIL_H
/** \ingroup rpmfileutil rpmio
* \file rpmio/rpmfileutil.h
* File and path manipulation helper functions.
*/
#include <rpm/rpmutil.h>
#include <rpm/rpmio.h>
#include <rpm/rpmpgp.h>
/** \ingroup rpmfileutil
*/
typedef enum rpmCompressedMagic_e {
COMPRESSED_NOT = 0, /*!< not compressed */
COMPRESSED_OTHER = 1, /*!< gzip can handle */
COMPRESSED_BZIP2 = 2, /*!< bzip2 can handle */
COMPRESSED_ZIP = 3, /*!< unzip can handle */
COMPRESSED_LZMA = 4 /*!< lzma can handle */
} rpmCompressedMagic;
/** \ingroup rpmfileutil
* Calculate a file digest and size.
* @param algo digest algorithm (ignored for now, md5 used)
* @param fn file name
* @param asAscii return checksum as ascii string?
* @retval digest address of calculated checksum
* @retval *fsizep file size pointer (or NULL)
* @return 0 on success, 1 on error
*/
int rpmDoDigest(pgpHashAlgo algo, const char * fn,int asAscii,
unsigned char * digest, rpm_off_t * fsizep);
/** \ingroup rpmfileutil
* Return file handle for a temporaray file.
* A unique temporaray file path will be created in
* [prefix/]%{_tmppath} directory.
* The file name and the open file handle are returned.
*
* @param prefix leading part of temp file path
* @retval fnptr temp file name (or NULL)
* @return fdptr open file handle or NULL on error
*/
FD_t rpmMkTemp(const char * prefix, char **fn);
/** \ingroup rpmfileutil
* Insure that directories in path exist, creating as needed.
* @param path directory path
* @param mode directory mode (if created)
* @param uid directory uid (if created), or -1 to skip
* @param gid directory uid (if created), or -1 to skip
* @return 0 on success, errno (or -1) on error
*/
int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid);
/** \ingroup rpmfileutil
* Canonicalize file path.
* @param path path to canonicalize (in-place)
* @return pointer to path
*/
char * rpmCleanPath (char * path);
/** \ingroup rpmfileutil
* Merge 3 args into path, any or all of which may be a url.
* The leading part of the first URL encountered is used
* for the result, other URL prefixes are discarded, permitting
* a primitive form of URL inheiritance.
* @param urlroot root URL (often path to chroot, or NULL)
* @param urlmdir directory URL (often a directory, or NULL)
* @param urlfile file URL (often a file, or NULL)
* @return expanded, merged, canonicalized path (malloc'ed)
*/
char * rpmGenPath (const char * urlroot,
const char * urlmdir,
const char * urlfile);
/** \ingroup rpmfileutil
* Return (malloc'ed) expanded, canonicalized, file path.
* @param path macro(s) to expand (NULL terminates list)
* @return canonicalized path (malloc'ed)
*/
char * rpmGetPath (const char * path, ...) RPM_GNUC_NULL_TERMINATED;
/** \ingroup rpmfileutil
* Return URL path(s) from a (URL prefixed) pattern glob.
* @param patterns glob pattern
* @retval *argcPtr no. of paths
* @retval *argvPtr array of paths (malloc'd contiguous blob)
* @return 0 on success
*/
int rpmGlob(const char * patterns, int * argcPtr, char *** argvPtr);
2008-01-27 22:13:47 +08:00
/** \ingroup rpmfileutil
* Escape isspace(3) characters in string.
* @param s string
* @return escaped string
*/
char * rpmEscapeSpaces(const char * s);
/** \ingroup rpmfileutil
* Return type of compression used in file.
* @param file name of file
* @retval compressed address of compression type
* @return 0 on success, 1 on I/O error
*/
int rpmFileIsCompressed (const char * file, rpmCompressedMagic * compressed);
2008-01-27 22:13:47 +08:00
/** \ingroup rpmfileutil
* Check if path (string) ends with given suffix
* @param path (path) string
* @param suffix suffix string to check for
* @return 1 if true, 0 otherwise
*/
int rpmFileHasSuffix(const char *path, const char *suffix);
/** \ingroup rpmfileutil
* Like getcwd() but the result is malloced.
* @return current working directory (malloc'ed)
*/
char * rpmGetCwd(void);
#endif /* _RPMFILEUTIL_H */