# rpmio.h File Reference

`#include <sys/types.h>`
`#include <sys/stat.h>`
`#include <dirent.h>`
`#include <glob.h>`
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <unistd.h>`

Go to the source code of this file.

## RPMIO Utilities.

#define | fdFileno(_fd) fdio->_fileno(_fd)
#define | fdOpen(_path, _flags, _mode) fdio->_open((_path), (_flags), (_mode))
#define | fdRead(_fd, _buf, _count) fdio->read((_fd), (_buf), (_count))
#define | fdWrite(_fd, _buf, _count) fdio->write((_fd), (_buf), (_count))
#define | fdCLose(_fd) fdio->close(_fd)
#define | fdLink(_fd, _msg) fdio->_fdref(_fd, _msg, __FILE__, __LINE__)
#define | fdFree(_fd, _msg) fdio->_fdderef(_fd, _msg, __FILE__, __LINE__)
#define | fdNew(_msg) fdio->_fdnew(_msg, __FILE__, __LINE__)
#define | timedRead ufdio->read
typedef enum ftperrCode_e | ftperrCode
| FTP and HTTP error codes.
enum | ftperrCode_e { FTPERR_BAD_SERVER_RESPONSE = -1, FTPERR_SERVER_IO_ERROR = -2, FTPERR_SERVER_TIMEOUT = -3, FTPERR_BAD_HOST_ADDR = -4, FTPERR_BAD_HOSTNAME = -5, FTPERR_FAILED_CONNECT = -6, FTPERR_FILE_IO_ERROR = -7, FTPERR_PASSIVE_ERROR = -8, FTPERR_FAILED_DATA_CONNECT = -9, FTPERR_FILE_NOT_FOUND = -10, FTPERR_NIC_ABORT_IN_PROGRESS = -11, FTPERR_UNKNOWN = -100 }
| FTP and HTTP error codes. More...
off_t | fdSize (FD_t fd)
FD_t | fdDup (int fdno)
int | fdFileno (void *cookie)
FD_t | fdOpen (const char *path, int flags, mode_t mode)
ssize_t | fdRead (void *cookie, char *buf, size_t count)
ssize_t | fdWrite (void *cookie, const char *buf, size_t count)
int | fdClose (void *cookie)
FD_t | fdLink (void *cookie, const char *msg)
FD_t | fdFree (FD_t fd, const char *msg)
FD_t | fdNew (const char *msg)
int | fdWritable (FD_t fd, int secs)
int | fdReadable (FD_t fd, int secs)
const char *const | ftpStrerror (int errorNumber)
void * | ufdGetUrlinfo (FD_t fd)
const char * | urlStrerror (const char *url)
int | ufdCopy (FD_t sfd, FD_t tfd)
int | ufdGetFile (FD_t sfd, FD_t tfd)
int | timedRead (FD_t fd, void *bufptr, int length)
FDIO_t | fdio
FDIO_t | fpio
FDIO_t | ufdio
FDIO_t | gzdio
FDIO_t | bzdio
FDIO_t | fadio

## 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)

## RPMRPC Vectors.

typedef int(* | fdio_mkdir_function_t )(const char *path, mode_t mode)
typedef int(* | fdio_chdir_function_t )(const char *path)
typedef int(* | fdio_rmdir_function_t )(const char *path)
typedef int(* | fdio_rename_function_t )(const char *oldpath, const char *newpath)
typedef int(* | fdio_unlink_function_t )(const char *path)
typedef int(* | fdio_stat_function_t )(const char *path, struct stat *st)
typedef int(* | fdio_lstat_function_t )(const char *path, struct stat *st)
typedef int(* | fdio_access_function_t )(const char *path, int amode)

## RPMIO Interface.

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

## RPMRPC Interface.

int | Mkdir (const char *path, mode_t mode)
| mkdir(2) clone.
int | Chdir (const char *path)
| chdir(2) clone.
int | Rmdir (const char *path)
| rmdir(2) clone.
int | Rename (const char *oldpath, const char *newpath)
| rename(2) clone.
int | Link (const char *oldpath, const char *newpath)
| link(2) clone.
int | Unlink (const char *path)
| unlink(2) clone.
int | Readlink (const char *path, char *buf, size_t bufsiz)
| readlink(2) clone.
int | Stat (const char *path, struct stat *st)
| stat(2) clone.
int | Lstat (const char *path, struct stat *st)
| lstat(2) clone.
int | Access (const char *path, int amode)
| access(2) clone.
int | Glob (const char *pattern, int flags, int errfunc(const char *epath, int eerrno), glob_t *pglob)
| glob(3) clone.
void | Globfree (glob_t *pglob)
| globfree(3) clone.
DIR * | Opendir (const char *path)
| opendir(3) clone.
dirent * | Readdir (DIR *dir)
| readdir(3) clone.
int | Closedir (DIR *dir)
| closedir(3) clone.

## Typedefs

typedef _FD_s * | FD_t
typedef FDIO_s * | FDIO_t

## Functions

static int | xislower (int c)
static int | xisupper (int c)
static int | xisalpha (int c)
static int | xisdigit (int c)
static int | xisalnum (int c)
static int | xisblank (int c)
static int | xisspace (int c)
static int | xtolower (int c)
static int | xtoupper (int c)
int | xstrcasecmp (const char *s1, const char *s2)
int | xstrncasecmp (const char *s1, const char *s2, size_t n)

## Detailed Description

Definition in file rpmio.h.

## Define Documentation

#define fdCLose | ( | _fd |  | ) | fdio->close(_fd)

| Definition at line 485 of file rpmio.h.

#define fdFileno | ( | _fd |  | ) | fdio->_fileno(_fd)

| Definition at line 456 of file rpmio.h. Referenced by fdClose(), fdFgets(), fdRead(), fdReadable(), fdSeek(), fdWritable(), fdWrite(), Ferror(), Fopen(), ftpAbort(), ftpLogin(), ftpReq(), httpReq(), ufdRead(), and urlConnect().

#define fdFree | ( | _fd,
|  | _msg |  | ) | fdio->_fdderef(_fd, _msg, __FILE__, __LINE__)

| Definition at line 503 of file rpmio.h. Referenced by alFree(), closeCallback(), Fclose(), fdClose(), fsmTeardown(), ftpAbort(), ftpCmd(), ftpFileDone(), manageFile(), packageBinaries(), packageSources(), rpmShowProgress(), rpmtransFree(), ufdClose(), and urlConnect().

#define fdLink | ( | _fd,
|  | _msg |  | ) | fdio->_fdref(_fd, _msg, __FILE__, __LINE__)

| Definition at line 494 of file rpmio.h. Referenced by alAddPackage(), closeCallback(), doFopen(), Fclose(), Fdopen(), fsmSetup(), ftpLogin(), ftpNLST(), ftpOpen(), ftpReq(), httpOpen(), httpReq(), manageFile(), rpmShowProgress(), rpmtransSetScriptFd(), rpmVerifyScript(), runScript(), ufdOpen(), and urlConnect().

#define fdNew | ( | _msg |  | ) | fdio->_fdnew(_msg, __FILE__, __LINE__)

| Definition at line 512 of file rpmio.h. Referenced by fdDup(), fdOpen(), ftpOpen(), httpOpen(), packageBinaries(), packageSources(), rewriteRPM(), and urlConnect().

#define fdOpen | ( | _path,
|  | _flags,
|  | _mode |  | ) | fdio->_open((_path), (_flags), (_mode))

| Definition at line 464 of file rpmio.h. Referenced by Fopen(), and ufdOpen().

#define fdRead | ( | _fd,
|  | _buf,
|  | _count |  | ) | fdio->read((_fd), (_buf), (_count))

| Definition at line 471 of file rpmio.h. Referenced by fdFgets(), and ufdRead().

#define fdWrite | ( | _fd,
|  | _buf,
|  | _count |  | ) | fdio->write((_fd), (_buf), (_count))

| Definition at line 478 of file rpmio.h. Referenced by ftpAbort(), ftpCommand(), ftpReq(), httpReq(), ufdClose(), and ufdWrite().

#define timedRead ufdio->read

| Definition at line 585 of file rpmio.h. Referenced by ftpAbort(), makeGPGSignature(), makePGPSignature(), readLead(), and rpmReadSignature().

## Typedef Documentation

typedef enum ftperrCode_e ftperrCode

| FTP and HTTP error codes.

## Enumeration Type Documentation

enum ftperrCode_e

FTP and HTTP error codes.

Enumeration values:

  FTPERR_BAD_SERVER_RESPONSE | Bad server response
  FTPERR_SERVER_IO_ERROR | Server I/O error
  FTPERR_SERVER_TIMEOUT | Server timeout
  FTPERR_BAD_HOST_ADDR | Unable to lookup server host address
  FTPERR_BAD_HOSTNAME | Unable to lookup server host name
  FTPERR_FAILED_CONNECT | Failed to connect to server
  FTPERR_FILE_IO_ERROR | Failed to establish data connection to server
  FTPERR_PASSIVE_ERROR | I/O error to local file
  FTPERR_FAILED_DATA_CONNECT | Error setting remote server to passive mode
  FTPERR_FILE_NOT_FOUND | File not found on server
  FTPERR_NIC_ABORT_IN_PROGRESS | Abort in progress
  FTPERR_UNKNOWN | Unknown or unexpected error

Definition at line 531 of file rpmio.h.

## Function Documentation

int fdClose | ( | void * | cookie | ) |

| Definition at line 456 of file rpmio.c. References c2f(), DBGIO, fdbg(), fdFileno, fdFree, fdSetFdno(), FDSTAT_CLOSE, fdstat_enter(), and fdstat_exit(). Referenced by Fopen(), ftpAbort(), ftpLogin(), ftpReq(), httpReq(), and ufdClose().

FD_t fdDup | ( | int | fdno | ) |

| Definition at line 229 of file rpmio.c. References DBGIO, fdbg(), fdNew, and fdSetFdno(). Referenced by cpio_doio(), main(), psmStage(), readRPM(), rpmHeaderFromFD(), rpmHeaderFromPackage(), rpmMergeHeadersFromFD(), rpmtransSetAttr(), runScript(), showVerifyPackage(), tsCallback(), and ufdOpen().

int fdFileno | ( | void * | cookie | ) |

FD_t fdFree | ( | FD_t | fd,
|  | const char * | msg
| ) |

FD_t fdLink | ( | void * | cookie,
|  | const char * | msg
| ) |

FD_t fdNew | ( | const char * | msg | ) |

FD_t fdOpen | ( | const char * | path,
|  | int | flags,
|  | mode_t | mode
| ) |

| Definition at line 482 of file rpmio.c. References DBGIO, fdbg(), fdNew, fdSetFdno(), and _FD_s::flags.

ssize_t fdRead | ( | void * | cookie,
|  | char * | buf,
|  | size_t | count
| ) |

| Definition at line 373 of file rpmio.c. References _FD_s::bytesRemain, c2f(), DBGIO, fdbg(), fdFileno, fdstat_enter(), fdstat_exit(), FDSTAT_READ, fdUpdateDigests(), and _FD_s::ndigests.

int fdReadable | ( | FD_t | fd,
|  | int | secs
| ) |

| Definition at line 567 of file rpmio.c. References errno, and fdFileno. Referenced by fdFgets(), ftpAbort(), ufdClose(), and ufdRead().

int fdWritable | ( | FD_t | fd,
|  | int | secs
| ) |

| Definition at line 527 of file rpmio.c. References _rpmio_debug, errno, fdFileno, and strerror(). Referenced by checkResponse(), ftpLogin(), httpReq(), and ufdWrite().

ssize_t fdWrite | ( | void * | cookie,
|  | const char * | buf,
|  | size_t | count
| ) |

| Definition at line 395 of file rpmio.c. References _FD_s::bytesRemain, c2f(), DBGIO, errno, fdbg(), fdFileno, fdstat_enter(), fdstat_exit(), FDSTAT_WRITE, fdUpdateDigests(), _FD_s::ndigests, _FD_s::syserrno, and _FD_s::wr_chunked.

const char* const ftpStrerror | ( | int | errorNumber | ) |

Definition at line 671 of file rpmio.c.

References _, FTPERR_BAD_HOST_ADDR, FTPERR_BAD_HOSTNAME, FTPERR_BAD_SERVER_RESPONSE, FTPERR_FAILED_CONNECT, FTPERR_FAILED_DATA_CONNECT, FTPERR_FILE_IO_ERROR, FTPERR_FILE_NOT_FOUND, FTPERR_NIC_ABORT_IN_PROGRESS, FTPERR_PASSIVE_ERROR, FTPERR_SERVER_IO_ERROR, FTPERR_SERVER_TIMEOUT, and FTPERR_UNKNOWN.

Referenced by doUntar(), ftpLogin(), ftpReq(), httpReq(), rpmInstall(), tcpConnect(), ufdCopy(), and urlStrerror().

int timedRead | ( | FD_t | fd,
|  | void * | bufptr,
|  | int | length
| ) |

int ufdCopy | ( | FD_t | sfd,
|  | FD_t | tfd
| ) |

| Definition at line 1298 of file rpmio.c. References DBGIO, Fread(), FTPERR_FILE_IO_ERROR, ftpStrerror(), Fwrite(), RPMCALLBACK_INST_OPEN_FILE, RPMCALLBACK_INST_PROGRESS, urlNotify, urlNotifyCount, and urlNotifyData. Referenced by main(), and ufdGetFile().

int ufdGetFile | ( | FD_t | sfd,
|  | FD_t | tfd
| ) |

| Definition at line 1402 of file rpmio.c. References Fclose(), FDSANE, and ufdCopy(). Referenced by urlGetFile().

void* ufdGetUrlinfo | ( | FD_t | fd | ) |

| Definition at line 1665 of file rpmio.c. References FDSANE, _FD_s::url, and urlLink.

const char* urlStrerror | ( | const char * | url | ) |

| Definition at line 715 of file rpmio.c. References errno, ftpStrerror(), urlinfo_s::openError, strerror(), URL_IS_FTP, URL_IS_HTTP, urlIsURL(), and urlSplit().

static int xisalnum | ( | int | c | ) | `[inline, static]`

| Definition at line 626 of file rpmio.h. References xisalpha(), and xisdigit(). Referenced by expandMacro(), parseRCPOT(), rdToken(), and rpmvercmp().

static int xisalpha | ( | int | c | ) | `[inline, static]`

| Definition at line 620 of file rpmio.h. References xislower(), and xisupper(). Referenced by doDefine(), doUndefine(), parseBits(), rdToken(), rpmvercmp(), and xisalnum().

static int xisblank | ( | int | c | ) | `[inline, static]`

| Definition at line 629 of file rpmio.h. Referenced by xisspace().

static int xisdigit | ( | int | c | ) | `[inline, static]`

| Definition at line 623 of file rpmio.h. Referenced by defaultMachine(), doFoo(), getHostAddress(), parseEVR(), parseForDev(), parseFormat(), rdToken(), rpmvercmp(), and xisalnum().

static int xislower | ( | int | c | ) | `[inline, static]`

| Definition at line 614 of file rpmio.h. Referenced by xisalpha(), and xtoupper().

static int xisspace | ( | int | c | ) | `[inline, static]`

| Definition at line 632 of file rpmio.h. References xisblank().

static int xisupper | ( | int | c | ) | `[inline, static]`

| Definition at line 617 of file rpmio.h. Referenced by xisalpha(), and xtolower().

static int xtolower | ( | int | c | ) | `[inline, static]`

| Definition at line 636 of file rpmio.h. References xisupper(). Referenced by rpmRebuildTargetVars(), tagName(), xstrcasecmp(), and xstrncasecmp().

static int xtoupper | ( | int | c | ) | `[inline, static]`

| Definition at line 639 of file rpmio.h. References xislower().

## Variable Documentation

FDIO_t bzdio

| Referenced by fdbg(), Fdopen(), Ferror(), Fflush(), and getFdErrstr().

FDIO_t fadio

| Definition at line 51 of file falloc.c.

FDIO_t fdio

| Definition at line 521 of file rpmio.c. Referenced by fadOpen(), fdbg(), Fdopen(), ufdRead(), ufdWrite(), XfdNew(), and XurlFree().

FDIO_t fpio

| Definition at line 3173 of file rpmio.c. Referenced by Fclose(), fdbg(), Fdopen(), Ferror(), Fflush(), Fopen(), Fread(), Fseek(), Fwrite(), and XurlFree().

FDIO_t gzdio

| Referenced by fdbg(), Fdopen(), Ferror(), Fflush(), and getFdErrstr().

FDIO_t ufdio

| Definition at line 2124 of file rpmio.c. Referenced by fadOpen(), Fclose(), fdbg(), Fdopen(), ftpOpen(), httpOpen(), ufdOpen(), and urlConnect().