# File and Path Manipulation API.

## Files
file | rpmfileutil.h

| File and path manipulation helper functions.
## 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 }
## Functions
int | rpmDoDigest (pgpHashAlgo algo, const char *fn, int asAscii, unsigned char *digest, rpm_loff_t *fsizep)
| Calculate a file digest and size.
FD_t | rpmMkTemp (char *templ)
| Thin wrapper for mkstemp(3).
FD_t | rpmMkTempFile (const char *prefix, char **fn)
| Return file handle for a temporaray file.
int | rpmioMkpath (const char *path, mode_t mode, uid_t uid, gid_t gid)
| Insure that directories in path exist, creating as needed.
int | rpmMkdirs (const char *root, const char *pathstr)
| Create several directories (including parents if needed) in one go.
char * | rpmCleanPath (char *path)
| Canonicalize file path.
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.
char * | rpmGetPath (const char *path,...)
| Return (malloc'ed) expanded, canonicalized, file path.
int | rpmGlob (const char *patterns, int *argcPtr, ARGV_t *argvPtr)
| Return URL path(s) from a (URL prefixed) pattern glob.
char * | rpmEscapeSpaces (const char *s)
| Escape isspace(3) characters in string.
int | rpmFileIsCompressed (const char *file, rpmCompressedMagic *compressed)
| Return type of compression used in file.
int | rpmFileHasSuffix (const char *path, const char *suffix)
| Check if path (string) ends with given suffix.
char * | rpmGetCwd (void)
| Like getcwd() but the result is malloced.

## Typedef Documentation

typedef enum rpmCompressedMagic_e rpmCompressedMagic

## Enumeration Type Documentation

enum rpmCompressedMagic_e

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

Definition at line 20 of file rpmfileutil.h.

## Function Documentation

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

Canonicalize file path.

Parameters:

  | path | path to canonicalize (in-place)

Returns:
  pointer to path

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

Calculate a file digest and size.

Parameters:

  | algo | digest algorithm
  | fn | file name
  | asAscii | return digest as ascii string?

Return values:

  | digest | address of calculated digest
  | *fsizep | file size pointer (or NULL)

Returns:
  0 on success, 1 on error

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

Escape isspace(3) characters in string.

Parameters:

  | s | string

Returns:
  escaped string

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

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

Return type of compression used in file.

Parameters:

  | file | name of file

Return values:

  | compressed | address of compression type

Returns:
  0 on success, 1 on I/O error

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)

Referenced by buildForTarget(), and main().

char* rpmGetCwd | ( | void |  | ) |

Like getcwd() but the result is malloced.

Returns:
  current working directory (malloc'ed)

Referenced by buildForTarget().

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)

Referenced by getTarSpec().

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

Return URL path(s) from a (URL prefixed) pattern glob.

Parameters:

  | patterns | glob pattern

Return values:

  | *argcPtr | no. of paths
  | *argvPtr | ARGV_t array of paths

Returns:
  0 on success

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

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

Referenced by buildForTarget().

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

Thin wrapper for mkstemp(3).

Parameters:

  | templ | template for temporary filename

Returns:
  file handle or NULL on error

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

Return values:

  | fn | temp file name (or NULL)

Returns:
  fdptr open file handle or NULL on error