# rpmio/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...

## Defines

#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_s * | urlinfo

## 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

## Detailed Description

Definition in file rpmurl.h.

## Define Documentation

#define RPMURL_DEBUG_IO 0x40000000

Definition at line 105 of file rpmurl.h.

#define RPMURL_DEBUG_REFS 0x20000000

Definition at line 106 of file rpmurl.h.

#define RPMURL_IOBUF_SIZE 4096

Definition at line 101 of file rpmurl.h.

#define RPMURL_SERVER_HASDAV (RPMURL_SERVER_HASDAVCLASS1|RPMURL_SERVER_HASDAVCLASS2|RPMURL_SERVER_HASDAVEXEC)

Definition at line 84 of file rpmurl.h.

#define RPMURL_SERVER_HASDAVCLASS1 ( 1 << 1)

Definition at line 80 of file rpmurl.h.

#define RPMURL_SERVER_HASDAVCLASS2 ( 1 << 2)

Definition at line 81 of file rpmurl.h.

#define RPMURL_SERVER_HASDAVEXEC ( 1 << 3)

Definition at line 82 of file rpmurl.h.

#define RPMURL_SERVER_HASRANGE ( 1 << 0)

Definition at line 79 of file rpmurl.h.

Referenced by checkResponse(), and XurlNew().

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

Definition at line 149 of file rpmurl.h.

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

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

Definition at line 132 of file rpmurl.h.

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

#define URLMAGIC 0xd00b1ed0

Definition at line 23 of file rpmurl.h.

Referenced by XurlNew().

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

Definition at line 118 of file rpmurl.h.

Referenced by urlSplit().

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

Definition at line 24 of file rpmurl.h.

Referenced by checkResponse(), ftpAbort(), ftpCheckResponse(), ftpCommand(), ftpFileDone(), ftpLogin(), ftpReq(), httpReq(), httpResp(), urlFind(), XurlFree(), and XurlLink().

## 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:

  | u | URL control structure
  | msg | debugging identifier (unused)

Returns:
  dereferenced instance (NULL if freed)

void urlFreeCache | ( | void |  | ) |

Free cached URL control structures.

Definition at line 155 of file url.c.

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

Referenced by rpmioClean().

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 520 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:

  | 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(), urlPath(), urlSplit(), and urlStrerror().

urlinfo urlLink | ( | urlinfo | u,
|  | const char * | msg |
| ) |  |  |

Reference a URL control structure instance.

Parameters:

  | u | URL control structure
  | msg | debugging identifier (unused)

Returns:
  referenced instance

urlinfo urlNew | ( | const char * | msg | ) |

Create a URL control structure instance.

Parameters:

  | msg | debugging identifier (unused)

Returns:
  new instance

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 361 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(), Chdir(), Chmod(), Chown(), Chroot(), compareFileListRecs(), compressFilelist(), cpioStrCmp(), db3close(), db3open(), dncmp(), dnlInitIterator(), dodigest(), doFoo(), doIcon(), doPatch(), doSetupMacro(), doUntar(), fsmMkdirs(), fsmStage(), ftpCmd(), ftpNLST(), genCpioListAndHeader(), Glob(), Glob_pattern_p(), handlePreambleTag(), Lchown(), Link(), Lstat(), Mkdir(), Mkfifo(), Mknod(), Open(), Opendir(), parseForSimple(), processBinaryFile(), processMetadataFile(), processSourceFiles(), Readlink(), Rename(), Rmdir(), rpmdbRebuild(), rpmdbURIPath(), rpmdsNew(), rpmfcClassify(), rpmfcGenerateDepends(), rpmfiBuildFNames(), rpmfiFN(), rpmGenPath(), rpmGlob(), rpmioFileExists(), rpmMkdirPath(), rpmpsmStage(), rpmTempFile(), rpmtsRootDir(), sql_close(), sql_open(), 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 415 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, 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, 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 |
| ) |  |  |

Todo:
  Remove debugging entry from the ABI.

Definition at line 90 of file url.c.

References _, FDIO_s::_fdderef, FDIO_s::_fileno, _free(), urlinfo_s::buf, FDIO_s::close, urlinfo_s::ctrl, urlinfo_s::data, Fclose(), 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, and urlinfo_s::user.

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

Todo:
  Remove debugging entry from the ABI.

Definition at line 60 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 70 of file url.c.

References urlinfo_s::allow, urlinfo_s::buf, urlinfo_s::bufAlloced, urlinfo_s::ctrl, urlinfo_s::data, urlinfo_s::httpVersion, urlinfo_s::magic, urlinfo_s::nrefs, urlinfo_s::port, urlinfo_s::proxyp, RPMURL_SERVER_HASRANGE, URL_IS_UNKNOWN, URLMAGIC, urlinfo_s::urltype, xmalloc(), and XurlLink().

## Variable Documentation

urlinfo* _url_cache

URL cache.

Definition at line 53 of file url.c.

int _url_count

No. of cached URL's.

Definition at line 58 of file url.c.

Referenced by urlFind(), and urlFreeCache().

int _url_debug

URL debugging?

Definition at line 42 of file url.c.

Referenced by urlGetFile().

int _url_iobuf_size

Initial size of URL I/O buffer.

Definition at line 37 of file url.c.

Referenced by checkResponse(), and ftpNLST().