rpm 4.19.1.1 The RPM Package Manager

Loading...
Searching...
No Matches
Files | Typedefs
RPM IO API.
I/O

The RPM IO API (Fd_t is RPM equivalent to libc's FILE). More...

Collaboration diagram for RPM IO API.:

## Files
file | rpmbase64.h
file | rpmfileutil.h
file | rpmio.h
file | rpmlog.h
file | rpmmacro.h
file | rpmsq.h
file | rpmsw.h
file | rpmurl.h

## Typedefs
typedef const 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 }
typedef enum fdOpX_e | fdOpX
off_t | fdSize (FD_t fd)
FD_t | fdDup (int fdno)
FD_t | fdLink (FD_t fd)
FD_t | fdFree (FD_t fd)
rpmop | fdOp (FD_t fd, fdOpX opx)
off_t | ufdCopy (FD_t sfd, FD_t tfd)

## RPMIO Interface.
const char * | Fstrerror (FD_t fd)
ssize_t | Fread (void *buf, size_t size, size_t nmemb, FD_t fd)
ssize_t | Fwrite (const void *buf, size_t size, size_t nmemb, FD_t fd)
int | Fseek (FD_t fd, off_t offset, int whence)
off_t | Ftell (FD_t fd)
int | Fclose (FD_t fd)
FD_t | Fdopen (FD_t ofd, const char *fmode)
FD_t | Fopen (const char *path, const char *fmode)
int | Fflush (FD_t fd)
int | Ferror (FD_t fd)
int | Fileno (FD_t fd)
int | Fcntl (FD_t fd, int op, void *lip)
const char * | Fdescr (FD_t fd)

## Detailed Description

The RPM IO API (Fd_t is RPM equivalent to libc's FILE).

## Typedef Documentation

## ◆ fdOpX

typedef enum fdOpX_e fdOpX

Identify per-desciptor I/O operation statistics.

## Enumeration Type Documentation

## ◆ fdOpX_e

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.

## Function Documentation

## ◆ Fclose()

int Fclose | ( | FD_t | fd | ) |

fclose(3) clone.

## ◆ Fcntl()

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

fcntl(2) clone.

## ◆ fdDup()

FD_t fdDup | ( | int | fdno | ) |

dup(2) clone.

## ◆ Fdescr()

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

Get informative description (eg file name) from fd for diagnostic output.

## ◆ fdFree()

FD_t fdFree | ( | FD_t | fd | ) |

Dereference a file descriptor. This does NOT close the file.

## ◆ fdLink()

FD_t fdLink | ( | FD_t | fd | ) |

Reference a file descriptor.

## ◆ fdOp()

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

File operation statistics.

## ◆ Fdopen()

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

fdopen(3) clone.

See Fopen() for details.

## ◆ fdSize()

off_t fdSize | ( | FD_t | fd | ) |

Return the size of the backing file of the descriptor.

## ◆ Ferror()

int Ferror | ( | FD_t | fd | ) |

ferror(3) clone.

## ◆ Fflush()

int Fflush | ( | FD_t | fd | ) |

fflush(3) clone.

## ◆ Fileno()

int Fileno | ( | FD_t | fd | ) |

fileno(3) clone.

## ◆ Fopen()

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

fopen(3) clone.

Supports compression.

The `fmode` parameter is based on that of `fopen(3)`, but may also include a compression method (`type` and `flags`) to use when opening the stream, and has the following format:

<mode>[flags].<type>

The compression `type` (compressor) is mandatory, determines the supported `mode` chars (also mandatory), and can be one of the following:

Type | Description | Mode chars
--- | --- | ---
`ufdio` | uncompressed | `r,w,a,b,+,x`
`gzdio` | gzip | `r,w,a`
`bzdio` | bzip2 | `r,w,a`
`xzdio` | xz | `r,w,a`
`lzdio` | lzma (legacy) | `r,w,a`
`zstdio` | zstd | `r,w,a`

Compression `flags` must be listed in the following order and can be any of:

Flag | Description | Types
--- | --- | ---
`0-9` | compression level | all except `ufdio`
`T<0-N>` | no. of threads (0 = autodetect) | `xzdio` and `zstdio`
`L<0-9>` | window size (see `--long` in `zstd(1)`) | `zstdio`

If a flag is omitted, the compressor's default value will be used.

Example mode strings:

Mode | Description
--- | ---
`w9.gzdio` | gzip level 9, default for package payload
`w9.bzdio` | bzip2 level 9, bzip2's default
`w6.xzdio` | xz level 6, xz's default
`w.xzdio` | xz level 6, xz's default
`w7T16.xzdio` | xz level 7 using 16 threads
`w7T0.xzdio` | xz level 7, autodetect no. of threads
`w6.lzdio` | lzma (legacy) level 6, lzma's default
`w3.zstdio` | zstd level 3, zstd's default
`w19T8.zstdio` | zstd level 19 using 8 threads
`w7T0.zstdio` | zstd level 7, autodetect no. of threads
`w.ufdio` | uncompressed

## ◆ Fread()

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

Like fread(3) but with read(3)-style return values.

## ◆ Fseek()

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

fseek(3) clone.

## ◆ Fstrerror()

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

strerror(3) clone.

## ◆ Ftell()

off_t Ftell | ( | FD_t | fd | ) |

ftell(3) clone.

## ◆ Fwrite()

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

Like fwrite(3) but with write(3)-style return values.

## ◆ ufdCopy()

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

Copy file descriptor into another.