rpmio/rpmio.c File Reference

#include "system.h"
#include <stdarg.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <rpmmacro.h>
#include <rpmio_internal.h>
#include <rpmdav.h>
#include "ugid.h"
#include "rpmmessages.h"
#include "debug.h"
#include "LzmaDecode.h"

Include dependency graph for rpmio.c:

Go to the source code of this file.

Data Structures

struct  _CBuffer
struct  lzfile

Defines

#define IPPORT_FTP   21
#define IPPORT_HTTP   80
#define fdOpen   __fdOpen
#define fdRead   __fdRead
#define fdWrite   __fdWrite
#define fdClose   __fdClose
#define FDNREFS(fd)   (fd ? ((FD_t)fd)->nrefs : -9)
#define FDTO(fd)   (fd ? ((FD_t)fd)->rd_timeoutsecs : -99)
#define FDCPIOPOS(fd)   (fd ? ((FD_t)fd)->fd_cpioPos : -99)
#define FDONLY(fd)   assert(fdGetIo(fd) == fdio)
#define GZDONLY(fd)   assert(fdGetIo(fd) == gzdio)
#define BZDONLY(fd)   assert(fdGetIo(fd) == bzdio)
#define LZDONLY(fd)   assert(fdGetIo(fd) == lzdio)
#define UFDONLY(fd)
#define fdGetFILE(_fd)   ((FILE *)fdGetFp(_fd))
#define TIMEOUT_SECS   60
#define IAC   255
#define IP   244
#define DM   242
#define SHUT_RDWR   1+1
#define kInBufferSize   (1 << 15)
#define FDIOVEC(_fd, _vec)   ((fdGetIo(_fd) && fdGetIo(_fd)->_vec) ? fdGetIo(_fd)->_vec : NULL)
#define _PATH   "/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:~/bin"
#define alloca_strdup(_s)   strcpy(alloca(strlen(_s)+1), (_s))

Typedefs

typedef _CBuffer CBuffer
typedef lzfile LZFILE

Functions

static int inet_aton (const char *cp, struct in_addr *inp)
static const char * fdbg (FD_t fd)
off_t fdSize (FD_t fd)
FD_t fdDup (int fdno)
static int fdSeekNot (void *cookie, _libio_pos_t pos, int whence)
static FD_t XfdLink (void *cookie, const char *msg, const char *file, unsigned line)
static FD_t XfdFree (FD_t fd, const char *msg, const char *file, unsigned line)
static FD_t XfdNew (const char *msg, const char *file, unsigned line)
static ssize_t __fdRead (void *cookie, char *buf, size_t count)
static ssize_t __fdWrite (void *cookie, const char *buf, size_t count)
static int fdSeek (void *cookie, _libio_pos_t pos, int whence)
static int __fdClose (void *cookie)
static FD_t __fdOpen (const char *path, int flags, mode_t mode)
int fdWritable (FD_t fd, int secs)
int fdReadable (FD_t fd, int secs)
int fdFgets (FD_t fd, char *buf, size_t len)
const char * ftpStrerror (int errorNumber)
const char * urlStrerror (const char *url)
static int mygethostbyname (const char *host, struct in_addr *address)
static int getHostAddress (const char *host, struct in_addr *address)
static int tcpConnect (FD_t ctrl, const char *host, int port)
static int checkResponse (void *uu, FD_t ctrl, int *ecp, char **str)
static int ftpCheckResponse (urlinfo u, char **str)
static int ftpCommand (urlinfo u, char **str,...)
static int ftpLogin (urlinfo u)
int ftpReq (FD_t data, const char *ftpCmd, const char *ftpArg)
void urlSetCallback (rpmCallbackFunction notify, void *notifyData, int notifyCount)
int ufdCopy (FD_t sfd, FD_t tfd)
static int urlConnect (const char *url, urlinfo *uret)
int ufdGetFile (FD_t sfd, FD_t tfd)
int ftpCmd (const char *cmd, const char *url, const char *arg2)
static int ftpAbort (urlinfo u, FD_t data)
static int ftpFileDone (urlinfo u, FD_t data)
void * ufdGetUrlinfo (FD_t fd)
static ssize_t ufdRead (void *cookie, char *buf, size_t count)
static ssize_t ufdWrite (void *cookie, const char *buf, size_t count)
static int ufdSeek (void *cookie, _libio_pos_t pos, int whence)
int ufdClose (void *cookie)
FD_t ftpOpen (const char *url, int flags, mode_t mode, urlinfo *uret)
static FD_t ufdOpen (const char *url, int flags, mode_t mode)
static size_t MyReadFile (FILE *file, void *data, size_t size)
static int MyReadFileAndCheck (FILE *file, void *data, size_t size)
static int LzmaReadCompressed (void *object, const unsigned char **buffer, unsigned int *size)
static void * lzdFileno (FD_t fd)
static FD_t lzdWriteOpen (int fdno, int fopen)
static FD_t lzdReadOpen (int fdno, int fopen)
static FD_t lzdOpen (const char *path, const char *mode)
static FD_t lzdFdopen (void *cookie, const char *fmode)
static int lzdFlush (FD_t fd)
static ssize_t lzdRead (void *cookie, char *buf, size_t count)
static ssize_t lzdWrite (void *cookie, const char *buf, size_t count)
static int lzdSeek (void *cookie, _libio_pos_t pos, int whence)
static int lzdClose (void *cookie)
static const char * getFdErrstr (FD_t fd)
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.
static void cvtfmode (const char *m, char *stdio, size_t nstdio, char *other, size_t nother, const char **end, int *f)
 Convert stdio fmode to open(2) mode, filtering out zlib/bzlib flags.
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.
int rpmioMkpath (const char *path, mode_t mode, uid_t uid, gid_t gid)
 Insure that directories in path exist, creating as needed.
int rpmioAccess (const char *FN, const char *path, int mode)
 Check FN access, expanding relative paths and twiddles.
int rpmioSlurp (const char *fn, const byte **bp, ssize_t *blenp)
 Read an entire file into a buffer.

Variables

int noLibio = 1
static int ftpTimeoutSecs = 60
int _rpmio_debug = 0
int _av_debug = 0
int _ftp_debug = 0
int _dav_debug = 0
static struct FDIO_s fdio_s
FDIO_t fdio = &fdio_s
static rpmCallbackFunction urlNotify = NULL
static void * urlNotifyData = NULL
static int urlNotifyCount = -1
static struct FDIO_s ufdio_s
FDIO_t ufdio = &ufdio_s
static struct FDIO_s lzdio_s
FDIO_t lzdio = &lzdio_s
static const char * _path = "/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:~/bin"
static struct FDIO_s fpio_s
FDIO_t fpio = &fpio_s


Detailed Description

Definition in file rpmio.c.


Define Documentation

#define _PATH   "/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:~/bin"

Definition at line 3724 of file rpmio.c.

#define alloca_strdup ( _s   )     strcpy(alloca(strlen(_s)+1), (_s))

Definition at line 3728 of file rpmio.c.

#define BZDONLY ( fd   )     assert(fdGetIo(fd) == bzdio)

Definition at line 121 of file rpmio.c.

#define DM   242

Definition at line 1664 of file rpmio.c.

Referenced by ftpAbort().

#define fdClose   __fdClose

Definition at line 103 of file rpmio.c.

Referenced by Fclose(), Fopen(), ftpAbort(), ftpLogin(), ftpReq(), and ufdClose().

#define FDCPIOPOS ( fd   )     (fd ? ((FD_t)fd)->fd_cpioPos : -99)

Definition at line 117 of file rpmio.c.

#define fdGetFILE ( _fd   )     ((FILE *)fdGetFp(_fd))

Definition at line 126 of file rpmio.c.

Referenced by argvFgets(), Fclose(), Ferror(), Fflush(), Fread(), Fseek(), Fwrite(), rdcl(), rpmdsCpuinfo(), rpmdsSysinfoFile(), and ufdClose().

#define FDIOVEC ( _fd,
_vec   )     ((fdGetIo(_fd) && fdGetIo(_fd)->_vec) ? fdGetIo(_fd)->_vec : NULL)

Definition at line 3136 of file rpmio.c.

Referenced by Fclose(), Fread(), Fseek(), and Fwrite().

#define FDNREFS ( fd   )     (fd ? ((FD_t)fd)->nrefs : -9)

Definition at line 115 of file rpmio.c.

Referenced by XfdFree(), and XfdLink().

#define FDONLY ( fd   )     assert(fdGetIo(fd) == fdio)

Definition at line 119 of file rpmio.c.

#define fdOpen   __fdOpen

Definition at line 97 of file rpmio.c.

Referenced by Fopen(), and ufdOpen().

#define fdRead   __fdRead

Definition at line 99 of file rpmio.c.

Referenced by fdFgets(), and ufdRead().

#define FDTO ( fd   )     (fd ? ((FD_t)fd)->rd_timeoutsecs : -99)

Definition at line 116 of file rpmio.c.

#define fdWrite   __fdWrite

Definition at line 101 of file rpmio.c.

Referenced by ftpAbort(), ftpCommand(), and ufdWrite().

#define GZDONLY ( fd   )     assert(fdGetIo(fd) == gzdio)

Definition at line 120 of file rpmio.c.

#define IAC   255

Definition at line 1658 of file rpmio.c.

Referenced by ftpAbort().

#define IP   244

Definition at line 1661 of file rpmio.c.

Referenced by ftpAbort().

#define IPPORT_FTP   21

Definition at line 70 of file rpmio.c.

Referenced by ftpLogin(), and urlSplit().

#define IPPORT_HTTP   80

Definition at line 73 of file rpmio.c.

Referenced by urlSplit().

#define kInBufferSize   (1 << 15)

Definition at line 2762 of file rpmio.c.

Referenced by LzmaReadCompressed().

#define LZDONLY ( fd   )     assert(fdGetIo(fd) == lzdio)

Definition at line 122 of file rpmio.c.

Referenced by lzdSeek().

#define SHUT_RDWR   1+1

Definition at line 1667 of file rpmio.c.

Referenced by ftpAbort().

#define TIMEOUT_SECS   60

Definition at line 137 of file rpmio.c.

#define UFDONLY ( fd   ) 

Definition at line 124 of file rpmio.c.

Referenced by ufdClose(), ufdRead(), and ufdWrite().


Typedef Documentation

typedef struct _CBuffer CBuffer

typedef struct lzfile LZFILE


Function Documentation

static int __fdClose ( void *  cookie  )  [static]

Definition at line 468 of file rpmio.c.

References c2f(), DBGIO, fdbg(), fdFileno, fdFree, fdSetFdno(), FDSTAT_CLOSE, fdstat_enter(), fdstat_exit(), and _FD_s::req.

static FD_t __fdOpen ( const char *  path,
int  flags,
mode_t  mode 
) [static]

Definition at line 498 of file rpmio.c.

References DBGIO, fdbg(), fdNew, fdSetFdno(), fdSetOpen(), and _FD_s::flags.

static ssize_t __fdRead ( void *  cookie,
char *  buf,
size_t  count 
) [static]

Definition at line 386 of file rpmio.c.

References _FD_s::bytesRemain, c2f(), DBGIO, fdbg(), fdFileno, fdstat_enter(), fdstat_exit(), FDSTAT_READ, fdUpdateDigests(), _FD_s::ndigests, and _FD_s::req.

static ssize_t __fdWrite ( void *  cookie,
const char *  buf,
size_t  count 
) [static]

Definition at line 417 of file rpmio.c.

References _FD_s::bytesRemain, c2f(), DBGIO, fdbg(), fdFileno, fdstat_enter(), fdstat_exit(), FDSTAT_WRITE, fdUpdateDigests(), _FD_s::ndigests, and _FD_s::req.

static int checkResponse ( void *  uu,
FD_t  ctrl,
int *  ecp,
char **  str 
) [static]

Definition at line 928 of file rpmio.c.

References _ftp_debug, _url_iobuf_size, urlinfo_s::allow, urlinfo_s::buf, urlinfo_s::bufAlloced, _FD_s::contentLength, fdFgets(), fdWritable(), FTPERR_BAD_SERVER_RESPONSE, urlinfo_s::httpVersion, _FD_s::persist, RPMURL_SERVER_HASRANGE, URLSANE, _FD_s::wr_chunked, and xcalloc().

Referenced by ftpCheckResponse().

static void cvtfmode ( const char *  m,
char *  stdio,
size_t  nstdio,
char *  other,
size_t  nother,
const char **  end,
int *  f 
) [inline, static]

Convert stdio fmode to open(2) mode, filtering out zlib/bzlib flags.

returns stdio[0] = NUL on error.

Todo:
glibc also supports ",ccs="

Definition at line 3324 of file rpmio.c.

Referenced by Fdopen(), and Fopen().

int Fclose ( FD_t  fd  ) 

fclose(3) clone.

Definition at line 3218 of file rpmio.c.

References FDIO_s::close, DBGIO, fdbg(), fdClose, fdFree, fdGetFdno(), fdGetFILE, FDIOVEC, fdLink, _FDSTACK_s::fdno, fdPop(), FDSANE, fdSetFp(), _FDSTACK_s::fp, fpio, _FD_s::fps, _FDSTACK_s::io, _FD_s::nfps, noLibio, _FD_s::persist, _FD_s::req, ufdClose(), and ufdio.

Referenced by addFileToTagAux(), closeCallback(), closeSpec(), cpio_doio(), defaultMachine(), dodigest(), doIcon(), doReadRC(), doScript(), IDTXglob(), isCompressed(), isSpecFile(), makeGPGSignature(), makeHDRSignature(), makePGPSignature(), makeTempFile(), manageFile(), processPackageFiles(), readLine(), readRPM(), rpmcliSign(), rpmdbExportInfo(), rpmdsCpuinfo(), rpmdsSysinfoFile(), rpmfd_dealloc(), rpmfd_free(), rpmfd_init(), rpmgiFree(), rpmgiLoadManifest(), rpmgiNext(), rpmgiOpen(), rpmgiReadHeader(), rpmHeaderFromFD(), rpmHeaderFromFile(), rpmInstall(), rpmInstallSource(), rpmioSlurp(), rpmLoadMacroFile(), rpmMergeHeadersFromFD(), rpmpsmStage(), rpmShowProgress(), rpmSingleHeaderFromFD(), rpmts_dealloc(), rpmts_free(), rpmts_HdrFromFdno(), rpmtsCallback(), rpmtsRollback(), rpmtsSolve(), runScript(), showVerifyPackage(), ufdGetFile(), unsatisfiedDepend(), urlGetFile(), writeRPM(), and XurlFree().

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

fcntl(2) clone.

Definition at line 3664 of file rpmio.c.

References Fileno().

static const char* fdbg ( FD_t  fd  )  [static]

Definition at line 167 of file rpmio.c.

References _FD_s::bytesRemain, bzdio, fdio, _FDSTACK_s::fdno, _FDSTACK_s::fp, fpio, _FD_s::fps, gzdio, _FDSTACK_s::io, lzdio, _FD_s::nfps, _FD_s::rd_timeoutsecs, ufdio, and _FD_s::wr_chunked.

Referenced by __fdClose(), __fdOpen(), __fdRead(), __fdWrite(), Fclose(), fdDup(), Fdopen(), fdSeek(), Ferror(), Fileno(), Fread(), Fseek(), Fwrite(), lzdClose(), ufdOpen(), XfdFree(), and XfdLink().

FD_t fdDup ( int  fdno  ) 

Definition at line 257 of file rpmio.c.

References DBGIO, fdbg(), fdNew, fdSetFdno(), and fdSetOpen().

Referenced by cpio_doio(), dodigest(), readRPM(), rpmHeaderFromFD(), rpmMergeHeadersFromFD(), rpmpsmStage(), rpmSingleHeaderFromFD(), rpmts_HdrFromFdno(), rpmts_setattro(), rpmtsCallback(), runScript(), showVerifyPackage(), and ufdOpen().

FD_t Fdopen ( FD_t  ofd,
const char *  fmode 
)

Definition at line 3401 of file rpmio.c.

References _rpmio_debug, FDIO_s::close, cvtfmode(), DBGIO, fdbg(), fdGetFp(), fdio, fdLink, fdPush(), FDSANE, fdSetFp(), Fileno(), fpio, lzdFdopen(), lzdio, noLibio, FDIO_s::read, FDIO_s::seek, ufdio, and FDIO_s::write.

Referenced by cpio_doio(), doScript(), Fopen(), rpmpsmStage(), and rpmReadPackageManifest().

int fdReadable ( FD_t  fd,
int  secs 
)

Definition at line 582 of file rpmio.c.

References errno, fdFileno, and _FD_s::req.

Referenced by fdFgets(), ftpAbort(), ufdClose(), and ufdRead().

static int fdSeek ( void *  cookie,
_libio_pos_t  pos,
int  whence 
) [inline, static]

Definition at line 446 of file rpmio.c.

References _FD_s::bytesRemain, c2f(), DBGIO, fdbg(), fdFileno, fdstat_enter(), fdstat_exit(), and FDSTAT_SEEK.

Referenced by ufdSeek().

static int fdSeekNot ( void *  cookie,
_libio_pos_t  pos,
int  whence 
) [inline, static]

Definition at line 271 of file rpmio.c.

References c2f(), and FDSANE.

off_t fdSize ( FD_t  fd  ) 

Definition at line 230 of file rpmio.c.

References _FD_s::contentLength, DBGIO, FDSANE, Fileno(), URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and _FD_s::urlType.

Referenced by doReadRC(), and rpmioSlurp().

int fdWritable ( FD_t  fd,
int  secs 
)

Definition at line 527 of file rpmio.c.

References _rpmio_debug, errno, fdFileno, _FD_s::req, and strerror.

Referenced by checkResponse(), ftpLogin(), and ufdWrite().

int Ferror ( FD_t  fd  ) 

ferror(3) clone.

Definition at line 3604 of file rpmio.c.

References DBGIO, _FD_s::errcookie, fdbg(), fdFileno, fdGetFILE, fpio, _FD_s::fps, _FDSTACK_s::io, lzdio, _FD_s::nfps, _FD_s::req, and _FD_s::syserrno.

Referenced by addFileToTagAux(), cpio_copy(), defaultMachine(), dodigest(), doIcon(), doReadRC(), doScript(), IDTXglob(), isCompressed(), isSpecFile(), makeGPGSignature(), makeHDRSignature(), makePGPSignature(), makeTempFile(), manageFile(), processPackageFiles(), readLead(), readLine(), readRPM(), rpmcliSign(), rpmdsCpuinfo(), rpmdsSysinfoFile(), rpmfd_Fopen(), rpmfd_init(), rpmgiOpen(), rpmInstall(), rpmInstallSource(), rpmioSlurp(), rpmLoadMacroFile(), rpmpsmStage(), rpmReadRC(), rpmShowProgress(), rpmtsSolve(), runScript(), unsatisfiedDepend(), urlGetFile(), and writeRPM().

int Fflush ( FD_t  fd  ) 

fflush(3) clone.

Definition at line 3584 of file rpmio.c.

References fdGetFILE, fdGetFp(), fdGetIo(), and fpio.

Referenced by copyFile(), cpio_doio(), extractRegular(), rpmpsmStage(), and writeRPM().

int Fileno ( FD_t  fd  ) 

fileno(3) clone.

Definition at line 3646 of file rpmio.c.

References DBGIO, fdbg(), _FDSTACK_s::fdno, _FD_s::fps, _FD_s::nfps, and _FD_s::req.

Referenced by cpio_doio(), doScript(), Fcntl(), Fdopen(), fdSize(), makeTempFile(), printSize(), rpmpsmStage(), rpmReadPackageFile(), rpmtsCallback(), runScript(), ufdOpen(), writeFile(), and writeRPM().

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

fopen(3) clone.

Definition at line 3511 of file rpmio.c.

References _rpmio_debug, cvtfmode(), fdClose, fdFileno, fdGetFdno(), fdGetFp(), fdOpen, Fdopen(), fdPush(), fpio, _FD_s::req, ufdOpen(), URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlIsURL().

Referenced by addFileToTagAux(), defaultMachine(), dodigest(), doIcon(), doReadRC(), IDTXglob(), isCompressed(), isSpecFile(), makeGPGSignature(), makeHDRSignature(), makePGPSignature(), makeTempFile(), manageFile(), processPackageFiles(), readLine(), readRPM(), rpmcliSign(), rpmdbExportInfo(), rpmdsCpuinfo(), rpmdsSysinfoFile(), rpmfd_Fopen(), rpmfd_init(), rpmgiOpen(), rpmHeaderFromFile(), rpmInstall(), rpmInstallSource(), rpmioSlurp(), rpmLoadMacroFile(), rpmpsmStage(), rpmReadRC(), rpmShowProgress(), rpmtsRollback(), rpmtsSolve(), runScript(), unsatisfiedDepend(), urlGetFile(), and writeRPM().

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

fread(3) clone.

Definition at line 3139 of file rpmio.c.

References DBGIO, fdbg(), fdGetFILE, fdGetIo(), FDIOVEC, FDSANE, fpio, and FDIO_s::read.

Referenced by copyFile(), cpio_copy(), defaultMachine(), dodigest(), doIcon(), doReadRC(), isCompressed(), isSpecFile(), readFile(), readRPM(), rpmioSlurp(), rpmReadPackageFile(), ufdCopy(), unsatisfiedDepend(), and writeRPM().

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

fseek(3) clone.

Definition at line 3186 of file rpmio.c.

References DBGIO, fdbg(), fdGetFILE, fdGetIo(), FDIOVEC, FDSANE, fpio, and FDIO_s::seek.

Referenced by readRPM(), and writeRPM().

const char* Fstrerror ( FD_t  fd  ) 

strerror(3) clone.

Definition at line 3128 of file rpmio.c.

References errno, FDSANE, getFdErrstr(), and strerror.

Referenced by copyFile(), cpio_copy(), doIcon(), doReadRC(), IDTXglob(), isCompressed(), isSpecFile(), manageFile(), processPackageFiles(), readFile(), readLead(), readLine(), readRPM(), rpmfd_Fopen(), rpmfd_init(), rpmgiOpen(), rpmInstall(), rpmInstallSource(), rpmpsmStage(), rpmReadPackageFile(), rpmReadRC(), rpmReSign(), rpmShowProgress(), rpmtsSolve(), urlGetFile(), and writeRPM().

static int ftpAbort ( urlinfo  u,
FD_t  data 
) [static]

Definition at line 1670 of file rpmio.c.

References urlinfo_s::buf, urlinfo_s::bufAlloced, urlinfo_s::ctrl, DBGIO, DM, fdClose, fdFileno, fdFree, _FDSTACK_s::fdno, fdReadable(), fdWrite, _FD_s::fps, ftpCheckResponse(), FTPERR_NIC_ABORT_IN_PROGRESS, FTPERR_SERVER_IO_ERROR, _FD_s::ftpFileDoneNeeded, IAC, IP, _FD_s::rd_timeoutsecs, SHUT_RDWR, timedRead, and URLSANE.

Referenced by ufdClose().

static int ftpCheckResponse ( urlinfo  u,
char **  str 
) [static]

Definition at line 1092 of file rpmio.c.

References checkResponse(), urlinfo_s::ctrl, FTPERR_BAD_SERVER_RESPONSE, FTPERR_FILE_NOT_FOUND, FTPERR_NIC_ABORT_IN_PROGRESS, and URLSANE.

Referenced by ftpAbort(), ftpCommand(), ftpFileDone(), and ftpLogin().

static int ftpCommand ( urlinfo  u,
char **  str,
  ... 
) [static]

Definition at line 1118 of file rpmio.c.

References alloca(), urlinfo_s::ctrl, fdWrite, ftpCheckResponse(), FTPERR_SERVER_IO_ERROR, stpcpy(), and URLSANE.

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

static int ftpFileDone ( urlinfo  u,
FD_t  data 
) [static]

Definition at line 1733 of file rpmio.c.

References urlinfo_s::ctrl, fdFree, ftpCheckResponse(), _FD_s::ftpFileDoneNeeded, and URLSANE.

Referenced by ufdClose().

static int ftpLogin ( urlinfo  u  )  [static]

Definition at line 1158 of file rpmio.c.

References alloca(), urlinfo_s::ctrl, errno, fdClose, fdFileno, fdLink, fdSetSyserrno(), fdWritable(), ftpCheckResponse(), ftpCommand(), FTPERR_BAD_HOSTNAME, ftpStrerror(), urlinfo_s::host, IPPORT_FTP, urlinfo_s::password, urlinfo_s::port, urlinfo_s::proxyh, urlinfo_s::proxyp, urlinfo_s::proxyu, tcpConnect(), URLSANE, and urlinfo_s::user.

Referenced by urlConnect().

const char* ftpStrerror ( int  errorNumber  ) 

Definition at line 702 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_NE_AUTH, FTPERR_NE_CONNECT, FTPERR_NE_ERROR, FTPERR_NE_FAILED, FTPERR_NE_LOOKUP, FTPERR_NE_PROXYAUTH, FTPERR_NE_REDIRECT, FTPERR_NE_RETRY, FTPERR_NE_TIMEOUT, FTPERR_NIC_ABORT_IN_PROGRESS, FTPERR_PASSIVE_ERROR, FTPERR_SERVER_IO_ERROR, FTPERR_SERVER_TIMEOUT, and FTPERR_UNKNOWN.

Referenced by ftpLogin(), prepFetch(), rpmInstall(), ufdCopy(), and urlStrerror().

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

fwrite(3) clone.

Definition at line 3161 of file rpmio.c.

References DBGIO, fdbg(), fdGetFILE, fdGetIo(), FDIOVEC, FDSANE, fpio, and FDIO_s::write.

Referenced by copyFile(), cpio_copy(), rpmWriteSignature(), runScript(), ufdCopy(), writeLead(), and writeRPM().

static const char* getFdErrstr ( FD_t  fd  )  [static]

Definition at line 3100 of file rpmio.c.

References _FD_s::errcookie, fdGetIo(), lzdio, strerror, and _FD_s::syserrno.

Referenced by Fstrerror().

static int getHostAddress ( const char *  host,
struct in_addr *  address 
) [static]

Definition at line 804 of file rpmio.c.

References errno, FTPERR_BAD_HOST_ADDR, FTPERR_BAD_HOSTNAME, inet_aton(), mygethostbyname(), and xisdigit().

static int inet_aton ( const char *  cp,
struct in_addr *  inp 
) [static]

Definition at line 77 of file rpmio.c.

Referenced by getHostAddress().

static int lzdClose ( void *  cookie  )  [static]

Definition at line 3046 of file rpmio.c.

References _free(), _rpmio_debug, c2f(), DBGIO, _FD_s::errcookie, fdbg(), fdFree, FDSTAT_CLOSE, fdstat_enter(), fdstat_exit(), fdstat_print(), _CBuffer::File, lzfile::g_InBuffer, lzdFileno(), lzfile::pid, rpmIsDebug, lzfile::state, and strerror.

static FD_t lzdFdopen ( void *  cookie,
const char *  fmode 
) [static]

Definition at line 2947 of file rpmio.c.

References c2f(), fdFileno, fdSetFdno(), lzdReadOpen(), and lzdWriteOpen().

Referenced by Fdopen().

static void* lzdFileno ( FD_t  fd  )  [inline, static]

Definition at line 2806 of file rpmio.c.

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

Referenced by lzdClose(), lzdFlush(), lzdRead(), and lzdWrite().

static int lzdFlush ( FD_t  fd  )  [static]

Definition at line 2967 of file rpmio.c.

References _CBuffer::File, lzfile::g_InBuffer, and lzdFileno().

static FD_t lzdOpen ( const char *  path,
const char *  mode 
) [static]

Definition at line 2926 of file rpmio.c.

References lzdReadOpen(), and lzdWriteOpen().

static ssize_t lzdRead ( void *  cookie,
char *  buf,
size_t  count 
) [static]

Definition at line 2981 of file rpmio.c.

References _FD_s::bytesRemain, c2f(), _FD_s::errcookie, fdstat_enter(), fdstat_exit(), FDSTAT_READ, fdUpdateDigests(), _CBuffer::File, lzfile::g_InBuffer, _CBuffer::InCallback, lzdFileno(), _FD_s::ndigests, and lzfile::state.

static FD_t lzdReadOpen ( int  fdno,
int  fopen 
) [static]

Definition at line 2875 of file rpmio.c.

References _free(), fdLink, fdNew, fdPop(), fdPush(), lzdio, LzmaReadCompressed(), MyReadFileAndCheck(), xcalloc(), and xmalloc().

Referenced by lzdFdopen(), and lzdOpen().

static int lzdSeek ( void *  cookie,
_libio_pos_t  pos,
int  whence 
) [inline, static]

Definition at line 3036 of file rpmio.c.

References c2f(), and LZDONLY.

static ssize_t lzdWrite ( void *  cookie,
const char *  buf,
size_t  count 
) [static]

Definition at line 3012 of file rpmio.c.

References _FD_s::bytesRemain, c2f(), _FD_s::errcookie, fdstat_enter(), fdstat_exit(), FDSTAT_WRITE, fdUpdateDigests(), _CBuffer::File, lzfile::g_InBuffer, lzdFileno(), _FD_s::ndigests, and strerror.

static FD_t lzdWriteOpen ( int  fdno,
int  fopen 
) [static]

Definition at line 2826 of file rpmio.c.

References _free(), fdLink, fdNew, fdPop(), fdPush(), lzdio, and xcalloc().

Referenced by lzdFdopen(), and lzdOpen().

static int LzmaReadCompressed ( void *  object,
const unsigned char **  buffer,
unsigned int *  size 
) [static]

Definition at line 2796 of file rpmio.c.

References _CBuffer::Buffer, _CBuffer::File, kInBufferSize, and MyReadFile().

Referenced by lzdReadOpen().

static int mygethostbyname ( const char *  host,
struct in_addr *  address 
) [static]

Definition at line 783 of file rpmio.c.

Referenced by getHostAddress().

static size_t MyReadFile ( FILE *  file,
void *  data,
size_t  size 
) [static]

Definition at line 2781 of file rpmio.c.

Referenced by LzmaReadCompressed(), and MyReadFileAndCheck().

static int MyReadFileAndCheck ( FILE *  file,
void *  data,
size_t  size 
) [static]

Definition at line 2789 of file rpmio.c.

References MyReadFile().

Referenced by lzdReadOpen().

int rpmioAccess ( const char *  FN,
const char *  path,
int  mode 
)

Check FN access, expanding relative paths and twiddles.

Parameters:
FN file path to check
path colon separated search path (NULL uses $PATH)
mode type of access(2) to check (0 uses X_OK)
Returns:
0 if accessible

Definition at line 3730 of file rpmio.c.

References _rpmio_debug, Access(), alloca_strdup, F_OK, getenv(), R_OK, rpmCleanPath(), stpcpy(), W_OK, and X_OK.

Referenced by rpmtsCreate(), and unsatisfiedDepend().

int rpmioMkpath ( const char *  path,
mode_t  mode,
uid_t  uid,
gid_t  gid 
)

Insure that directories in path exist, creating as needed.

Parameters:
path directory path
mode directory mode (if created)
uid directory uid (if created), or -1 to skip
gid directory uid (if created), or -1 to skip
Returns:
0 on success, errno (or -1) on error

Definition at line 3673 of file rpmio.c.

References alloca(), errno, Mkdir(), RPMMESS_DEBUG, rpmMessage, Stat(), and stpcpy().

Referenced by db3open(), and makeTempFile().

int rpmioSlurp ( const char *  fn,
const unsigned char **  bp,
ssize_t *  blenp 
)

Read an entire file into a buffer.

Parameters:
fn file name to read
Return values:
*bp (malloc'd) buffer address
*blenp (malloc'd) buffer length
Returns:
0 on success

Definition at line 3865 of file rpmio.c.

References Fclose(), fdSize(), Ferror(), Fopen(), Fread(), xmalloc(), and xrealloc().

Referenced by pgpReadPkts(), processMetadataFile(), and rpmPlatform().

static int tcpConnect ( FD_t  ctrl,
const char *  host,
int  port 
) [static]

Definition at line 834 of file rpmio.c.

References _ftp_debug, and FTPERR_FAILED_CONNECT.

Referenced by ftpLogin().

int ufdCopy ( FD_t  sfd,
FD_t  tfd 
)

Definition at line 1516 of file rpmio.c.

References DBGIO, Fread(), FTPERR_FILE_IO_ERROR, ftpStrerror(), Fwrite(), RPMCALLBACK_INST_OPEN_FILE, and RPMCALLBACK_INST_PROGRESS.

Referenced by ufdGetFile().

int ufdGetFile ( FD_t  sfd,
FD_t  tfd 
)

Definition at line 1627 of file rpmio.c.

References Fclose(), FDSANE, and ufdCopy().

Referenced by urlGetFile().

void* ufdGetUrlinfo ( FD_t  fd  ) 

Definition at line 1905 of file rpmio.c.

References FDSANE, _FD_s::url, and urlLink.

static FD_t ufdOpen ( const char *  url,
int  flags,
mode_t  mode 
) [static]

Definition at line 2226 of file rpmio.c.

References _rpmio_debug, _FD_s::bytesRemain, _FD_s::contentLength, DBGIO, fdbg(), fdDup(), fdLink, fdOpen, fdSetIo(), fdSetOpen(), Fileno(), ftpOpen(), ftpReq(), urlinfo_s::openError, STDIN_FILENO, ufdClose(), ufdio, URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, urlPath(), _FD_s::urlType, and _FD_s::wr_chunked.

Referenced by Fopen().

static ssize_t ufdRead ( void *  cookie,
char *  buf,
size_t  count 
) [static]

Definition at line 1914 of file rpmio.c.

References _rpmio_debug, _FD_s::bytesRemain, c2f(), errno, fdFileno, fdGetIo(), fdio, fdRead, fdReadable(), _FD_s::rd_timeoutsecs, strerror, and UFDONLY.

static int ufdSeek ( void *  cookie,
_libio_pos_t  pos,
int  whence 
) [inline, static]

Definition at line 2046 of file rpmio.c.

References c2f(), fdSeek(), URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and _FD_s::urlType.

static ssize_t ufdWrite ( void *  cookie,
const char *  buf,
size_t  count 
) [static]

Definition at line 1981 of file rpmio.c.

References _rpmio_debug, _FD_s::bytesRemain, c2f(), errno, fdGetFdno(), fdGetIo(), fdio, fdWritable(), fdWrite, strerror, and UFDONLY.

static int urlConnect ( const char *  url,
urlinfo uret 
) [static]

Definition at line 1580 of file rpmio.c.

References _, _FD_s::bytesRemain, _FD_s::contentLength, urlinfo_s::ctrl, fdFileno, fdFree, fdLink, fdNew, fdSetIo(), fdSetOpen(), _FD_s::ftpFileDoneNeeded, ftpLogin(), ftpTimeoutSecs, urlinfo_s::host, urlinfo_s::openError, urlinfo_s::password, _FD_s::rd_timeoutsecs, RPMMESS_DEBUG, rpmMessage, ufdio, _FD_s::url, URL_IS_FTP, urlFree, urlLink, urlSplit(), urlinfo_s::urltype, and urlinfo_s::user.

Referenced by ftpCmd(), and ftpOpen().

void urlSetCallback ( rpmCallbackFunction  notify,
void *  notifyData,
int  notifyCount 
)

Definition at line 1510 of file rpmio.c.

const char* urlStrerror ( const char *  url  ) 

Definition at line 757 of file rpmio.c.

References _, errno, ftpStrerror(), urlinfo_s::openError, strerror, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, urlIsURL(), and urlSplit().

static FD_t XfdFree ( FD_t  fd,
const char *  msg,
const char *  file,
unsigned  line 
) [inline, static]

Definition at line 318 of file rpmio.c.

References _free(), DBGREFS, fdbg(), FDNREFS, FDSANE, _FDDIGEST_s::hashctx, and rpmDigestFinal().

static FD_t XfdLink ( void *  cookie,
const char *  msg,
const char *  file,
unsigned  line 
) [inline, static]

Definition at line 299 of file rpmio.c.

References c2f(), DBGREFS, fdbg(), FDNREFS, and _FD_s::nrefs.

Referenced by XfdNew().

static FD_t XfdNew ( const char *  msg,
const char *  file,
unsigned  line 
) [inline, static]

Definition at line 347 of file rpmio.c.

References FDMAGIC, ufdio, URL_IS_UNKNOWN, xcalloc(), and XfdLink().


Variable Documentation

int _av_debug = 0

Definition at line 152 of file rpmio.c.

int _dav_debug = 0

Definition at line 162 of file rpmio.c.

int _ftp_debug = 0

Definition at line 157 of file rpmio.c.

const char* _path = "/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:~/bin" [static]

Definition at line 3726 of file rpmio.c.

int _rpmio_debug = 0

Definition at line 147 of file rpmio.c.

FDIO_t fdio = &fdio_s

Definition at line 525 of file rpmio.c.

Referenced by fdbg(), Fdopen(), ufdRead(), ufdWrite(), and XurlFree().

struct FDIO_s fdio_s [static]

Initial value:

 {
   __fdRead ,  __fdWrite , fdSeek,  __fdClose , XfdLink, XfdFree, XfdNew, fdFileno,
   __fdOpen , NULL, fdGetFp, NULL,      mkdir, chdir, rmdir, rename, unlink
}

Definition at line 520 of file rpmio.c.

FDIO_t fpio = &fpio_s

Definition at line 3924 of file rpmio.c.

Referenced by Fclose(), fdbg(), Fdopen(), Ferror(), Fflush(), Fopen(), Fread(), Fseek(), Fwrite(), and XurlFree().

struct FDIO_s fpio_s [static]

Initial value:

Definition at line 3919 of file rpmio.c.

int ftpTimeoutSecs = 60 [static]

Definition at line 142 of file rpmio.c.

Referenced by ftpOpen(), and urlConnect().

FDIO_t lzdio = &lzdio_s

Definition at line 3096 of file rpmio.c.

Referenced by fdbg(), Fdopen(), Ferror(), getFdErrstr(), lzdFileno(), lzdReadOpen(), and lzdWriteOpen().

struct FDIO_s lzdio_s [static]

Initial value:

 {
  lzdRead, lzdWrite, lzdSeek, lzdClose, XfdLink, XfdFree, XfdNew, fdFileno,
  NULL, lzdOpen, lzdFileno, lzdFlush,   NULL, NULL, NULL, NULL, NULL
}

Definition at line 3091 of file rpmio.c.

int noLibio = 1

Definition at line 134 of file rpmio.c.

FDIO_t ufdio = &ufdio_s

Definition at line 2323 of file rpmio.c.

Referenced by Fclose(), fdbg(), Fdopen(), ftpOpen(), ufdOpen(), urlConnect(), and XfdNew().

struct FDIO_s ufdio_s [static]

Initial value:

Definition at line 2318 of file rpmio.c.

rpmCallbackFunction urlNotify = NULL [static]

Definition at line 1502 of file rpmio.c.

int urlNotifyCount = -1 [static]

Definition at line 1508 of file rpmio.c.

void* urlNotifyData = NULL [static]

Definition at line 1505 of file rpmio.c.


Generated on Fri Aug 31 12:48:32 2007 for rpm by  doxygen 1.5.1