rpmio/rpmio.c File Reference

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

Go to the source code of this file.

Defines

#define IPPORT_FTP   21
#define IPPORT_HTTP   80
#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 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 FDIOVEC(_fd, _vec)   ((fdGetIo(_fd) && fdGetIo(_fd)->_vec) ? fdGetIo(_fd)->_vec : NULL)

Functions

static int inet_aton (const char *cp, struct in_addr *inp)
static void * _free (const void *p)
 Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
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)
ssize_t fdRead (void *cookie, char *buf, size_t count)
ssize_t fdWrite (void *cookie, const char *buf, size_t count)
static int fdSeek (void *cookie, _libio_pos_t pos, int whence)
int fdClose (void *cookie)
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 *const 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)
static int httpResp (urlinfo u, FD_t ctrl, char **str)
static int httpReq (FD_t ctrl, const char *httpCmd, const char *httpArg)
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 httpOpen (const char *url, int flags, mode_t mode, urlinfo *uret)
static FD_t ufdOpen (const char *url, int flags, mode_t mode)
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 rpmioSlurp (const char *fn, const byte **bp, ssize_t *blenp)

Variables

int noLibio = 1
static int ftpTimeoutSecs = 60
static int httpTimeoutSecs = 60
int _ftp_debug = 0
int _rpmio_debug = 0
static struct FDIO_s fdio_s
FDIO_t fdio = &fdio_s
FDIO_t fadio
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 fpio_s
FDIO_t fpio = &fpio_s


Detailed Description

Definition in file rpmio.c.


Define Documentation

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

Definition at line 88 of file rpmio.c.

#define DM   242
 

Definition at line 1439 of file rpmio.c.

Referenced by ftpAbort().

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

Definition at line 84 of file rpmio.c.

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

Definition at line 92 of file rpmio.c.

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

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

Definition at line 2610 of file rpmio.c.

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

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

Definition at line 82 of file rpmio.c.

Referenced by XfdFree(), and XfdLink().

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

Definition at line 86 of file rpmio.c.

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

Definition at line 83 of file rpmio.c.

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

Definition at line 87 of file rpmio.c.

#define IAC   255
 

Definition at line 1433 of file rpmio.c.

Referenced by ftpAbort().

#define IP   244
 

Definition at line 1436 of file rpmio.c.

Referenced by ftpAbort().

#define IPPORT_FTP   21
 

Definition at line 43 of file rpmio.c.

Referenced by ftpLogin(), and urlSplit().

#define IPPORT_HTTP   80
 

Definition at line 46 of file rpmio.c.

Referenced by urlSplit().

#define SHUT_RDWR   1+1
 

Definition at line 1442 of file rpmio.c.

Referenced by ftpAbort().

#define TIMEOUT_SECS   60
 

Definition at line 103 of file rpmio.c.

#define UFDONLY fd   ) 
 

Definition at line 90 of file rpmio.c.

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


Function Documentation

static void* _free const void *  p  )  [inline, static]
 

Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.

Parameters:
p memory to free
Return values:
NULL always

Definition at line 131 of file rpmio.c.

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

Definition at line 833 of file rpmio.c.

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

Referenced by ftpCheckResponse(), and httpResp().

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] = '' on error.

  • gzopen: [0-9] is compession level
  • gzopen: 'f' is filtered (Z_FILTERED)
  • gzopen: 'h' is Huffman encoding (Z_HUFFMAN_ONLY)
  • bzopen: [1-9] is block size (modulo 100K)
  • bzopen: 's' is smallmode
  • HACK: '.' terminates, rest is type of I/O

Definition at line 2780 of file rpmio.c.

Referenced by Fdopen(), and Fopen().

int Fclose FD_t  fd  ) 
 

fclose(3) clone.

Definition at line 2699 of file rpmio.c.

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

Referenced by addFileToTagAux(), closeCallback(), closeSpec(), cpio_doio(), db1close(), defaultMachine(), domd5(), doReadRC(), doScript(), fadOpen(), IDTXglob(), isCompressed(), isSpecFile(), main(), makeGPGSignature(), makePGPSignature(), makeTempFile(), manageFile(), processPackageFiles(), readIcon(), readLine(), readRPM(), rewriteRPM(), rpmHeaderFromFD(), rpmHeaderFromFile(), rpmHeaderFromPackage(), rpmInstallSource(), rpmioSlurp(), rpmMergeHeadersFromFD(), rpmQueryVerify(), rpmShowProgress(), rpmtransDealloc(), showVerifyPackage(), tsCallback(), ufdGetFile(), urlGetFile(), verifyGPGSignature(), verifyPGPSignature(), writeRPM(), and XurlFree().

int Fcntl FD_t  fd,
int  op,
void *  lip
 

fcntl(2) clone.

Definition at line 3108 of file rpmio.c.

References Fileno().

Referenced by db1open().

static const char* fdbg FD_t  fd  )  [static]
 

Definition at line 141 of file rpmio.c.

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

Referenced by Fclose(), fdClose(), fdDup(), Fdopen(), fdOpen(), fdRead(), fdSeek(), fdWrite(), Ferror(), Fileno(), Fread(), Fseek(), Fwrite(), ufdOpen(), XfdFree(), and XfdLink().

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(), readRPM(), rpmHeaderFromFD(), rpmHeaderFromPackage(), rpmMergeHeadersFromFD(), rpmtransSetAttr(), showVerifyPackage(), tsCallback(), and ufdOpen().

FD_t Fdopen FD_t  ofd,
const char *  fmode
 

Definition at line 2850 of file rpmio.c.

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

Referenced by cpio_doio(), doScript(), Fopen(), and main().

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().

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

Definition at line 431 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 244 of file rpmio.c.

References c2f(), and FDSANE.

off_t fdSize FD_t  fd  ) 
 

Definition at line 204 of file rpmio.c.

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

Referenced by doReadRC(), readIcon(), and rpmioSlurp().

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(), and httpReq().

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.

int Ferror FD_t  fd  ) 
 

ferror(3) clone.

Definition at line 3059 of file rpmio.c.

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

Referenced by addFileToTagAux(), cpio_copy(), db1open(), defaultMachine(), doFopen(), domd5(), doReadRC(), doScript(), fadOpen(), IDTXglob(), isCompressed(), isSpecFile(), main(), makeGPGSignature(), makePGPSignature(), makeTempFile(), manageFile(), processPackageFiles(), psmStage(), readIcon(), readLine(), readRPM(), rpmInstallSource(), rpmioSlurp(), rpmQueryVerify(), urlGetFile(), verifyGPGSignature(), verifyPGPSignature(), and writeRPM().

int Fflush FD_t  fd  ) 
 

fflush(3) clone.

Definition at line 3039 of file rpmio.c.

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

Referenced by cpio_doio(), expandRegular(), and writeRPM().

int Fileno FD_t  fd  ) 
 

fileno(3) clone.

Definition at line 3094 of file rpmio.c.

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

Referenced by checkSize(), cpio_doio(), db1sync(), doScript(), Fcntl(), Fdopen(), fdSize(), makeTempFile(), readPackageHeaders(), ufdOpen(), writeFile(), and writeRPM().

FD_t Fopen const char *  path,
const char *  fmode
 

fopen(3) clone.

Definition at line 2962 of file rpmio.c.

References FDIO_s::_open, _rpmio_debug, cvtfmode(), fadio, fdClose(), fdFileno, fdGetFdno(), fdGetFp(), fdOpen, Fdopen(), fdPush(), fpio, ufdOpen(), URL_IS_DASH, URL_IS_FTP, URL_IS_HTTP, URL_IS_PATH, URL_IS_UNKNOWN, and urlIsURL().

Referenced by addFileToTagAux(), defaultMachine(), doFopen(), domd5(), doReadRC(), IDTXglob(), isCompressed(), isSpecFile(), main(), makeGPGSignature(), makePGPSignature(), makeTempFile(), manageFile(), processPackageFiles(), psmStage(), readIcon(), readLine(), readRPM(), rpmHeaderFromFile(), rpmInstallSource(), rpmioSlurp(), rpmQueryVerify(), rpmShowProgress(), urlGetFile(), verifyGPGSignature(), verifyPGPSignature(), and writeRPM().

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

fread(3) clone.

Definition at line 2613 of file rpmio.c.

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

Referenced by copyFile(), cpio_copy(), defaultMachine(), domd5(), doReadRC(), isCompressed(), isSpecFile(), main(), Pread(), readIcon(), readRPM(), rpmioSlurp(), ufdCopy(), and writeRPM().

int Fseek FD_t  fd,
_libio_off_t  offset,
int  whence
 

fseek(3) clone.

Definition at line 2665 of file rpmio.c.

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

Referenced by db1cput(), doGetRecord(), fadOpen(), Pread(), Pwrite(), readRPM(), and writeRPM().

const char* Fstrerror FD_t  fd  ) 
 

strerror(3) clone.

Definition at line 2602 of file rpmio.c.

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

Referenced by copyFile(), cpio_copy(), doFopen(), doReadRC(), IDTXglob(), isCompressed(), isSpecFile(), main(), manageFile(), processPackageFiles(), psmStage(), readIcon(), readLead(), readLine(), readRPM(), rpmInstallSource(), rpmQueryVerify(), rpmReSign(), urlGetFile(), and writeRPM().

static int ftpAbort urlinfo  u,
FD_t  data
[static]
 

Definition at line 1445 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 996 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(), ftpLogin(), and ftpReq().

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

Definition at line 1022 of file rpmio.c.

References _ftp_debug, 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 1508 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 1060 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* 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().

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

fwrite(3) clone.

Definition at line 2640 of file rpmio.c.

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

Referenced by copyFile(), cpio_copy(), fadOpen(), main(), Pwrite(), rpmWriteSignature(), ufdCopy(), verifyGPGSignature(), verifyPGPSignature(), writeLead(), and writeRPM().

static const char* getFdErrstr FD_t  fd  )  [static]
 

Definition at line 2576 of file rpmio.c.

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

Referenced by Fstrerror().

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

Definition at line 759 of file rpmio.c.

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

Referenced by tcpConnect().

static FD_t httpOpen const char *  url,
int  flags,
mode_t  mode,
urlinfo uret
[static]
 

Definition at line 1986 of file rpmio.c.

References urlinfo_s::ctrl, urlinfo_s::data, fdLink, fdNew, fdSetIo(), httpTimeoutSecs, _FD_s::nrefs, ufdio, _FD_s::url, URL_IS_HTTP, urlLink, and urlSplit().

Referenced by ufdOpen().

static int httpReq FD_t  ctrl,
const char *  httpCmd,
const char *  httpArg
[static]
 

Definition at line 1550 of file rpmio.c.

References _ftp_debug, alloca(), errno, fdClose(), fdFileno, fdLink, fdSetSyserrno(), fdWritable(), fdWrite, FTPERR_BAD_HOSTNAME, FTPERR_SERVER_IO_ERROR, ftpStrerror(), urlinfo_s::host, httpResp(), urlinfo_s::httpVersion, urlinfo_s::port, urlinfo_s::proxyh, urlinfo_s::proxyp, tcpConnect(), urlinfo_s::url, _FD_s::url, URLSANE, VERSION, and _FD_s::wr_chunked.

Referenced by ufdOpen().

static int httpResp urlinfo  u,
FD_t  ctrl,
char **  str
[static]
 

Definition at line 1526 of file rpmio.c.

References _ftp_debug, checkResponse(), FTPERR_FILE_NOT_FOUND, and URLSANE.

Referenced by httpReq(), and ufdClose().

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

Definition at line 50 of file rpmio.c.

Referenced by ftpReq(), and getHostAddress().

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

Definition at line 738 of file rpmio.c.

Referenced by getHostAddress().

int rpmioSlurp const char *  fn,
const byte **  bp,
ssize_t *  blenp
 

Definition at line 3117 of file rpmio.c.

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

Referenced by pgpReadPkts().

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

Definition at line 781 of file rpmio.c.

References _ftp_debug, errno, fdSetFdno(), fdSetSyserrno(), FTPERR_FAILED_CONNECT, ftpStrerror(), and getHostAddress().

Referenced by ftpLogin(), and httpReq().

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, and RPMCALLBACK_INST_PROGRESS.

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.

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

Definition at line 2030 of file rpmio.c.

References _rpmio_debug, _FD_s::bytesRemain, _FD_s::contentLength, DBGIO, fdbg(), fdDup(), fdLink, fdOpen, fdSetIo(), Fileno(), ftpOpen(), ftpReq(), httpOpen(), httpReq(), urlinfo_s::openError, ufdClose(), ufdio, URL_IS_DASH, URL_IS_FTP, URL_IS_HTTP, 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 1674 of file rpmio.c.

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

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

Definition at line 1803 of file rpmio.c.

References c2f(), fdSeek(), URL_IS_DASH, URL_IS_FTP, URL_IS_HTTP, 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 1738 of file rpmio.c.

References _FD_s::bytesRemain, c2f(), fdGetFdno(), fdGetIo(), fdio, fdWrite, and UFDONLY.

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

Definition at line 1358 of file rpmio.c.

References _, _FD_s::bytesRemain, _FD_s::contentLength, urlinfo_s::ctrl, fdFileno, fdFree, fdLink, fdNew, fdSetIo(), _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 1292 of file rpmio.c.

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 FD_t XfdFree FD_t  fd,
const char *  msg,
const char *  file,
unsigned  line
[inline, static]
 

Definition at line 301 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 281 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 329 of file rpmio.c.

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


Variable Documentation

int _ftp_debug = 0
 

Definition at line 118 of file rpmio.c.

Referenced by checkResponse(), ftpCommand(), ftpReq(), httpReq(), httpResp(), main(), tcpConnect(), and ufdClose().

int _rpmio_debug = 0
 

Definition at line 123 of file rpmio.c.

FDIO_t fadio
 

Definition at line 524 of file rpmio.c.

FDIO_t fdio = &fdio_s
 

Definition at line 521 of file rpmio.c.

Referenced by fadOpen(), fdbg(), Fdopen(), ufdRead(), ufdWrite(), XfdNew(), 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 517 of file rpmio.c.

FDIO_t fpio = &fpio_s
 

Definition at line 3173 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 3169 of file rpmio.c.

int ftpTimeoutSecs = 60 [static]
 

Definition at line 108 of file rpmio.c.

Referenced by ftpOpen(), and urlConnect().

int httpTimeoutSecs = 60 [static]
 

Definition at line 113 of file rpmio.c.

Referenced by httpOpen().

int noLibio = 1
 

Definition at line 100 of file rpmio.c.

Referenced by Fclose(), Fdopen(), main(), and ufdClose().

FDIO_t ufdio = &ufdio_s
 

Definition at line 2124 of file rpmio.c.

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

struct FDIO_s ufdio_s [static]
 

Initial value:

Definition at line 2120 of file rpmio.c.

rpmCallbackFunction urlNotify = NULL [static]
 

Definition at line 1284 of file rpmio.c.

int urlNotifyCount = -1 [static]
 

Definition at line 1290 of file rpmio.c.

void* urlNotifyData = NULL [static]
 

Definition at line 1287 of file rpmio.c.


Generated on Thu Mar 9 17:27:47 2006 for rpm by  doxygen 1.4.6