# rpmio/rpmurl.h File Reference

`#include <assert.h>`

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_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 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 }
| 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 76 of file rpmurl.h.

#define RPMURL_DEBUG_REFS 0x20000000

Definition at line 77 of file rpmurl.h.

#define RPMURL_IOBUF_SIZE 4096

Definition at line 72 of file rpmurl.h.

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

Definition at line 119 of file rpmurl.h.

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

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

Definition at line 103 of file rpmurl.h.

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

#define URLMAGIC 0xd00b1ed0

Definition at line 21 of file rpmurl.h.

Referenced by XurlNew().

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

Definition at line 89 of file rpmurl.h.

Referenced by urlSplit().

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

Definition at line 22 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 24 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://...

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

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

Referenced by main().

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

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

Referenced by doUntar(), and rpmInstall().

urltype urlIsURL | ( | const char * | url | ) |

Return type of URL.

Parameters:

  | url | url string

Returns:
  type of url

Definition at line 344 of file url.c.

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

Referenced by Fopen(), main(), rpmInstall(), runScript(), 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 360 of file url.c.

References URL_IS_DASH, URL_IS_FTP, URL_IS_HTTP, URL_IS_PATH, URL_IS_UNKNOWN, and urlIsURL().

Referenced by Access(), addFile(), buildForTarget(), Chdir(), chkdir(), db1close(), db1open(), db3close(), db3open(), doFoo(), doPatch(), doScript(), doSetupMacro(), doUntar(), ftpCmd(), ftpNLST(), genCpioListAndHeader(), Glob(), handlePreambleTag(), Link(), Lstat(), makeTempFile(), Mkdir(), myGlobPatternP(), Opendir(), parseSpec(), processBinaryFile(), processSourceFiles(), psmStage(), Readlink(), Rename(), Rmdir(), rpmGenPath(), rpmGlob(), rpmInstall(), rpmioFileExists(), Stat(), ufdOpen(), Unlink(), and urlGetFile().

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

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

Referenced by doScript(), httpOpen(), 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 94 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::service, 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 64 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 74 of file url.c.

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

## Variable Documentation

urlinfo* _url_cache

URL cache.

Definition at line 45 of file url.c.

Referenced by urlFind(), and urlFreeCache().

int _url_count

No. of cached URL's.

Definition at line 50 of file url.c.

Referenced by urlFind(), and urlFreeCache().

int _url_debug

URL debugging?

Definition at line 34 of file url.c.

int _url_iobuf_size

Initial size of URL I/O buffer.

Definition at line 29 of file url.c.

Referenced by checkResponse(), and ftpNLST().