#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 | 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 | UFDONLY(fd) /* assert(fdGetIo(fd) == ufdio) */ |
#define | fdGetFILE(_fd) ((FILE *)fdGetFp(_fd)) |
#define | TIMEOUT_SECS 60 |
#define | IAC 255 /* interpret as command: */ |
#define | IP 244 /* interrupt process--permanently */ |
#define | DM 242 /* data mark--for connect. cleaning */ |
#define | SHUT_RDWR 1+1 |
#define | FDIOVEC(_fd, _vec) ((fdGetIo(_fd) && fdGetIo(_fd)->_vec) ? fdGetIo(_fd)->_vec : NULL) |
Functions | |
int | inet_aton (const char *cp, struct in_addr *inp) |
void * | _free (const void *p) |
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL. | |
const char * | fdbg (FD_t fd) |
off_t | fdSize (FD_t fd) |
FD_t | fdDup (int fdno) |
int | fdSeekNot (void *cookie, _libio_pos_t pos, int whence) |
FD_t | XfdLink (void *cookie, const char *msg, const char *file, unsigned line) |
FD_t | XfdFree (FD_t fd, const char *msg, const char *file, unsigned line) |
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) |
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) |
int | mygethostbyname (const char *host, struct in_addr *address) |
int | getHostAddress (const char *host, struct in_addr *address) |
int | tcpConnect (FD_t ctrl, const char *host, int port) |
int | checkResponse (void *uu, FD_t ctrl, int *ecp, char **str) |
int | ftpCheckResponse (urlinfo u, char **str) |
int | ftpCommand (urlinfo u, char **str,...) |
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) |
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) |
int | ftpAbort (urlinfo u, FD_t data) |
int | ftpFileDone (urlinfo u, FD_t data) |
int | httpResp (urlinfo u, FD_t ctrl, char **str) |
int | httpReq (FD_t ctrl, const char *httpCmd, const char *httpArg) |
void * | ufdGetUrlinfo (FD_t fd) |
ssize_t | ufdRead (void *cookie, char *buf, size_t count) |
ssize_t | ufdWrite (void *cookie, const char *buf, size_t count) |
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) |
FD_t | httpOpen (const char *url, int flags, mode_t mode, urlinfo *uret) |
FD_t | ufdOpen (const char *url, int flags, mode_t mode) |
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. | |
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 | rpmioSlurp (const char *fn, const byte **bp, ssize_t *blenp) |
Variables | |
int | noLibio = 1 |
int | ftpTimeoutSecs = 60 |
int | httpTimeoutSecs = 60 |
int | _ftp_debug = 0 |
int | _rpmio_debug = 0 |
FDIO_s | fdio_s |
FDIO_t | fdio = &fdio_s |
rpmCallbackFunction | urlNotify = NULL |
void * | urlNotifyData = NULL |
int | urlNotifyCount = -1 |
FDIO_s | ufdio_s |
FDIO_t | ufdio = &ufdio_s |
FDIO_s | fpio_s |
FDIO_t | fpio = &fpio_s |
Definition in file rpmio.c.
|
|
|
|
|
Definition at line 64 of file rpmio.c. Referenced by ftpLogin(). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 62 of file rpmio.c. Referenced by ftpCommand(). |
|
|
|
|
|
|
|
Definition at line 31 of file rpmio.c. Referenced by ftpLogin(). |
|
|
|
|
|
|
|
|
|
Definition at line 432 of file rpmio.c. References c2f(), DBGIO, FD_t, fdbg(), fdFileno, fdFree, fdSetFdno(), FDSTAT_CLOSE, fdstat_enter(), and fdstat_exit(). |
|
Definition at line 456 of file rpmio.c. References DBGIO, FD_t, fdbg(), fdNew, fdSetFdno(), and _FD_s::flags. |
|
Definition at line 347 of file rpmio.c. References _FD_s::bytesRemain, c2f(), DBGIO, FD_t, fdbg(), fdFileno, fdstat_enter(), fdstat_exit(), FDSTAT_READ, fdUpdateDigests(), and _FD_s::ndigests. |
|
Definition at line 371 of file rpmio.c. References _FD_s::bytesRemain, c2f(), DBGIO, errno, FD_t, fdbg(), fdFileno, fdstat_enter(), fdstat_exit(), FDSTAT_WRITE, fdUpdateDigests(), _FD_s::ndigests, _FD_s::syserrno, and _FD_s::wr_chunked. |
|
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
|
|
Definition at line 802 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::httpHasRange, urlinfo_s::httpVersion, _FD_s::persist, urlinfo, URLSANE, _FD_s::wr_chunked, and xcalloc(). Referenced by ftpCheckResponse(). |
|
Convert stdio fmode to open(2) mode, filtering out zlib/bzlib flags. returns stdio[0] = '' on error.
|
|
fclose(3) clone.
Definition at line 2671 of file rpmio.c. References fdFree, fdGetFdno(), fdGetFILE, _FDSTACK_s::fdno, fdPop(), fdSetFp(), FDSTACK_t, _FDSTACK_s::fp, fpio, _FD_s::fps, _FDSTACK_s::io, _FD_s::nfps, noLibio, ufdClose(), and ufdio. Referenced by addFileToTagAux(), closeCallback(), closeSpec(), cpio_doio(), defaultMachine(), domd5(), doReadRC(), doScript(), fsmStage(), ftsStashLatest(), IDTXglob(), isSpecFile(), main(), makeGPGSignature(), makeHDRSignature(), makePGPSignature(), makeTempFile(), manageFile(), processPackageFiles(), readIcon(), readLine(), readRPM(), rewriteRPM(), rpmcliSign(), rpmfd_dealloc(), rpmfd_free(), rpmfd_init(), rpmGraph(), rpmHeaderFromFD(), rpmHeaderFromFile(), rpmInstall(), rpmInstallSourcePackage(), rpmLoadMacroFile(), rpmMergeHeadersFromFD(), rpmpsmStage(), rpmQueryVerify(), rpmShowProgress(), rpmts_dealloc(), rpmts_free(), rpmts_HdrFromFdno(), rpmtsCallback(), rpmtsSolve(), runScript(), showVerifyPackage(), writeRPM(), and XurlFree(). |
|
fcntl(2) clone.
|
|
Definition at line 135 of file rpmio.c. References _FD_s::bytesRemain, bzdio, fdio, _FDSTACK_s::fdno, FDSTACK_t, _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 __fdClose(), __fdOpen(), __fdRead(), __fdWrite(), fdDup(), fdSeek(), Fstrerror(), XfdFree(), and XfdLink(). |
|
Definition at line 221 of file rpmio.c. References DBGIO, FD_t, fdbg(), fdNew, and fdSetFdno(). Referenced by cpio_doio(), domd5(), main(), readRPM(), rpmHeaderFromFD(), rpmMergeHeadersFromFD(), rpmpsmStage(), rpmts_HdrFromFdno(), rpmts_setattro(), rpmtsCallback(), runScript(), and showVerifyPackage(). |
|
Definition at line 2825 of file rpmio.c. References fdio. Referenced by cpio_doio(), doScript(), main(), and rpmpsmStage(). |
|
Definition at line 524 of file rpmio.c. References errno, and fdFileno. Referenced by fdFgets(). |
|
Definition at line 410 of file rpmio.c. References _FD_s::bytesRemain, c2f(), DBGIO, FD_t, fdbg(), fdFileno, fdstat_enter(), fdstat_exit(), and FDSTAT_SEEK. |
|
Definition at line 234 of file rpmio.c. References _libio_pos_t, c2f(), FD_t, and FDSANE. |
|
Definition at line 484 of file rpmio.c. References _rpmio_debug, errno, fdFileno, and strerror(). Referenced by checkResponse(), and ftpLogin(). |
|
ferror(3) clone.
Definition at line 3023 of file rpmio.c. References fdGetFILE, and fpio. Referenced by addFileToTagAux(), cpio_copy(), defaultMachine(), domd5(), doReadRC(), doScript(), fsmStage(), ftsStashLatest(), IDTXglob(), isSpecFile(), main(), makeGPGSignature(), makeHDRSignature(), makePGPSignature(), makeTempFile(), manageFile(), processPackageFiles(), readIcon(), readLead(), readLine(), readRPM(), rpmcliSign(), rpmfd_Fopen(), rpmfd_init(), rpmGraph(), rpmInstall(), rpmpsmStage(), rpmQueryVerify(), rpmReadRC(), rpmShowProgress(), rpmtsSolve(), runScript(), and writeRPM(). |
|
fflush(3) clone.
Definition at line 3003 of file rpmio.c. Referenced by cpio_doio(), expandRegular(), rpmpsmStage(), and writeRPM(). |
|
fileno(3) clone.
Definition at line 3058 of file rpmio.c. Referenced by cpio_doio(), doScript(), fdSize(), makeTempFile(), printSize(), rpmpsmStage(), rpmReadPackageFile(), runScript(), writeFile(), and writeRPM(). |
|
fopen(3) clone.
Definition at line 2932 of file rpmio.c. References _rpmio_debug. Referenced by addFileToTagAux(), defaultMachine(), domd5(), doReadRC(), fsmStage(), ftsStashLatest(), IDTXglob(), isSpecFile(), main(), makeGPGSignature(), makeHDRSignature(), makePGPSignature(), makeTempFile(), manageFile(), processPackageFiles(), readIcon(), readLine(), readRPM(), rpmcliSign(), rpmfd_Fopen(), rpmfd_init(), rpmGraph(), rpmHeaderFromFile(), rpmInstall(), rpmpsmStage(), rpmQueryVerify(), rpmReadRC(), rpmShowProgress(), rpmtsSolve(), runScript(), and writeRPM(). |
|
fread(3) clone.
Definition at line 2592 of file rpmio.c. Referenced by copyFile(), cpio_copy(), defaultMachine(), domd5(), doReadRC(), fsmStage(), isSpecFile(), main(), readFile(), readIcon(), readRPM(), rpmReadPackageFile(), and writeRPM(). |
|
fseek(3) clone.
Definition at line 2639 of file rpmio.c. References fpio. Referenced by readRPM(), and writeRPM(). |
|
Definition at line 1430 of file rpmio.c. References urlinfo_s::ctrl, fdFileno, fdFree, and _FD_s::ftpFileDoneNeeded. |
|
Definition at line 966 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 ftpCommand(), and ftpLogin(). |
|
Definition at line 992 of file rpmio.c. References _ftp_debug, alloca(), urlinfo_s::ctrl, fdWrite, ftpCheckResponse(), FTPERR_SERVER_IO_ERROR, stpcpy(), and URLSANE. Referenced by ftpLogin(). |
|
|
|
Definition at line 1032 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(). |
|
Definition at line 630 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(), rpmInstall(), tcpConnect(), and urlStrerror(). |
|
fwrite(3) clone.
Definition at line 2614 of file rpmio.c. Referenced by copyFile(), cpio_copy(), fsmStage(), main(), rpmWriteSignature(), runScript(), writeLead(), and writeRPM(). |
|
Definition at line 2555 of file rpmio.c. References bzdio, and _FD_s::errcookie. |
|
Definition at line 718 of file rpmio.c. References errno, FTPERR_BAD_HOST_ADDR, FTPERR_BAD_HOSTNAME, inet_aton(), mygethostbyname(), and xisdigit(). Referenced by tcpConnect(). |
|
Definition at line 1978 of file rpmio.c. References httpTimeoutSecs, and URL_IS_HTTP. |
|
Definition at line 1535 of file rpmio.c. References FTPERR_BAD_HOSTNAME. |
|
Definition at line 1511 of file rpmio.c. References _ftp_debug, and FTPERR_FILE_NOT_FOUND. |
|
Definition at line 38 of file rpmio.c. Referenced by getHostAddress(). |
|
Definition at line 697 of file rpmio.c. Referenced by getHostAddress(). |
|
Insure that directories in path exist, creating as needed.
Definition at line 3081 of file rpmio.c. References errno, Mkdir(), and Stat(). Referenced by db3open(), and makeTempFile(). |
|
|
|
Definition at line 747 of file rpmio.c. References _ftp_debug, errno, fdSetFdno(), fdSetSyserrno(), FTPERR_FAILED_CONNECT, ftpStrerror(), and getHostAddress(). Referenced by ftpLogin(). |
|
Definition at line 1274 of file rpmio.c. References RPMCALLBACK_INST_OPEN_FILE, urlNotify, and urlNotifyData. Referenced by main(). |
|
|
|
|
|
Definition at line 2025 of file rpmio.c. References _rpmio_debug, and URL_IS_FTP. |
|
|
|
Definition at line 1793 of file rpmio.c. References URL_IS_DASH, URL_IS_FTP, and URL_IS_HTTP. |
|
|
|
Definition at line 1338 of file rpmio.c. References _, _FD_s::bytesRemain, _FD_s::contentLength, urlinfo_s::ctrl, FD_t, 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, and urlinfo_s::user. |
|
|
|
Definition at line 674 of file rpmio.c. References errno, ftpStrerror(), urlinfo_s::openError, strerror(), URL_IS_FTP, URL_IS_HTTP, urlinfo, urlIsURL(), and urlSplit(). |
|
Definition at line 281 of file rpmio.c. References _free(), DBGREFS, _FD_s::digests, fdbg(), FDDIGEST_t, FDNREFS, FDSANE, _FDDIGEST_s::hashctx, _FD_s::ndigests, _FD_s::nrefs, rpmDigestFinal(), and _FD_s::stats. |
|
Definition at line 262 of file rpmio.c. References c2f(), DBGREFS, FD_t, fdbg(), FDNREFS, and _FD_s::nrefs. Referenced by XfdNew(). |
|
Definition at line 309 of file rpmio.c. References FD_t, fdio, FDMAGIC, URL_IS_UNKNOWN, xcalloc(), and XfdLink(). |
|
|
|
|
|
Definition at line 482 of file rpmio.c. Referenced by fdbg(), Fdopen(), ufdRead(), XfdNew(), and XurlFree(). |
|
Initial value: { __fdRead , __fdWrite , fdSeek, __fdClose , XfdLink, XfdFree, XfdNew, fdFileno, __fdOpen , NULL, fdGetFp, NULL, mkdir, chdir, rmdir, rename, unlink } |
|
Definition at line 3191 of file rpmio.c. Referenced by Fclose(), fdbg(), Ferror(), Fseek(), and XurlFree(). |
|
Initial value: |
|
Definition at line 102 of file rpmio.c. Referenced by ftpOpen(), and urlConnect(). |
|
Definition at line 107 of file rpmio.c. Referenced by httpOpen(). |
|
Definition at line 94 of file rpmio.c. Referenced by Fclose(), and ufdClose(). |
|
Definition at line 2119 of file rpmio.c. Referenced by Fclose(), fdbg(), and urlConnect(). |
|
Initial value: |
|
Definition at line 1260 of file rpmio.c. Referenced by ufdCopy(). |
|
|
|
Definition at line 1263 of file rpmio.c. Referenced by ufdCopy(). |