rpm 4.20.1
The RPM Package Manager
Loading...
Searching...
No Matches
File archive (aka payload) API.

File archive (aka payload) API. More...

Files

file  rpmarchive.h
 

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_INVALID_SYMLINK = -15 , RPMERR_ENOTDIR = -16 ,
  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 ,
  RPMERR_CLOSE_FAILED = -32788
}
 

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.

Enumeration Type Documentation

◆ rpmfilesErrorCodes

Error codes for archive and file handling

Function Documentation

◆ rpmfiArchiveClose()

int rpmfiArchiveClose ( rpmfi fi)

Close payload archive

Parameters
fifile info
Returns
> 0 on error

◆ rpmfiArchiveHasContent()

int rpmfiArchiveHasContent ( rpmfi fi)

Has current file content stored in the archive

Parameters
fifile 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
fifile info
bufpointer to buffer
sizenumber 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
fifile info
fdfile descriptor of file to write to
nodigestomit checksum check if 1
Returns
> 0 on error

◆ rpmfiArchiveTell()

rpm_loff_t rpmfiArchiveTell ( rpmfi fi)

Return current position in payload archive

Parameters
fifile info
Returns
position

◆ rpmfiArchiveWrite()

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

Write content into current file in archive

Parameters
fifile info
bufpointer to content
sizenumber 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
fifile info
fdfile descriptor of file to read
Returns
> 0 on error

◆ rpmfileStrerror()

char * rpmfileStrerror ( int rc)

Return formatted error message on payload handling failure.

Parameters
rcerror 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
fdfile
filesfile info
itypehow 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
fdfile
filesfile info
Returns
new rpmfi