rpm  4.5
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
rpmurl.h File Reference
#include <assert.h>
Include dependency graph for rpmurl.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  urlinfo_s
 URL control structure. More...
 

Macros

#define URLMAGIC   0xd00b1ed0
 
#define URLSANE(u)   assert(u && u->magic == URLMAGIC)
 
#define RPMURL_SERVER_HASRANGE   ( 1 << 0)
 
#define RPMURL_SERVER_HASDAVCLASS1   ( 1 << 1)
 
#define RPMURL_SERVER_HASDAVCLASS2   ( 1 << 2)
 
#define RPMURL_SERVER_HASDAVEXEC   ( 1 << 3)
 
#define RPMURL_SERVER_HASDAV   (RPMURL_SERVER_HASDAVCLASS1|RPMURL_SERVER_HASDAVCLASS2|RPMURL_SERVER_HASDAVEXEC)
 
#define RPMURL_IOBUF_SIZE   4096
 
#define RPMURL_DEBUG_IO   0x40000000
 
#define RPMURL_DEBUG_REFS   0x20000000
 
#define urlNew(_msg)   XurlNew(_msg, __FILE__, __LINE__)
 
#define urlLink(_u, _msg)   XurlLink(_u, _msg, __FILE__, __LINE__)
 
#define urlFree(_u, _msg)   XurlFree(_u, _msg, __FILE__, __LINE__)
 

Typedefs

typedef enum urltype_e urltype
 Supported URL types.
 
typedef struct urlinfo_surlinfo
 

Enumerations

enum  urltype_e {
  URL_IS_UNKNOWN = 0, URL_IS_DASH = 1, URL_IS_PATH = 2, URL_IS_FTP = 3,
  URL_IS_HTTP = 4, URL_IS_HTTPS = 5, URL_IS_HKP = 6
}
 Supported URL types. More...
 

Functions

urlinfo urlNew (const char *msg)
 Create a URL control structure instance.
 
urlinfo XurlNew (const char *msg, const char *file, unsigned line)
 
urlinfo urlLink (urlinfo u, const char *msg)
 Reference a URL control structure instance.
 
urlinfo XurlLink (urlinfo u, const char *msg, const char *file, unsigned line)
 
urlinfo urlFree (urlinfo u, const char *msg)
 Dereference a URL control structure instance.
 
urlinfo XurlFree (urlinfo u, const char *msg, const char *file, unsigned line)
 
void urlFreeCache (void)
 Free cached URL control structures.
 
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_count
 
urlinfo_url_cache
 
int _url_iobuf_size
 
int _url_debug
 

Macro Definition Documentation

#define RPMURL_DEBUG_IO   0x40000000

Definition at line 98 of file rpmurl.h.

#define RPMURL_DEBUG_REFS   0x20000000

Definition at line 99 of file rpmurl.h.

#define RPMURL_IOBUF_SIZE   4096

Definition at line 94 of file rpmurl.h.

Definition at line 77 of file rpmurl.h.

#define RPMURL_SERVER_HASDAVCLASS1   ( 1 << 1)

Definition at line 73 of file rpmurl.h.

#define RPMURL_SERVER_HASDAVCLASS2   ( 1 << 2)

Definition at line 74 of file rpmurl.h.

#define RPMURL_SERVER_HASDAVEXEC   ( 1 << 3)

Definition at line 75 of file rpmurl.h.

#define RPMURL_SERVER_HASRANGE   ( 1 << 0)

Definition at line 72 of file rpmurl.h.

Referenced by checkResponse(), and XurlNew().

#define urlFree (   _u,
  _msg 
)    XurlFree(_u, _msg, __FILE__, __LINE__)

Definition at line 142 of file rpmurl.h.

#define urlLink (   _u,
  _msg 
)    XurlLink(_u, _msg, __FILE__, __LINE__)

Definition at line 125 of file rpmurl.h.

#define URLMAGIC   0xd00b1ed0

Definition at line 23 of file rpmurl.h.

Referenced by XurlNew().

#define urlNew (   _msg)    XurlNew(_msg, __FILE__, __LINE__)

Definition at line 111 of file rpmurl.h.

#define URLSANE (   u)    assert(u && u->magic == URLMAGIC)

Typedef Documentation

typedef struct urlinfo_s* urlinfo

Definition at line 26 of file rpmurl.h.

typedef enum urltype_e urltype

Supported URL types.

Enumeration Type Documentation

enum urltype_e

Supported URL types.

Enumerator:
URL_IS_UNKNOWN 

unknown (aka a file)

URL_IS_DASH 

stdin/stdout

URL_IS_PATH 

file://...

URL_IS_FTP 

ftp://...

URL_IS_HTTP 

http://...

URL_IS_HTTPS 

https://...

URL_IS_HKP 

hkp://...

Definition at line 13 of file rpmurl.h.

Function Documentation

urlinfo urlFree ( urlinfo  u,
const char *  msg 
)

Dereference a URL control structure instance.

Parameters
uURL control structure
msgdebugging identifier (unused)
Returns
dereferenced instance (NULL if freed)

Referenced by ufdClose(), urlConnect(), urlFind(), urlFreeCache(), and urlSplit().

void urlFreeCache ( void  )

Free cached URL control structures.

Definition at line 152 of file url.c.

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

Referenced by rpmcliFini().

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

Copy data from URL to local file.

Parameters
urlurl string of source
destfile 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
urlurl 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().

urlinfo urlLink ( urlinfo  u,
const char *  msg 
)

Reference a URL control structure instance.

Parameters
uURL control structure
msgdebugging identifier (unused)
Returns
referenced instance

Referenced by ftpOpen(), ufdGetUrlinfo(), urlConnect(), and urlFind().

urlinfo urlNew ( const char *  msg)

Create a URL control structure instance.

Parameters
msgdebugging identifier (unused)
Returns
new instance

Referenced by urlSplit().

urltype urlPath ( const char *  url,
const char **  pathp 
)
int urlSplit ( const char *  url,
urlinfo uret 
)

Parse URL string into a control structure.

Parameters
urlurl string
Return values
uretaddress 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 urlConnect(), and urlStrerror().

urlinfo XurlFree ( urlinfo  u,
const char *  msg,
const char *  file,
unsigned  line 
)
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 
)

Variable Documentation

urlinfo* _url_cache

URL cache.

Definition at line 50 of file url.c.

int _url_count

No. of cached URL's.

Definition at line 55 of file url.c.

Referenced by urlFind(), and urlFreeCache().

int _url_debug

URL debugging?

Definition at line 39 of file url.c.

Referenced by urlGetFile().

int _url_iobuf_size

Initial size of URL I/O buffer.

Definition at line 34 of file url.c.

Referenced by checkResponse(), and ftpNLST().