rpm  5.2.1
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
rpmurl.h File Reference
#include <assert.h>
#include <rpmio.h>
#include <rpmsw.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...
 
struct  urlinfo_s::fdNotify_s
 

Macros

#define URLMAGIC   0xd00b1ed0U
 
#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_OPTIONSDONE   ( 1 << 8)
 
#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)   (urlinfo) rpmioLinkPoolItem((rpmioItem)(_u), _msg, __FILE__, __LINE__)
 
#define urlFree(_u, _msg)   ((urlinfo)rpmioFreePoolItem((rpmioItem)(_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 *fn, unsigned ln)
 
urlinfo urlLink (urlinfo u, const char *msg)
 Reference a URL control structure instance.
 
urlinfo urlFree (urlinfo u, const char *msg)
 Dereference a URL control structure instance.
 
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(* urlNotify )(const urlinfo u, unsigned status)
 
void * urlNotifyArg
 
int _url_count
 
urlinfo_url_cache
 
int _url_iobuf_size
 
int _url_debug
 

Macro Definition Documentation

#define RPMURL_DEBUG_IO   0x40000000

Definition at line 144 of file rpmurl.h.

#define RPMURL_DEBUG_REFS   0x20000000

Definition at line 145 of file rpmurl.h.

#define RPMURL_IOBUF_SIZE   4096

Definition at line 140 of file rpmurl.h.

Definition at line 119 of file rpmurl.h.

#define RPMURL_SERVER_HASDAVCLASS1   ( 1 << 1)

Definition at line 113 of file rpmurl.h.

#define RPMURL_SERVER_HASDAVCLASS2   ( 1 << 2)

Definition at line 114 of file rpmurl.h.

#define RPMURL_SERVER_HASDAVEXEC   ( 1 << 3)

Definition at line 115 of file rpmurl.h.

#define RPMURL_SERVER_HASRANGE   ( 1 << 0)

Definition at line 112 of file rpmurl.h.

Referenced by checkResponse(), and XurlNew().

#define RPMURL_SERVER_OPTIONSDONE   ( 1 << 8)

Definition at line 117 of file rpmurl.h.

#define urlFree (   _u,
  _msg 
)    ((urlinfo)rpmioFreePoolItem((rpmioItem)(_u), _msg, __FILE__, __LINE__))

Definition at line 185 of file rpmurl.h.

#define urlLink (   _u,
  _msg 
)    (urlinfo) rpmioLinkPoolItem((rpmioItem)(_u), _msg, __FILE__, __LINE__)

Definition at line 172 of file rpmurl.h.

#define URLMAGIC   0xd00b1ed0U

Definition at line 25 of file rpmurl.h.

Referenced by XurlNew().

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

Definition at line 161 of file rpmurl.h.

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

Typedef Documentation

typedef struct urlinfo_s* urlinfo

Definition at line 30 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 15 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 avContextDestroy(), ufdClose(), urlConnect(), urlFind(), urlFreeCache(), and urlSplit().

void urlFreeCache ( void  )

Free cached URL control structures.

Definition at line 183 of file url.c.

References _, _free(), _url_count, urlinfo_s::host, urlinfo_s::scheme, and urlFree().

Referenced by rpmioClean().

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 573 of file url.c.

References _free(), _url_debug, D_, Fclose(), Ferror(), Fopen(), Fstrerror(), FTPERR_UNKNOWN, rpmExpand(), rpmExpandNumeric(), rpmlog(), RPMLOG_DEBUG, 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().

urltype urlIsURL ( const char *  url)

Return type of URL.

Parameters
urlurl string
Returns
type of url

Definition at line 377 of file url.c.

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

Referenced by Fopen(), Fts_open(), main(), 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 avContextCreate(), ftpOpen(), httpOpen(), 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 462 of file url.c.

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

Referenced by avContextCreate(), httpOpen(), urlConnect(), and urlStrerror().

urlinfo XurlNew ( const char *  msg,
const char *  fn,
unsigned  ln 
)

Variable Documentation

urlinfo* _url_cache

URL cache.

Definition at line 65 of file url.c.

int _url_count

No. of cached URL's.

Definition at line 138 of file url.c.

Referenced by urlFind(), and urlFreeCache().

int _url_debug

URL debugging?

Definition at line 54 of file url.c.

Referenced by urlGetFile(), and urlGetPool().

int _url_iobuf_size

Initial size of URL I/O buffer.

Definition at line 49 of file url.c.

Referenced by checkResponse(), and ftpNLST().

int(* urlNotify)(const urlinfo u, unsigned status)

Definition at line 37 of file url.c.

Referenced by XurlNew().

void* urlNotifyArg

Definition at line 44 of file url.c.

Referenced by XurlNew().