# RPM IO API.

## Files
file | rpmio.h
file | rpmurl.h
file | rpmmacro.h
file | rpmlog.h

| Yet Another syslog(3) API clone.
file | rpmsq.h
file | rpmsw.h
file | rpmfileutil.h

| File and path manipulation helper functions.
file | rpmgi.h
## Typedefs
typedef off_t | _libio_off_t
| Hide libio API lossage.
typedef struct FDIO_s * | FDIO_t
## RPMIO Utilities.
enum | fdOpX_e { FDSTAT_READ = 0, FDSTAT_WRITE = 1, FDSTAT_SEEK = 2, FDSTAT_CLOSE = 3, FDSTAT_DIGEST = 4, FDSTAT_MAX = 5 }
| Identify per-desciptor I/O operation statistics. More...
typedef enum fdOpX_e | fdOpX
| Identify per-desciptor I/O operation statistics.
off_t | fdSize (FD_t fd)
FD_t | fdDup (int fdno)
FILE * | fdGetFILE (FD_t fd)
| Get associated FILE stream from fd (if any).
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)
rpmop | fdOp (FD_t fd, fdOpX opx)
int | ufdCopy (FD_t sfd, FD_t tfd)
ssize_t | timedRead (FD_t fd, void *bufptr, size_t length)
| XXX the name is misleading, this is a legacy wrapper that ensures only S_ISREG() files are read, nothing to do with timed.
## RPMIO Interface.
const char * | Fstrerror (FD_t fd)
| strerror(3) clone.
ssize_t | Fread (void *buf, size_t size, size_t nmemb, FD_t fd)
| fread(3) clone.
ssize_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.
off_t | Ftell (FD_t fd)
| ftell(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.

## Typedef Documentation

typedef off_t _libio_off_t

Hide libio API lossage.

The libio interface changed after glibc-2.1.3 to pass the seek offset argument as a pointer rather than as an off_t. The snarl below defines typedefs to isolate the lossage.

Definition at line 34 of file rpmio.h.

typedef struct FDIO_s* FDIO_t

Definition at line 40 of file rpmio.h.

typedef enum fdOpX_e fdOpX

Identify per-desciptor I/O operation statistics.

## Enumeration Type Documentation

enum fdOpX_e

Identify per-desciptor I/O operation statistics.

Enumerator:

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

Definition at line 159 of file rpmio.h.

## Function Documentation

int Fclose | ( | FD_t | fd | ) |

fclose(3) clone.

Referenced by main().

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

fcntl(2) clone.

FD_t fdDup | ( | int | fdno | ) |

Referenced by main().

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

FILE* fdGetFILE | ( | FD_t | fd | ) |

Get associated FILE stream from fd (if any).

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

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

rpmop fdOp | ( | FD_t | fd,
|  | fdOpX | opx |
| ) |  |  |

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

Referenced by main().

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

off_t fdSize | ( | FD_t | fd | ) |

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

int Ferror | ( | FD_t | fd | ) |

ferror(3) clone.

Referenced by main().

int Fflush | ( | FD_t | fd | ) |

fflush(3) clone.

int Fileno | ( | FD_t | fd | ) |

fileno(3) clone.

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

fopen(3) clone.

Referenced by main().

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

fread(3) clone.

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

fseek(3) clone.

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

strerror(3) clone.

Referenced by main().

off_t Ftell | ( | FD_t | fd | ) |

ftell(3) clone.

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

fwrite(3) clone.

ssize_t timedRead | ( | FD_t | fd,
|  | void * | bufptr,
|  | size_t | length |
| ) |  |  |

XXX the name is misleading, this is a legacy wrapper that ensures only S_ISREG() files are read, nothing to do with timed.

.. TODO: get this out of the API

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

Referenced by main().