rpmio/url.c File Reference

#include "system.h"
#include <netinet/in.h>
#include <rpmmacro.h>
#include <rpmmessages.h>
#include <rpmio_internal.h>
#include "debug.h"

Include dependency graph for url.c:

Go to the source code of this file.

Data Structures

struct  urlstring

Defines

#define IPPORT_FTP   21
#define IPPORT_HTTP   80
#define IPPORT_HTTPS   443
#define IPPORT_PGPKEYSERVER   11371
#define URLDBG(_f, _m, _x)   if ((_url_debug | (_f)) & (_m)) fprintf _x
#define URLDBGIO(_f, _x)   URLDBG((_f), RPMURL_DEBUG_IO, _x)
#define URLDBGREFS(_f, _x)   URLDBG((_f), RPMURL_DEBUG_REFS, _x)

Functions

urlinfo XurlLink (urlinfo u, const char *msg, const char *file, unsigned line)
urlinfo XurlNew (const char *msg, const char *file, unsigned line)
urlinfo XurlFree (urlinfo u, const char *msg, const char *file, unsigned line)
void urlFreeCache (void)
 Free cached URL control structures.
static int urlStrcmp (const char *str1, const char *str2)
static void urlFind (urlinfo *uret, int mustAsk)
urltype urlIsURL (const char *url)
 Return type of URL.
urltype urlPath (const char *url, const char **pathp)
 Return path component of URL.
int urlSplit (const char *url, urlinfo *uret)
 Parse URL string into a control structure.
int urlGetFile (const char *url, const char *dest)
 Copy data from URL to local file.

Variables

int _url_iobuf_size = RPMURL_IOBUF_SIZE
int _url_debug = 0
urlinfo_url_cache = NULL
int _url_count = 0
static struct urlstring urlstrings []


Detailed Description

Definition in file url.c.


Define Documentation

#define IPPORT_FTP   21

Definition at line 19 of file url.c.

#define IPPORT_HTTP   80

Definition at line 22 of file url.c.

#define IPPORT_HTTPS   443

Definition at line 25 of file url.c.

Referenced by urlSplit().

#define IPPORT_PGPKEYSERVER   11371

Definition at line 28 of file url.c.

Referenced by urlSplit().

#define URLDBG ( _f,
_m,
_x   )     if ((_url_debug | (_f)) & (_m)) fprintf _x

Definition at line 41 of file url.c.

#define URLDBGIO ( _f,
_x   )     URLDBG((_f), RPMURL_DEBUG_IO, _x)

Definition at line 43 of file url.c.

#define URLDBGREFS ( _f,
_x   )     URLDBG((_f), RPMURL_DEBUG_REFS, _x)

Definition at line 44 of file url.c.

Referenced by XurlFree(), and XurlLink().


Function Documentation

static void urlFind ( urlinfo uret,
int  mustAsk 
) [static]

Definition at line 185 of file url.c.

References _, _free(), _url_cache, _url_count, alloca(), Getpass, urlinfo_s::host, urlinfo_s::password, urlinfo_s::portstr, urlinfo_s::proxyh, urlinfo_s::proxyp, urlinfo_s::proxyu, rpmExpand(), urlinfo_s::scheme, stpcpy(), URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, urlFree, urlLink, URLSANE, urlStrcmp(), urlinfo_s::urltype, urlinfo_s::user, xmalloc(), xrealloc(), and xstrdup().

Referenced by urlSplit().

void urlFreeCache ( void   ) 

Free cached URL control structures.

Definition at line 152 of file url.c.

References _, _free(), _url_cache, _url_count, and urlFree.

Referenced by rpmcliFini().

int urlGetFile ( const char *  url,
const char *  dest 
)

Copy data from URL to local file.

Parameters:
url url string of source
dest file name of destination
Returns:
0 on success, otherwise FTPERR_* code

Definition at line 530 of file url.c.

References _url_debug, D_, Fclose(), Ferror(), Fopen(), Fstrerror(), FTPERR_UNKNOWN, RPMMESS_DEBUG, rpmMessage, ufdGetFile(), Unlink(), URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().

Referenced by prepFetch(), and rpmInstall().

urltype urlIsURL ( const char *  url  ) 

Return type of URL.

Parameters:
url url string
Returns:
type of url

Definition at line 345 of file url.c.

References urlstring::leadin, urlstring::ret, URL_IS_UNKNOWN, and urlstrings.

Referenced by Fopen(), Fts_open(), main(), rpmInstall(), runScript(), urlPath(), urlSplit(), and urlStrerror().

urltype urlPath ( const char *  url,
const char **  pathp 
)

Return path component of URL.

Parameters:
url url string
Return values:
pathp pointer to path component of url
Returns:
type of url

Definition at line 364 of file url.c.

References 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 Access(), addFile(), buildForTarget(), Chdir(), Chmod(), Chown(), Chroot(), compareFileListRecs(), compressFilelist(), cpioStrCmp(), db3close(), db3open(), dncmp(), dnlInitIterator(), dodigest(), doFoo(), doIcon(), doPatch(), doScript(), doSetupMacro(), doUntar(), fsmMkdirs(), fsmStage(), ftpCmd(), ftpNLST(), genCpioListAndHeader(), Glob(), Glob_pattern_p(), handlePreambleTag(), Lchown(), Link(), Lstat(), makeTempFile(), Mkdir(), Mkfifo(), Mknod(), Open(), Opendir(), parseForSimple(), processBinaryFile(), processMetadataFile(), processSourceFiles(), Readlink(), Realpath(), Rename(), Rmdir(), rpmdbNew(), rpmdbURIPath(), rpmdsNew(), rpmfcClassify(), rpmfcGenerateDepends(), rpmfiBuildFNames(), rpmfiFN(), rpmGenPath(), rpmGlob(), rpmInstall(), rpmioFileExists(), rpmMkdirPath(), rpmpsmStage(), rpmReadHeader(), rpmtsRootDir(), Stat(), Symlink(), ufdOpen(), Unlink(), urlGetFile(), Utime(), Utimes(), writeFile(), and writeLinkedFile().

int urlSplit ( const char *  url,
urlinfo uret 
)

Parse URL string into a control structure.

Parameters:
url url string
Return values:
uret address of new control instance pointer
Returns:
0 on success, -1 on error

Definition at line 422 of file url.c.

References _, _free(), urlinfo_s::host, IPPORT_FTP, IPPORT_HTTP, IPPORT_HTTPS, IPPORT_PGPKEYSERVER, urlinfo_s::password, urlinfo_s::port, urlinfo_s::portstr, RPMMESS_ERROR, rpmMessage, urlinfo_s::scheme, urlinfo_s::url, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, urlFind(), urlFree, urlIsURL(), urlNew, urlinfo_s::urltype, urlinfo_s::user, and xstrdup().

Referenced by doScript(), urlConnect(), and urlStrerror().

static int urlStrcmp ( const char *  str1,
const char *  str2 
) [static]

Definition at line 172 of file url.c.

Referenced by urlFind().

urlinfo XurlFree ( urlinfo  u,
const char *  msg,
const char *  file,
unsigned  line 
)

Todo:
Remove debugging entry from the ABI.

Definition at line 87 of file url.c.

References _, _free(), urlinfo_s::buf, FDIO_s::close, urlinfo_s::ctrl, urlinfo_s::data, Fclose(), fdFileno(), fdGetFp(), fdio, fdPush(), fpio, urlinfo_s::host, urlinfo_s::nrefs, urlinfo_s::password, urlinfo_s::portstr, urlinfo_s::proxyh, urlinfo_s::proxyu, urlinfo_s::scheme, urlinfo_s::url, URLDBGREFS, URLSANE, urlinfo_s::user, and XfdFree().

urlinfo XurlLink ( urlinfo  u,
const char *  msg,
const char *  file,
unsigned  line 
)

Todo:
Remove debugging entry from the ABI.

Definition at line 57 of file url.c.

References urlinfo_s::nrefs, URLDBGREFS, and URLSANE.

Referenced by XurlNew().

urlinfo XurlNew ( const char *  msg,
const char *  file,
unsigned  line 
)

Todo:
Remove debugging entry from the ABI.

Definition at line 67 of file url.c.

References RPMURL_SERVER_HASRANGE, URL_IS_UNKNOWN, URLMAGIC, xmalloc(), and XurlLink().


Variable Documentation

urlinfo* _url_cache = NULL

URL cache.

Definition at line 50 of file url.c.

Referenced by urlFind(), and urlFreeCache().

int _url_count = 0

No. of cached URL's.

Definition at line 55 of file url.c.

Referenced by urlFind(), and urlFreeCache().

int _url_debug = 0

URL debugging?

Definition at line 39 of file url.c.

Referenced by urlGetFile().

int _url_iobuf_size = RPMURL_IOBUF_SIZE

Initial size of URL I/O buffer.

Definition at line 34 of file url.c.

Referenced by checkResponse(), and ftpNLST().

struct urlstring urlstrings[] [static]

Referenced by urlIsURL().


Generated on Mon Aug 23 22:21:10 2010 for rpm by  doxygen 1.5.1