Main Page Modules Data Structures File List Data Fields Globals Related Pages

# RPMIO.

## Files

file | falloc.c
| The entire file space is thus divided into blocks with a "struct fablock" at the header of each.

file | macro.c
file | rpmerr.h
file | rpmio.c
file | rpmio.h
file | rpmio_internal.h
file | rpmlog.c
file | rpmmacro.h
file | rpmmalloc.c
file | rpmmessages.h
file | rpmpgp.c
| Routines to handle RFC-2440 detached signatures.

file | rpmpgp.h
| OpenPGP constants and structures from RFC-2440.

file | rpmrpc.c
file | rpmurl.h
file | strcasecmp.c
file | ugid.c
file | ugid.h
file | url.c

## Data Structures

struct | _FD_s
struct | _FDDIGEST_s
struct | _FDSTACK_s
struct | FDIO_s
struct | OPSTAT_t

## [NOHEADER]

typedef off_t | _libio_off_t
typedef off_t | _libio_pos_t

## RPMIO Vectors.

typedef ssize_t(* | fdio_read_function_t )(void *cookie, char *buf, size_t nbytes)
typedef ssize_t(* | fdio_write_function_t )(void *cookie, const char *buf, size_t nbytes)
typedef int(* | fdio_seek_function_t )(void *cookie, _libio_pos_t pos, int whence)
typedef int(* | fdio_close_function_t )(void *cookie)
typedef FD_t(* | fdio_ref_function_t )(void *cookie, const char *msg, const char *file, unsigned line)
typedef FD_t(* | fdio_deref_function_t )(FD_t fd, const char *msg, const char *file, unsigned line)
typedef FD_t(* | fdio_new_function_t )(const char *msg, const char *file, unsigned line)
typedef int(* | fdio_fileno_function_t )(void *cookie)
typedef FD_t(* | fdio_open_function_t )(const char *path, int flags, mode_t mode)
typedef FD_t(* | fdio_fopen_function_t )(const char *path, const char *fmode)
typedef void *(* | fdio_ffileno_function_t )(FD_t fd)
typedef int(* | fdio_fflush_function_t )(FD_t fd)

## RPMIO Interface.

const char * | Fstrerror (FD_t fd)
| strerror(3) clone. More...
size_t | Fread (void *buf, size_t size, size_t nmemb, FD_t fd)
| fread(3) clone. More...
size_t | Fwrite (const void *buf, size_t size, size_t nmemb, FD_t fd)
| fwrite(3) clone. More...
int | Fseek (FD_t fd, _libio_off_t offset, int whence)
| fseek(3) clone. More...
int | Fclose (FD_t fd)
| fclose(3) clone. More...
FD_t | Fdopen (FD_t ofd, const char *fmode)
FD_t | Fopen (const char *path, const char *fmode)
| fopen(3) clone. More...
int | Fflush (FD_t fd)
| fflush(3) clone. More...
int | Ferror (FD_t fd)
| ferror(3) clone. More...
int | Fileno (FD_t fd)
| fileno(3) clone. More...
int | Fcntl (FD_t fd, int op, void *lip)
| fcntl(2) clone. More...

## RPMIO Utilities.

off_t | fdSize (FD_t fd)

## Typedefs

typedef _FD_s * | FD_t
typedef FDIO_s * | FDIO_t
typedef _FDSTACK_s | FDSTACK_t
struct {
timeval create
timeval begin
OPSTAT_t ops [4]
} | FDSTAT_t
typedef enum rpmDigestFlags_e | rpmDigestFlags
typedef _FDDIGEST_s * | FDDIGEST_t

## Enumerations

enum | FDSTAT_e { FDSTAT_READ = 0, FDSTAT_WRITE = 1, FDSTAT_SEEK = 2, FDSTAT_CLOSE = 3 }
enum | rpmDigestFlags_e { RPMDIGEST_NONE = 0 }

## Functions

int | xstrcasecmp (const char *s1, const char *s2)
int | xstrncasecmp (const char *s1, const char *s2, size_t n)
DIGEST_CTX | rpmDigestDup (DIGEST_CTX octx)
DIGEST_CTX | rpmDigestInit (pgpHashAlgo hashalgo, rpmDigestFlags flags)
int | rpmDigestUpdate (DIGEST_CTX ctx, const void *data, size_t len)
int | rpmDigestFinal (DIGEST_CTX ctx, void **datap, size_t *lenp, int asAscii)
int | fdFgets (FD_t fd, char *buf, size_t len)
FD_t | ftpOpen (const char *url, int flags, mode_t mode, urlinfo *uret)
int | ftpReq (FD_t data, const char *ftpCmd, const char *ftpArg)
int | ftpCmd (const char *cmd, const char *url, const char *arg2)
int | ufdClose (void *cookie)
const FDIO_t | fdGetIo (FD_t fd)
void | fdSetIo (FD_t fd, FDIO_t io)
FILE * | fdGetFILE (FD_t fd)
void * | fdGetFp (FD_t fd)
void | fdSetFp (FD_t fd, void *fp)
int | fdGetFdno (FD_t fd)
void | fdSetFdno (FD_t fd, int fdno)
void | fdSetContentLength (FD_t fd, ssize_t contentLength)
void | fdPush (FD_t fd, FDIO_t io, void *fp, int fdno)
void | fdPop (FD_t fd)
void | fdstat_enter (FD_t fd, int opx)
time_t | tvsub (const struct timeval *etv, const struct timeval *btv)
void | fdstat_exit (FD_t fd, int opx, ssize_t rc)
void | fdstat_print (FD_t fd, const char *msg, FILE *fp)
void | fdSetSyserrno (FD_t fd, int syserrno, const void *errcookie)
int | fdGetRdTimeoutSecs (FD_t fd)
long int | fdGetCpioPos (FD_t fd)
void | fdSetCpioPos (FD_t fd, long int cpioPos)
FD_t | c2f (void *cookie)
void | fdInitDigest (FD_t fd, pgpHashAlgo hashalgo, int flags)
void | fdUpdateDigests (FD_t fd, const byte *buf, ssize_t buflen)
void | fdFiniDigest (FD_t fd, pgpHashAlgo hashalgo, void **datap, size_t *lenp, int asAscii)
int | fdFileno (void *cookie)

## Typedef Documentation

typedef off_t _libio_off_t

| Definition at line 39 of file rpmio.h. Referenced by Pread, Pwrite, and xstrcasecmp.

typedef off_t _libio_pos_t

| Definition at line 40 of file rpmio.h. Referenced by xstrcasecmp.

typedef struct _FD_s* FD_t

| Definition at line 46 of file rpmio.h.

typedef struct _FDDIGEST_s * FDDIGEST_t

typedef int(* fdio_close_function_t)(void *cookie)

| Definition at line 81 of file rpmio.h.

typedef FD_t(* fdio_deref_function_t)( FD_t fd, const char * msg, const char * file, unsigned line)

| Definition at line 95 of file rpmio.h.

typedef void*(* fdio_ffileno_function_t)(FD_t fd)

| Definition at line 130 of file rpmio.h.

typedef int(* fdio_fflush_function_t)(FD_t fd)

| Definition at line 136 of file rpmio.h.

typedef int(* fdio_fileno_function_t)(void * cookie)

| Definition at line 111 of file rpmio.h.

typedef FD_t(* fdio_fopen_function_t)(const char * path, const char * fmode)

| Definition at line 124 of file rpmio.h.

typedef FD_t(* fdio_new_function_t)(const char * msg, const char * file, unsigned line)

| Definition at line 103 of file rpmio.h.

typedef FD_t(* fdio_open_function_t)(const char * path, int flags, mode_t mode)

| Definition at line 118 of file rpmio.h.

typedef ssize_t(* fdio_read_function_t)(void *cookie, char *buf, size_t nbytes)

| Definition at line 63 of file rpmio.h.

typedef FD_t(* fdio_ref_function_t)( void * cookie, const char * msg, const char * file, unsigned line)

| Definition at line 88 of file rpmio.h.

typedef int(* fdio_seek_function_t)(void *cookie, _libio_pos_t pos, int whence)

| Definition at line 75 of file rpmio.h.

typedef struct FDIO_s* FDIO_t

| Definition at line 50 of file rpmio.h.

typedef ssize_t(* fdio_write_function_t)(void *cookie, const char *buf, size_t nbytes)

| Definition at line 69 of file rpmio.h. Referenced by Mkdir.

typedef struct _FDSTACK_s FDSTACK_t

typedef { ... } * FDSTAT_t

| Cumulative statistics for a descriptor.

typedef enum rpmDigestFlags_e rpmDigestFlags

| Bit(s) to control digest operation. Referenced by rpmDigestInit.

## Enumeration Type Documentation

enum FDSTAT_e

Identify per-desciptor I/O operation statistics.

Enumeration values:

  FDSTAT_READ | Read statistics index.
  FDSTAT_WRITE | Write statistics index.
  FDSTAT_SEEK | Seek statistics index.
  FDSTAT_CLOSE | Close statistics index

Definition at line 33 of file rpmio_internal.h.

enum rpmDigestFlags_e

Bit(s) to control digest operation.

Enumeration values:

  RPMDIGEST_NONE |

Definition at line 52 of file rpmio_internal.h.

## Function Documentation

FD_t c2f | ( | void * | cookie | ) | `[inline, static]`

| Definition at line 441 of file rpmio_internal.h. References FDSANE. Referenced by fdFileno.

int Fclose | ( | FD_t | fd | ) |

fclose(3) clone.

Referenced by addFileToTagAux, closeCallback, closeSpec, cpio_doio, db1close, defaultMachine, domd5, doReadRC, doScript, fadOpen, IDTXglob, isCompressed, isSpecFile, main, makeGPGSignature, makePGPSignature, makeTempFile, manageFile, processPackageFiles, readIcon, readLine, readRPM, rewriteRPM, rpmInitMacros, rpmInstall, rpmInstallSource, rpmQueryVerify, rpmShowProgress, rpmtransDealloc, tsCallback, urlGetFile, verifyGPGSignature, verifyPGPSignature, writeRPM, and XurlFree.

int Fcntl | ( | FD_t | fd,
|  | int | op,
|  | void * | lip
| ) |

| fcntl(2) clone. Referenced by db1open.

int fdFgets | ( | FD_t | fd,
|  | char * | buf,
|  | size_t | len
| ) |

| Referenced by ftpNLST.

int fdFileno | ( | void * | cookie | ) | `[inline, static]`

| Definition at line 521 of file rpmio_internal.h. References c2f, _FDSTACK_s::fdno, and _FD_s::fps.

void fdFiniDigest | ( | FD_t | fd,
|  | pgpHashAlgo | hashalgo,
|  | void ** | datap,
|  | size_t * | lenp,
|  | int | asAscii
| ) | `[inline, static]`

| Definition at line 487 of file rpmio_internal.h. References _FD_s::digests, _FDDIGEST_s::hashalgo, _FDDIGEST_s::hashctx, _FD_s::ndigests, pgpHashAlgo, and rpmDigestFinal. Referenced by domd5, and writeRPM.

long int fdGetCpioPos | ( | FD_t | fd | ) | `[inline, static]`

| Definition at line 421 of file rpmio_internal.h. References _FD_s::fd_cpioPos, and FDSANE.

int fdGetFdno | ( | FD_t | fd | ) | `[inline, static]`

| Definition at line 256 of file rpmio_internal.h. References FDSANE, _FD_s::fps, and _FD_s::nfps.

FILE* fdGetFILE | ( | FD_t | fd | ) | `[inline, static]`

| Definition at line 220 of file rpmio_internal.h. References FDSANE, _FD_s::fps, and _FD_s::nfps. Referenced by rdcl.

void* fdGetFp | ( | FD_t | fd | ) | `[inline, static]`

| Definition at line 232 of file rpmio_internal.h. References FDSANE, _FD_s::fps, and _FD_s::nfps. Referenced by addFileToTagAux, doFopen, doScript, processPackageFiles, readLine, rpmReadPackageManifest, and XurlFree.

const FDIO_t fdGetIo | ( | FD_t | fd | ) | `[inline, static]`

| Definition at line 196 of file rpmio_internal.h. References FDSANE, _FD_s::fps, and _FD_s::nfps.

int fdGetRdTimeoutSecs | ( | FD_t | fd | ) | `[inline, static]`

| Definition at line 411 of file rpmio_internal.h. References FDSANE, and _FD_s::rd_timeoutsecs.

void fdInitDigest | ( | FD_t | fd,
|  | pgpHashAlgo | hashalgo,
|  | int | flags
| ) | `[inline, static]`

| Attach digest to fd. Definition at line 455 of file rpmio_internal.h. References _FD_s::digests, FDDIGEST_MAX, _FDDIGEST_s::hashalgo, _FDDIGEST_s::hashctx, _FD_s::ndigests, pgpHashAlgo, and rpmDigestInit. Referenced by domd5, and writeRPM.

FD_t Fdopen | ( | FD_t | ofd,
|  | const char * | fmode
| ) |

| Referenced by cpio_doio, doScript, and main.

void fdPop | ( | FD_t | fd | ) | `[inline, static]`

| Definition at line 300 of file rpmio_internal.h. References FDSANE, fdSetFdno, fdSetFp, fdSetIo, and _FD_s::nfps.

void fdPush | ( | FD_t | fd,
|  | FDIO_t | io,
|  | void * | fp,
|  | int | fdno
| ) | `[inline, static]`

| Definition at line 286 of file rpmio_internal.h. References FDSANE, fdSetFdno, fdSetFp, fdSetIo, _FD_s::fps, and _FD_s::nfps. Referenced by XurlFree.

void fdSetContentLength | ( | FD_t | fd,
|  | ssize_t | contentLength
| ) | `[inline, static]`

| Definition at line 276 of file rpmio_internal.h. References _FD_s::bytesRemain, _FD_s::contentLength, and FDSANE. Referenced by db1cput.

void fdSetCpioPos | ( | FD_t | fd,
|  | long int | cpioPos
| ) | `[inline, static]`

| Definition at line 431 of file rpmio_internal.h. References _FD_s::fd_cpioPos, and FDSANE.

void fdSetFdno | ( | FD_t | fd,
|  | int | fdno
| ) | `[inline, static]`

| Definition at line 266 of file rpmio_internal.h. References FDSANE, _FD_s::fps, and _FD_s::nfps. Referenced by fdPop, and fdPush.

void fdSetFp | ( | FD_t | fd,
|  | void * | fp
| ) | `[inline, static]`

| Definition at line 243 of file rpmio_internal.h. References FDSANE, _FD_s::fps, and _FD_s::nfps. Referenced by fdPop, and fdPush.

void fdSetIo | ( | FD_t | fd,
|  | FDIO_t | io
| ) | `[inline, static]`

| Definition at line 207 of file rpmio_internal.h. References FDSANE, _FD_s::fps, and _FD_s::nfps. Referenced by fadOpen, fdPop, and fdPush.

void fdSetSyserrno | ( | FD_t | fd,
|  | int | syserrno,
|  | const void * | errcookie
| ) | `[inline, static]`

| Definition at line 398 of file rpmio_internal.h. References _FD_s::errcookie, FDSANE, and _FD_s::syserrno.

off_t fdSize | ( | FD_t | fd | ) |

| Referenced by doReadRC, and readIcon.

void fdstat_enter | ( | FD_t | fd,
|  | int | opx
| ) | `[inline, static]`

| Definition at line 313 of file rpmio_internal.h. References _FD_s::stats.

void fdstat_exit | ( | FD_t | fd,
|  | int | opx,
|  | ssize_t | rc
| ) | `[inline, static]`

| Definition at line 339 of file rpmio_internal.h. References _FD_s::bytesRemain, errno, FDSTAT_SEEK, _FD_s::stats, _FD_s::syserrno, and tvsub.

void fdstat_print | ( | FD_t | fd,
|  | const char * | msg,
|  | FILE * | fp
| ) | `[inline, static]`

| Definition at line 365 of file rpmio_internal.h. References OPSTAT_t::bytes, OPSTAT_t::count, FDSTAT_CLOSE, FDSTAT_READ, FDSTAT_SEEK, FDSTAT_WRITE, OPSTAT_t::msecs, ops, and _FD_s::stats.

void fdUpdateDigests | ( | FD_t | fd,
|  | const byte * | buf,
|  | ssize_t | buflen
| ) | `[inline, static]`

| Update digest(s) attached to fd. Definition at line 470 of file rpmio_internal.h. References _FD_s::digests, _FDDIGEST_s::hashctx, _FD_s::ndigests, and rpmDigestUpdate.

int Ferror | ( | FD_t | fd | ) |

ferror(3) clone.

Referenced by addFileToTagAux, cpio_copy, db1open, defaultMachine, doFopen, domd5, doReadRC, doScript, fadOpen, IDTXglob, isCompressed, isSpecFile, main, makeGPGSignature, makePGPSignature, makeTempFile, manageFile, processPackageFiles, readIcon, readLine, readRPM, rpmInitMacros, rpmInstall, rpmInstallSource, rpmQueryVerify, rpmReadRC, urlGetFile, verifyGPGSignature, verifyPGPSignature, and writeRPM.

int Fflush | ( | FD_t | fd | ) |

| fflush(3) clone. Referenced by cpio_doio, and writeRPM.

int Fileno | ( | FD_t | fd | ) |

| fileno(3) clone. Referenced by checkSize, cpio_doio, db1sync, doScript, makeTempFile, readPackageHeaders, and writeRPM.

FD_t Fopen | ( | const char * | path,
|  | const char * | fmode
| ) |

| fopen(3) clone. Referenced by addFileToTagAux, defaultMachine, doFopen, domd5, doReadRC, IDTXglob, isCompressed, isSpecFile, main, makeGPGSignature, makePGPSignature, makeTempFile, manageFile, processPackageFiles, readIcon, readLine, readRPM, rpmInitMacros, rpmInstall, rpmInstallSource, rpmQueryVerify, rpmReadRC, rpmShowProgress, urlGetFile, verifyGPGSignature, verifyPGPSignature, and writeRPM.

size_t Fread | ( | void * | buf,
|  | size_t | size,
|  | size_t | nmemb,
|  | FD_t | fd
| ) |

| fread(3) clone. Referenced by copyFile, cpio_copy, defaultMachine, domd5, doReadRC, isCompressed, isSpecFile, main, Pread, readIcon, readRPM, and writeRPM.

int Fseek | ( | FD_t | fd,
|  | _libio_off_t | offset,
|  | int | whence
| ) |

| fseek(3) clone. Referenced by db1cput, doGetRecord, fadOpen, Pread, Pwrite, readRPM, and writeRPM.

const char* Fstrerror | ( | FD_t | fd | ) |

| strerror(3) clone. Referenced by copyFile, cpio_copy, doFopen, doReadRC, IDTXglob, isCompressed, isSpecFile, main, manageFile, processPackageFiles, readIcon, readLead, readLine, readRPM, rpmInstall, rpmInstallSource, rpmQueryVerify, rpmReadRC, rpmReSign, urlGetFile, and writeRPM.

int ftpCmd | ( | const char * | cmd,
|  | const char * | url,
|  | const char * | arg2
| ) |

| Referenced by ftpChdir, ftpMkdir, ftpRename, ftpRmdir, and ftpUnlink.

FD_t ftpOpen | ( | const char * | url,
|  | int | flags,
|  | mode_t | mode,
|  | urlinfo * | uret
| ) |

| Referenced by ftpNLST.

int ftpReq | ( | FD_t | data,
|  | const char * | ftpCmd,
|  | const char * | ftpArg
| ) |

| Referenced by ftpNLST.

size_t Fwrite | ( | const void * | buf,
|  | size_t | size,
|  | size_t | nmemb,
|  | FD_t | fd
| ) |

| fwrite(3) clone. Referenced by copyFile, cpio_copy, fadOpen, headerWrite, main, Pwrite, rpmWriteSignature, verifyGPGSignature, verifyPGPSignature, writeLead, and writeRPM.

DIGEST_CTX rpmDigestDup | ( | DIGEST_CTX | octx | ) |

Duplicate a digest context.

Parameters:

  octx | existing digest context

Returns:
  duplicated digest context

Definition at line 39 of file digest.c.

int rpmDigestFinal | ( | DIGEST_CTX | ctx,
|  | void ** | datap,
|  | size_t * | lenp,
|  | int | asAscii
| ) |

Return digest and destroy context. Final wrapup - pad to 64-byte boundary with the bit pattern 1 0* (64-bit count of bits processed, MSB-first)

Parameters:

  ctx | digest context

Return values:

  datap | address of returned digest
  lenp | address of digest length

Parameters:

  asAscii | return digest as ascii string?

Returns:
  0 on success

Definition at line 119 of file digest.c.

References _FD_s::fps.

Referenced by fdFiniDigest, and pgpFreeDig.

DIGEST_CTX rpmDigestInit | ( | pgpHashAlgo | hashalgo,
|  | rpmDigestFlags | flags
| ) |

Initialize digest. Set bit count to 0 and buffer to mysterious initialization constants.

Parameters:

  flags | bit(s) to control digest operation

Returns:
  digest context

Definition at line 47 of file digest.c.

Referenced by fdInitDigest.

int rpmDigestUpdate | ( | DIGEST_CTX | ctx,
|  | const void * | data,
|  | size_t | len
| ) |

Update context with next plain text buffer.

Parameters:

  ctx | digest context
  data | next data buffer
  len | no. bytes of data

Returns:
  0 on success

Definition at line 99 of file digest.c.

Referenced by fdUpdateDigests.

time_t tvsub | ( | const struct timeval * | etv,
|  | const struct timeval * | btv
| ) | `[inline, static]`

| Definition at line 324 of file rpmio_internal.h. Referenced by fdstat_exit.

int ufdClose | ( | void * | cookie | ) |

| Referenced by ftpNLST.

int xstrcasecmp | ( | const char * | s1,
|  | const char * | s2
| ) |

| Locale insensitive strcasecmp(3). Definition at line 9 of file strcasecmp.c. References _libio_off_t, and _libio_pos_t.

int xstrncasecmp | ( | const char * | s1,
|  | const char * | s2,
|  | size_t | n
| ) |

| Locale insensitive strncasecmp(3). Definition at line 30 of file strcasecmp.c.

## Variable Documentation

struct { ... } begin`[inherited]`

| Operation start time. Definition at line 45 of file rpmio_internal.h.

struct { ... } create`[inherited]`

| Structure creation time. Definition at line 44 of file rpmio_internal.h.

OPSTAT_t { ... } ops[4]`[inherited]`

| Cumulative statistics. Definition at line 46 of file rpmio_internal.h.