rpm  4.5
Files | Data Structures | Typedefs | Enumerations | Functions
RPMIO.
Collaboration diagram for RPMIO.:

Files

file  argv.c
 
file  argv.h
 
file  getpass.c
 
file  macro.c
 
file  rpmlog.c
 
file  rpmlog.h
 Yet Another syslog(3) API clone.
 
file  rpmerr.h
 
file  rpmio.c
 
file  rpmio.h
 
file  rpmio_internal.h
 
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  rpmsq.c
 
file  rpmsq.h
 
file  rpmsw.c
 
file  rpmsw.h
 
file  rpmurl.h
 
file  strcasecmp.c
 
file  ugid.c
 
file  ugid.h
 
file  url.c
 

Data Structures

struct  FDIO_s
 
struct  pgpDigParams_s
 Values parsed from OpenPGP signature/pubkey packet(s). More...
 
struct  pgpDig_s
 Container for values parsed from an OpenPGP signature and public key. More...
 
struct  _FDSTACK_s
 
struct  _FDDIGEST_s
 
struct  _FD_s
 The FD_t File Handle data structure. More...
 
struct  rpmsw_s
 
struct  rpmop_s
 Cumulative statistics for an operation. More...
 

Typedefs

typedef struct _FD_sFD_t
 
typedef struct FDIO_sFDIO_t
 
typedef struct _FDSTACK_s FDSTACK_t
 
typedef enum fdOpX_e fdOpX
 Identify per-desciptor I/O operation statistics.
 
struct {
   struct rpmop_s   ops [FDSTAT_MAX]
 
FDSTAT_t
 
typedef struct _FDDIGEST_sFDDIGEST_t
 
typedef enum rpmDigestFlags_e rpmDigestFlags
 Bit(s) to control digest operation.
 
typedef unsigned long int rpmtime_t
 
typedef struct rpmsw_srpmsw
 
typedef struct rpmop_srpmop
 

Enumerations

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...
 
enum  rpmDigestFlags_e { RPMDIGEST_NONE = 0 }
 Bit(s) to control digest operation. More...
 

Functions

int xstrcasecmp (const char *s1, const char *s2)
 Locale insensitive strcasecmp(3).
 
int xstrncasecmp (const char *s1, const char *s2, size_t n)
 Locale insensitive strncasecmp(3).
 
const char * xstrtolocale (const char *str)
 Force encoding of string.
 
const char * fdbg (FD_t fd)
 
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)
 
static void fdSetOpen (FD_t fd, const char *path, int flags, mode_t mode)
 
static const char * fdGetOPath (FD_t fd)
 
static int fdGetOFlags (FD_t fd)
 
static mode_t fdGetOMode (FD_t fd)
 
static FDIO_t fdGetIo (FD_t fd)
 
static void fdSetIo (FD_t fd, FDIO_t io)
 
static FILE * fdGetFILE (FD_t fd)
 
static void * fdGetFp (FD_t fd)
 
static void fdSetFp (FD_t fd, void *fp)
 
static int fdGetFdno (FD_t fd)
 
static void fdSetFdno (FD_t fd, int fdno)
 
static void fdSetContentLength (FD_t fd, ssize_t contentLength)
 
static void fdPush (FD_t fd, FDIO_t io, void *fp, int fdno)
 
static void fdPop (FD_t fd)
 
static rpmop fdstat_op (FD_t fd, fdOpX opx)
 
static void fdstat_enter (FD_t fd, int opx)
 
static void fdstat_exit (FD_t fd, int opx, ssize_t rc)
 
static void fdstat_print (FD_t fd, const char *msg, FILE *fp)
 
static void fdSetSyserrno (FD_t fd, int syserrno, const void *errcookie)
 
static int fdGetRdTimeoutSecs (FD_t fd)
 
static unsigned long long fdGetCpioPos (FD_t fd)
 
static void fdSetCpioPos (FD_t fd, long int cpioPos)
 
static FD_t c2f (void *cookie)
 
static void fdInitDigest (FD_t fd, pgpHashAlgo hashalgo, int flags)
 Attach digest to fd.
 
static void fdUpdateDigests (FD_t fd, const unsigned char *buf, ssize_t buflen)
 Update digest(s) attached to fd.
 
static void fdFiniDigest (FD_t fd, pgpHashAlgo hashalgo, void *datap, size_t *lenp, int asAscii)
 
static int fdFileno (void *cookie)
 
DIGEST_CTX rpmDigestDup (DIGEST_CTX octx)
 Duplicate a digest context.
 
DIGEST_CTX rpmDigestInit (pgpHashAlgo hashalgo, rpmDigestFlags flags)
 Initialize digest.
 
int rpmDigestUpdate (DIGEST_CTX ctx, const void *data, size_t len)
 Update context with next plain text buffer.
 
int rpmDigestFinal (DIGEST_CTX ctx, void *datap, size_t *lenp, int asAscii)
 Return digest and destroy context.
 
static rpmtime_t tvsub (const struct timeval *etv, const struct timeval *btv)
 Return difference of 2 timeval stamps in micro-seconds.
 
int rpmswEnter (rpmop op, ssize_t rc)
 Enter timed operation.
 
rpmtime_t rpmswExit (rpmop op, ssize_t rc)
 Exit timed operation.
 
rpmtime_t rpmswAdd (rpmop to, rpmop from)
 Sum statistic counters.
 
rpmtime_t rpmswSub (rpmop to, rpmop from)
 Subtract statistic counters.
 
void rpmswPrint (const char *name, rpmop op)
 Print operation statistics.
 
typedef off_t _libio_off_t
 Hide libio API lossage.
 
typedef off_t _libio_pos_t
 

Detailed Description

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 40 of file rpmio.h.

typedef off_t _libio_pos_t

Definition at line 41 of file rpmio.h.

typedef struct _FD_s* FD_t

Definition at line 47 of file rpmio.h.

typedef struct _FDDIGEST_s * FDDIGEST_t
typedef struct FDIO_s* FDIO_t

Definition at line 51 of file rpmio.h.

typedef enum fdOpX_e fdOpX

Identify per-desciptor I/O operation statistics.

typedef struct _FDSTACK_s FDSTACK_t
typedef { ... } * FDSTAT_t

Bit(s) to control digest operation.

typedef struct rpmop_s* rpmop

Definition at line 18 of file rpmsw.h.

typedef struct rpmsw_s* rpmsw

Definition at line 14 of file rpmsw.h.

typedef unsigned long int rpmtime_t

Definition at line 10 of file rpmsw.h.

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 144 of file rpmio_internal.h.

Bit(s) to control digest operation.

Enumerator:
RPMDIGEST_NONE 

Definition at line 996 of file rpmpgp.h.

Function Documentation

static FD_t c2f ( void *  cookie)
inlinestatic
const char* fdbg ( FD_t  fd)
int fdFgets ( FD_t  fd,
char *  buf,
size_t  len 
)

Definition at line 613 of file rpmio.c.

References _rpmio_debug, errno, fdFileno(), fdRead, fdReadable(), _FD_s::rd_timeoutsecs, and _FD_s::syserrno.

Referenced by checkResponse(), and ftpNLST().

static int fdFileno ( void *  cookie)
inlinestatic
static void fdFiniDigest ( FD_t  fd,
pgpHashAlgo  hashalgo,
void *  datap,
size_t *  lenp,
int  asAscii 
)
inlinestatic
static unsigned long long fdGetCpioPos ( FD_t  fd)
inlinestatic

Definition at line 579 of file rpmio_internal.h.

References _FD_s::fd_cpioPos, and FDSANE.

Referenced by fsmSetup(), and fsmStage().

static int fdGetFdno ( FD_t  fd)
inlinestatic

Definition at line 406 of file rpmio_internal.h.

References _FDSTACK_s::fdno, FDSANE, _FD_s::fps, and _FD_s::nfps.

Referenced by Fclose(), Fopen(), and ufdWrite().

static FILE* fdGetFILE ( FD_t  fd)
inlinestatic

Definition at line 364 of file rpmio_internal.h.

References FDSANE, _FDSTACK_s::fp, _FD_s::fps, and _FD_s::nfps.

static void* fdGetFp ( FD_t  fd)
inlinestatic
static FDIO_t fdGetIo ( FD_t  fd)
inlinestatic

Definition at line 336 of file rpmio_internal.h.

References FDSANE, _FD_s::fps, _FDSTACK_s::io, and _FD_s::nfps.

Referenced by Fflush(), Fread(), Fseek(), Fwrite(), getFdErrstr(), ufdRead(), and ufdWrite().

static int fdGetOFlags ( FD_t  fd)
inlinestatic

Definition at line 316 of file rpmio_internal.h.

References FDSANE, and _FD_s::oflags.

static mode_t fdGetOMode ( FD_t  fd)
inlinestatic

Definition at line 326 of file rpmio_internal.h.

References FDSANE, and _FD_s::omode.

static const char* fdGetOPath ( FD_t  fd)
inlinestatic

Definition at line 306 of file rpmio_internal.h.

References FDSANE, and _FD_s::opath.

Referenced by headerRead(), and rpmReadHeader().

static int fdGetRdTimeoutSecs ( FD_t  fd)
inlinestatic

Definition at line 569 of file rpmio_internal.h.

References FDSANE, and _FD_s::rd_timeoutsecs.

static void fdInitDigest ( FD_t  fd,
pgpHashAlgo  hashalgo,
int  flags 
)
inlinestatic
static void fdPop ( FD_t  fd)
inlinestatic

Definition at line 455 of file rpmio_internal.h.

References FDSANE, fdSetFdno(), fdSetFp(), fdSetIo(), and _FD_s::nfps.

Referenced by Fclose().

static void fdPush ( FD_t  fd,
FDIO_t  io,
void *  fp,
int  fdno 
)
inlinestatic

Definition at line 440 of file rpmio_internal.h.

References FDSANE, fdSetFdno(), fdSetFp(), fdSetIo(), _FD_s::fps, and _FD_s::nfps.

Referenced by Fdopen(), Fopen(), and XurlFree().

static void fdSetContentLength ( FD_t  fd,
ssize_t  contentLength 
)
inlinestatic

Definition at line 430 of file rpmio_internal.h.

References _FD_s::bytesRemain, _FD_s::contentLength, and FDSANE.

static void fdSetCpioPos ( FD_t  fd,
long int  cpioPos 
)
inlinestatic

Definition at line 589 of file rpmio_internal.h.

References _FD_s::fd_cpioPos, and FDSANE.

Referenced by fsmSetup(), and fsmStage().

static void fdSetFdno ( FD_t  fd,
int  fdno 
)
inlinestatic

Definition at line 418 of file rpmio_internal.h.

References _FDSTACK_s::fdno, FDSANE, _FD_s::fps, and _FD_s::nfps.

Referenced by __fdClose(), __fdOpen(), fdDup(), fdPop(), fdPush(), ftpReq(), and tcpConnect().

static void fdSetFp ( FD_t  fd,
void *  fp 
)
inlinestatic

Definition at line 391 of file rpmio_internal.h.

References FDSANE, _FDSTACK_s::fp, _FD_s::fps, and _FD_s::nfps.

Referenced by Fclose(), Fdopen(), fdPop(), fdPush(), and ufdClose().

static void fdSetIo ( FD_t  fd,
FDIO_t  io 
)
inlinestatic

Definition at line 349 of file rpmio_internal.h.

References FDSANE, _FD_s::fps, _FDSTACK_s::io, and _FD_s::nfps.

Referenced by fdPop(), fdPush(), ftpOpen(), ufdOpen(), and urlConnect().

static void fdSetOpen ( FD_t  fd,
const char *  path,
int  flags,
mode_t  mode 
)
inlinestatic
static void fdSetSyserrno ( FD_t  fd,
int  syserrno,
const void *  errcookie 
)
inlinestatic

Definition at line 556 of file rpmio_internal.h.

References _FD_s::errcookie, FDSANE, and _FD_s::syserrno.

Referenced by ftpLogin(), ftpReq(), and tcpConnect().

static void fdstat_enter ( FD_t  fd,
int  opx 
)
inlinestatic
static void fdstat_exit ( FD_t  fd,
int  opx,
ssize_t  rc 
)
inlinestatic
static rpmop fdstat_op ( FD_t  fd,
fdOpX  opx 
)
inlinestatic

Definition at line 469 of file rpmio_internal.h.

References FDSTAT_MAX, and _FD_s::stats.

Referenced by fdstat_enter(), fdstat_exit(), fsmStage(), rpmpsmStage(), and rpmReadPackageFile().

static void fdstat_print ( FD_t  fd,
const char *  msg,
FILE *  fp 
)
inlinestatic
static void fdUpdateDigests ( FD_t  fd,
const unsigned char *  buf,
ssize_t  buflen 
)
inlinestatic

Update digest(s) attached to fd.

Definition at line 631 of file rpmio_internal.h.

References _FD_s::digests, FDSTAT_DIGEST, fdstat_enter(), fdstat_exit(), _FDDIGEST_s::hashctx, _FD_s::ndigests, and rpmDigestUpdate().

Referenced by __fdRead(), and __fdWrite().

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

Definition at line 1618 of file rpmio.c.

References urlinfo_s::ctrl, fdFree(), ftpCommand(), urlConnect(), and urlPath().

Referenced by ftpChdir(), ftpMkdir(), ftpRename(), ftpRmdir(), and ftpUnlink().

FD_t ftpOpen ( const char *  url,
int  flags,
mode_t  mode,
urlinfo uret 
)
int ftpReq ( FD_t  data,
const char *  ftpCmd,
const char *  ftpArg 
)
DIGEST_CTX rpmDigestDup ( DIGEST_CTX  octx)

Duplicate a digest context.

Parameters
octxexisting digest context
Returns
duplicated digest context

Definition at line 325 of file digest.c.

References DIGEST_CTX_s::param, DIGEST_CTX_s::paramsize, and xcalloc().

Referenced by verifyDSASignature(), verifyMD5Signature(), verifyRSASignature(), and verifySHA1Signature().

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
ctxdigest context
Return values
*datapreturned digest
*lenpdigest length
Parameters
asAsciireturn digest as ascii string?
Returns
0 on success

Definition at line 661 of file digest.c.

References DIGEST_CTX_s::Digest, DIGEST_CTX_s::digestsize, DPRINTF, DIGEST_CTX_s::param, DIGEST_CTX_s::paramsize, and xmalloc().

Referenced by digestFormat(), dodigest(), fdFiniDigest(), makeHDRSignature(), pgpFreeDig(), pgpPubkeyFingerprint(), unsatisfiedDepend(), verifyDSASignature(), verifyMD5Signature(), verifyRSASignature(), verifySHA1Signature(), and XfdFree().

DIGEST_CTX rpmDigestInit ( pgpHashAlgo  hashalgo,
rpmDigestFlags  flags 
)
int rpmDigestUpdate ( DIGEST_CTX  ctx,
const void *  data,
size_t  len 
)

Update context with next plain text buffer.

Parameters
ctxdigest context
datanext data buffer
lenno. bytes of data
Returns
0 on success

Definition at line 647 of file digest.c.

References DPRINTF, DIGEST_CTX_s::param, and DIGEST_CTX_s::Update.

Referenced by digestFormat(), dodigest(), fdUpdateDigests(), headerCheck(), makeHDRSignature(), pgpPubkeyFingerprint(), readFile(), rpmReadPackageFile(), unsatisfiedDepend(), verifyDSASignature(), and verifyRSASignature().

rpmtime_t rpmswAdd ( rpmop  to,
rpmop  from 
)

Sum statistic counters.

Parameters
toresult statistics
fromoperation statistics
Returns
cumulative usecs for operation

Definition at line 274 of file rpmsw.c.

References rpmop_s::bytes, rpmop_s::count, and rpmop_s::usecs.

Referenced by fsmStage(), psmWait(), rpmpsmStage(), rpmReadPackageFile(), rpmtsCloseDB(), and rpmtsCloseSDB().

int rpmswEnter ( rpmop  op,
ssize_t  rc 
)
rpmtime_t rpmswExit ( rpmop  op,
ssize_t  rc 
)

Exit timed operation.

Parameters
opoperation statistics
rcper-operation data (e.g. bytes transferred)
Returns
cumulative usecs for operation

Definition at line 258 of file rpmsw.c.

References rpmop_s::begin, rpmop_s::bytes, rpmswDiff(), rpmswNow(), and rpmop_s::usecs.

Referenced by doHeaderUnload(), fdstat_exit(), headerCheck(), headerGetEntry(), headerGetEntryMinMemory(), headerLoad(), headerNextIterator(), rpmpsmStage(), rpmReadPackageFile(), rpmsqWaitUnregister(), rpmtsCheck(), rpmtsOrder(), rpmtsPrintStats(), rpmtsRun(), verifyDSASignature(), verifyMD5Signature(), verifyRSASignature(), and verifySHA1Signature().

void rpmswPrint ( const char *  name,
rpmop  op 
)

Print operation statistics.

Parameters
nameoperation name
opoperation statistics

Definition at line 298 of file rpmsw.c.

References rpmop_s::bytes, rpmop_s::count, and rpmop_s::usecs.

rpmtime_t rpmswSub ( rpmop  to,
rpmop  from 
)

Subtract statistic counters.

Parameters
toresult statistics
fromoperation statistics
Returns
cumulative usecs for operation

Definition at line 286 of file rpmsw.c.

References rpmop_s::bytes, rpmop_s::count, and rpmop_s::usecs.

Referenced by rpmReadPackageFile().

static rpmtime_t tvsub ( const struct timeval *  etv,
const struct timeval *  btv 
)
inlinestatic

Return difference of 2 timeval stamps in micro-seconds.

Parameters
*etvend timeval
*btvbegin timeval
Returns
difference in milli-seconds

Definition at line 107 of file rpmsw.c.

References rpmop_s::usecs.

Referenced by rpmswDiff().

int ufdClose ( void *  cookie)
int xstrcasecmp ( const char *  s1,
const char *  s2 
)
int xstrncasecmp ( const char *  s1,
const char *  s2,
size_t  n 
)

Locale insensitive strncasecmp(3).

Definition at line 32 of file strcasecmp.c.

References xtolower().

Referenced by findPreambleTag(), isPart(), Link(), matchTok(), and Rename().

const char* xstrtolocale ( const char *  str)

Force encoding of string.

Referenced by i18nTag(), localeTag(), parseChangelog(), xmlFormat(), and yamlFormat().