Loading...
Searching...
No Matches
File and Path Manipulation API.
I/O

File and path manipulation helper functions. More...

Collaboration diagram for File and Path Manipulation API.:

## Files

file | rpmfileutil.h

## Typedefs

typedef enum rpmCompressedMagic_e | rpmCompressedMagic

## Enumerations

enum | rpmCompressedMagic_e { COMPRESSED_NOT = 0 , COMPRESSED_OTHER = 1 , COMPRESSED_BZIP2 = 2 , COMPRESSED_ZIP = 3 , COMPRESSED_LZMA = 4 , COMPRESSED_XZ = 5 , COMPRESSED_LZIP = 6 , COMPRESSED_LRZIP = 7 , COMPRESSED_7ZIP = 8 , COMPRESSED_GEM = 9 , COMPRESSED_ZSTD = 10 }
enum | rpmglobFlags_e { RPMGLOB_NONE = 0 , RPMGLOB_NOCHECK = (1 << 0) }

## Functions

int | rpmDoDigest (int algo, const char *fn, int asAscii, unsigned char *digest)
FD_t | rpmMkTemp (char *templ)
FD_t | rpmMkTempFile (const char *prefix, char **fn)
int | rpmioMkpath (const char *path, mode_t mode, uid_t uid, gid_t gid)
int | rpmMkdirs (const char *root, const char *pathstr)
char * | rpmCleanPath (char *path)
char * | rpmGenPath (const char *urlroot, const char *urlmdir, const char *urlfile)
char * | rpmGetPath (const char *path,...) RPM_GNUC_NULL_TERMINATED
int | rpmGlobPath (const char *pattern, rpmglobFlags flags, int *argcPtr, ARGV_t *argvPtr)
int | rpmGlob (const char *pattern, int *argcPtr, ARGV_t *argvPtr)
char * | rpmEscapeSpaces (const char *s)
char * | rpmEscape (const char *s, const char *accept)
void | rpmUnescape (char *s, const char *accept)
int | rpmFileIsCompressed (const char *file, rpmCompressedMagic *compressed)
int | rpmFileHasSuffix (const char *path, const char *suffix)
char * | rpmGetCwd (void)

## Detailed Description

File and path manipulation helper functions.

## Typedef Documentation

## rpmCompressedMagic

typedef enum rpmCompressedMagic_e rpmCompressedMagic

Compression types detected by rpm (subject to build configuration).

## Enumeration Type Documentation

## rpmCompressedMagic_e

enum rpmCompressedMagic_e

Compression types detected by rpm (subject to build configuration).

Enumerator
COMPRESSED_NOT | not compressed
COMPRESSED_OTHER | gzip can handle
COMPRESSED_BZIP2 | bzip2 can handle
COMPRESSED_ZIP | unzip can handle
COMPRESSED_LZMA | lzma can handle
COMPRESSED_XZ | xz can handle
COMPRESSED_LZIP | lzip can handle
COMPRESSED_LRZIP | lrzip can handle
COMPRESSED_7ZIP | 7zip can handle
COMPRESSED_GEM | gem can handle
COMPRESSED_ZSTD | zstd can handle

## rpmglobFlags_e

enum rpmglobFlags_e

RPM glob flags, largely modelled after glob(3) flags.

Enumerator
RPMGLOB_NOCHECK | same as GLOB_NOCHECK

## Function Documentation

## rpmCleanPath()

char * rpmCleanPath | ( | char * | path | ) |

Canonicalize file path.

Parameters

  path | path to canonicalize (in-place)

Returns
  pointer to path

## rpmDoDigest()

int rpmDoDigest | ( | int | algo,
|  | const char * | fn,
|  | int | asAscii,
|  | unsigned char * | digest )

Calculate a file digest and size.

Parameters

  | algo | digest algorithm
  | fn | file name
  | asAscii | return digest as ascii string?
  [out] | digest | address of calculated digest

Returns
  0 on success, 1 on error

## rpmEscape()

char * rpmEscape | ( | const char * | s,
|  | const char * | accept )

Escape given characters in string.

Parameters

  s | string
  accept | chars to escape

Returns
  escaped string

## rpmEscapeSpaces()

char * rpmEscapeSpaces | ( | const char * | s | ) |

Escape isspace(3) characters in string.

Parameters

  s | string

Returns
  escaped string

## rpmFileHasSuffix()

int rpmFileHasSuffix | ( | const char * | path,
|  | const char * | suffix )

Check if path (string) ends with given suffix

Parameters

  path | (path) string
  suffix | suffix string to check for

Returns
  1 if true, 0 otherwise

## rpmFileIsCompressed()

int rpmFileIsCompressed | ( | const char * | file,
|  | rpmCompressedMagic * | compressed )

Return type of compression used in file.

Parameters

  | file | name of file
  [out] | compressed | address of compression type

Returns
  0 on success, 1 on I/O error

## rpmGenPath()

char * rpmGenPath | ( | const char * | urlroot,
|  | const char * | urlmdir,
|  | const char * | urlfile )

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.

Parameters

  urlroot | root URL (often path to chroot, or NULL)
  urlmdir | directory URL (often a directory, or NULL)
  urlfile | file URL (often a file, or NULL)

Returns
  expanded, merged, canonicalized path (malloc'ed)

## rpmGetCwd()

char * rpmGetCwd | ( | void |  | ) |

Like getcwd() but the result is malloced.

Returns
  current working directory (malloc'ed)

## rpmGetPath()

char * rpmGetPath | ( | const char * | path,
|  |  | ... )

Return (malloc'ed) expanded, canonicalized, file path.

Parameters

  path | macro(s) to expand (NULL terminates list)

Returns
  canonicalized path (malloc'ed)

## rpmGlob()

int rpmGlob | ( | const char * | pattern,
|  | int * | argcPtr,
|  | ARGV_t * | argvPtr )

Expand a glob pattern into matching paths, fail if nothing matches.

Parameters

  | pattern | glob pattern
  [out] | *argcPtr | no. of paths
  [out] | *argvPtr | ARGV_t array of paths

Returns
  0 on success

## rpmGlobPath()

int rpmGlobPath | ( | const char * | pattern,
|  | rpmglobFlags | flags,
|  | int * | argcPtr,
|  | ARGV_t * | argvPtr )

Expand a glob pattern into matching paths. When RPMGLOB_NOCHECK is specified, non-matching and non-glob patterns are returned as is.

Parameters

  | pattern | glob pattern
  | flags | bit(s) to control glob operation
  [out] | *argcPtr | no. of paths
  [out] | *argvPtr | ARGV_t array of paths

Returns
  0 on success

## rpmioMkpath()

int rpmioMkpath | ( | const char * | path,
|  | mode_t | mode,
|  | uid_t | uid,
|  | gid_t | gid )

Insure that directories in path exist, creating as needed.

Parameters

  path | directory path
  mode | directory mode (if created)
  uid | directory uid (if created), or -1 to skip
  gid | directory uid (if created), or -1 to skip

Returns
  0 on success, errno (or -1) on error

## rpmMkdirs()

int rpmMkdirs | ( | const char * | root,
|  | const char * | pathstr )

Create several directories (including parents if needed) in one go. Macros in pathstr will be expanded in the process.

Parameters

  root | leading root directory (or NULL for none)
  pathstr | list of directories separated with :

Returns
  0 if all directories were successfully created (or already existed), non-zero otherwise

## rpmMkTemp()

FD_t rpmMkTemp | ( | char * | templ | ) |

Thin wrapper for mkstemp(3).

Parameters

  templ | template for temporary filename

Returns
  file handle or NULL on error

## rpmMkTempFile()

FD_t rpmMkTempFile | ( | const char * | prefix,
|  | char ** | fn )

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.

Parameters

  | prefix | leading part of temp file path
  [out] | fn | temp file name (or NULL)

Returns
  fdptr open file handle or NULL on error

## rpmUnescape()

void rpmUnescape | ( | char * | s,
|  | const char * | accept )

Unescape each char listed in accept by removing a backslash preceding it.

Parameters

  s | string
  accept | chars to unescape (NULL for all)