rpmarchive.h File Reference

Go to the source code of this file.

## Macros

#define | RPMERR_CHECK_ERRNO -32768

## Enumerations

enum

rpmfilesErrorCodes {
RPMERR_ITER_END = -1, RPMERR_BAD_MAGIC = -2, RPMERR_BAD_HEADER = -3, RPMERR_HDR_SIZE = -4,
RPMERR_UNKNOWN_FILETYPE = -5, RPMERR_MISSING_FILE = -6, RPMERR_DIGEST_MISMATCH = -7, RPMERR_INTERNAL = -8,
RPMERR_UNMAPPED_FILE = -9, RPMERR_ENOENT = -10, RPMERR_ENOTEMPTY = -11, RPMERR_FILE_SIZE = -12,
RPMERR_ITER_SKIP = -13, RPMERR_EXIST_AS_DIR = -14, RPMERR_OPEN_FAILED = -32768, RPMERR_CHMOD_FAILED = -32769,
RPMERR_CHOWN_FAILED = -32770, RPMERR_WRITE_FAILED = -32771, RPMERR_UTIME_FAILED = -32772, RPMERR_UNLINK_FAILED = -32773,
RPMERR_RENAME_FAILED = -32774, RPMERR_SYMLINK_FAILED = -32775, RPMERR_STAT_FAILED = -32776, RPMERR_LSTAT_FAILED = -32777,
RPMERR_MKDIR_FAILED = -32778, RPMERR_RMDIR_FAILED = -32779, RPMERR_MKNOD_FAILED = -32780, RPMERR_MKFIFO_FAILED = -32781,
RPMERR_LINK_FAILED = -32782, RPMERR_READLINK_FAILED = -32783, RPMERR_READ_FAILED = -32784, RPMERR_COPY_FAILED = -32785,
RPMERR_LSETFCON_FAILED = -32786, RPMERR_SETCAP_FAILED = -32787
}

## Functions

char * | rpmfileStrerror (int rc)
rpmfi | rpmfiNewArchiveWriter (FD_t fd, rpmfiles files)
rpmfi | rpmfiNewArchiveReader (FD_t fd, rpmfiles files, int itype)
int | rpmfiArchiveClose (rpmfi fi)
rpm_loff_t | rpmfiArchiveTell (rpmfi fi)
size_t | rpmfiArchiveWrite (rpmfi fi, const void *buf, size_t size)
int | rpmfiArchiveWriteFile (rpmfi fi, FD_t fd)
ssize_t | rpmfiArchiveRead (rpmfi fi, void *buf, size_t size)
int | rpmfiArchiveHasContent (rpmfi fi)
int | rpmfiArchiveReadToFile (rpmfi fi, FD_t fd, int nodigest)

## Detailed Description

File archive (aka payload) API.

Definition in file rpmarchive.h.

## Macro Definition Documentation

## RPMERR_CHECK_ERRNO

#define RPMERR_CHECK_ERRNO -32768

Definition at line 10 of file rpmarchive.h.

## Enumeration Type Documentation

## rpmfilesErrorCodes

enum rpmfilesErrorCodes

Error codes for archive and file handling

Enumerator
RPMERR_ITER_END |
RPMERR_BAD_MAGIC |
RPMERR_BAD_HEADER |
RPMERR_HDR_SIZE |
RPMERR_UNKNOWN_FILETYPE |
RPMERR_MISSING_FILE |
RPMERR_DIGEST_MISMATCH |
RPMERR_INTERNAL |
RPMERR_UNMAPPED_FILE |
RPMERR_ENOENT |
RPMERR_ENOTEMPTY |
RPMERR_FILE_SIZE |
RPMERR_ITER_SKIP |
RPMERR_EXIST_AS_DIR |
RPMERR_OPEN_FAILED |
RPMERR_CHMOD_FAILED |
RPMERR_CHOWN_FAILED |
RPMERR_WRITE_FAILED |
RPMERR_UTIME_FAILED |
RPMERR_UNLINK_FAILED |
RPMERR_RENAME_FAILED |
RPMERR_SYMLINK_FAILED |
RPMERR_STAT_FAILED |
RPMERR_LSTAT_FAILED |
RPMERR_MKDIR_FAILED |
RPMERR_RMDIR_FAILED |
RPMERR_MKNOD_FAILED |
RPMERR_MKFIFO_FAILED |
RPMERR_LINK_FAILED |
RPMERR_READLINK_FAILED |
RPMERR_READ_FAILED |
RPMERR_COPY_FAILED |
RPMERR_LSETFCON_FAILED |
RPMERR_SETCAP_FAILED |

Definition at line 14 of file rpmarchive.h.

## Function Documentation

## rpmfiArchiveClose()

int rpmfiArchiveClose | ( | rpmfi | fi | ) |

Close payload archive

Parameters

  fi | file info

Returns
  > 0 on error

## rpmfiArchiveHasContent()

int rpmfiArchiveHasContent | ( | rpmfi | fi | ) |

Has current file content stored in the archive

Parameters

  fi | file info @ return 1 for regular files but 0 for hardlinks without content

## rpmfiArchiveRead()

ssize_t rpmfiArchiveRead | ( | rpmfi | fi,
|  | void * | buf,
|  | size_t | size
| ) |  |

Read content from current file in archive

Parameters

  fi | file info
  buf | pointer to buffer
  size | number of bytes to read

Returns
  bytes actually read, -1 on error

## rpmfiArchiveReadToFile()

int rpmfiArchiveReadToFile | ( | rpmfi | fi,
|  | FD_t | fd,
|  | int | nodigest
| ) |  |

Write content from current file in archive to a file

Parameters

  fi | file info
  fd | file descriptor of file to write to
  nodigest | omit checksum check if 1

Returns
  > 0 on error

## rpmfiArchiveTell()

rpm_loff_t rpmfiArchiveTell | ( | rpmfi | fi | ) |

Return current position in payload archive

Parameters

  fi | file info

Returns
  position

## rpmfiArchiveWrite()

size_t rpmfiArchiveWrite | ( | rpmfi | fi,
|  | const void * | buf,
|  | size_t | size
| ) |  |

Write content into current file in archive

Parameters

  fi | file info
  buf | pointer to content
  size | number of bytes to write

Returns
  bytes actually written

## rpmfiArchiveWriteFile()

int rpmfiArchiveWriteFile | ( | rpmfi | fi,
|  | FD_t | fd
| ) |  |

Write content from given file into current file in archive

Parameters

  fi | file info
  fd | file descriptor of file to read

Returns
  > 0 on error

## rpmfileStrerror()

char* rpmfileStrerror | ( | int | rc | ) |

Return formatted error message on payload handling failure.

Parameters

  rc | error code

Returns
  formatted error string (malloced)

## rpmfiNewArchiveReader()

rpmfi rpmfiNewArchiveReader | ( | FD_t | fd,
|  | rpmfiles | files,
|  | int | itype
| ) |  |

Get new file iterator for looping over the archive content. Returned rpmfi visites files in the order they are read from the payload. Content of the regular files can be retrieved with rpmfiArchiveRead() or rpmfiArchiveReadToFile() when they are visited with rpmfiNext(). rpmfiSetFX() is not supported for this type of iterator.

Parameters

  fd | file
  files | file info
  itype | how to handle hard links. See rpmFileIter.

Returns
  new rpmfi

## rpmfiNewArchiveWriter()

rpmfi rpmfiNewArchiveWriter | ( | FD_t | fd,
|  | rpmfiles | files
| ) |  |

Get new file iterator for writing the archive content. The returned rpmfi will only visit the files needing some content. You need to provide the content using rpmfiArchiveWrite() or rpmfiArchiveWriteFile(). Make sure to close the rpmfi with rpmfiArchiveClose() to get the trailer written. rpmfiSetFX() is not supported for this type of iterator.

Parameters

  fd | file
  files | file info

Returns
  new rpmfi