Lose long since unused url control structure and related functions
- these have been unused since rpm 4.6.0, and rpm is not in the url business, rip.
This commit is contained in:
parent
593902eee6
commit
de5ec1af47
|
@ -22,42 +22,6 @@ typedef enum urltype_e {
|
||||||
URL_IS_HKP = 6 /*!< hkp://... */
|
URL_IS_HKP = 6 /*!< hkp://... */
|
||||||
} urltype;
|
} urltype;
|
||||||
|
|
||||||
typedef struct urlinfo_s * urlinfo;
|
|
||||||
|
|
||||||
/** \ingroup rpmurl
|
|
||||||
* URL control structure.
|
|
||||||
*/
|
|
||||||
struct urlinfo_s {
|
|
||||||
char * url; /*!< copy of original url */
|
|
||||||
char * scheme; /*!< URI scheme. */
|
|
||||||
char * user; /*!< URI user. */
|
|
||||||
char * password; /*!< URI password. */
|
|
||||||
char * host; /*!< URI host. */
|
|
||||||
char * portstr; /*!< URI port string. */
|
|
||||||
char * proxyu; /*!< FTP: proxy user */
|
|
||||||
char * proxyh; /*!< FTP/HTTP: proxy host */
|
|
||||||
int proxyp; /*!< FTP/HTTP: proxy port */
|
|
||||||
int port; /*!< URI port. */
|
|
||||||
int urltype; /*!< URI type. */
|
|
||||||
int openError; /*!< Type of open failure */
|
|
||||||
int magic;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern int _url_debug; /*!< URL debugging? */
|
|
||||||
|
|
||||||
/** \ingroup rpmurl
|
|
||||||
* Create a URL info structure instance.
|
|
||||||
* @return new instance
|
|
||||||
*/
|
|
||||||
urlinfo urlNew(void);
|
|
||||||
|
|
||||||
/** \ingroup rpmurl
|
|
||||||
* Free a URL info structure instance.
|
|
||||||
* @param u URL control structure
|
|
||||||
* @return dereferenced instance (NULL if freed)
|
|
||||||
*/
|
|
||||||
urlinfo urlFree(urlinfo u);
|
|
||||||
|
|
||||||
/** \ingroup rpmurl
|
/** \ingroup rpmurl
|
||||||
* Return type of URL.
|
* Return type of URL.
|
||||||
* @param url url string
|
* @param url url string
|
||||||
|
@ -73,14 +37,6 @@ urltype urlIsURL(const char * url);
|
||||||
*/
|
*/
|
||||||
urltype urlPath(const char * url, const char ** pathp);
|
urltype urlPath(const char * url, const char ** pathp);
|
||||||
|
|
||||||
/** \ingroup rpmurl
|
|
||||||
* Parse URL string into a control structure.
|
|
||||||
* @param url url string
|
|
||||||
* @retval uret address of new control instance pointer
|
|
||||||
* @return 0 on success, -1 on error
|
|
||||||
*/
|
|
||||||
int urlSplit(const char * url, urlinfo * uret);
|
|
||||||
|
|
||||||
/** \ingroup rpmurl
|
/** \ingroup rpmurl
|
||||||
* Copy data from URL to local file.
|
* Copy data from URL to local file.
|
||||||
* @param url url string of source
|
* @param url url string of source
|
||||||
|
|
154
rpmio/url.c
154
rpmio/url.c
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
|
||||||
#include <rpm/rpmmacro.h>
|
#include <rpm/rpmmacro.h>
|
||||||
|
@ -18,51 +15,6 @@
|
||||||
|
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
#ifndef IPPORT_FTP
|
|
||||||
#define IPPORT_FTP 21
|
|
||||||
#endif
|
|
||||||
#ifndef IPPORT_HTTP
|
|
||||||
#define IPPORT_HTTP 80
|
|
||||||
#endif
|
|
||||||
#ifndef IPPORT_HTTPS
|
|
||||||
#define IPPORT_HTTPS 443
|
|
||||||
#endif
|
|
||||||
#ifndef IPPORT_PGPKEYSERVER
|
|
||||||
#define IPPORT_PGPKEYSERVER 11371
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define URLMAGIC 0xd00b1ed0
|
|
||||||
#define URLSANE(u) assert(u && u->magic == URLMAGIC)
|
|
||||||
|
|
||||||
urlinfo urlNew()
|
|
||||||
{
|
|
||||||
urlinfo u;
|
|
||||||
if ((u = xmalloc(sizeof(*u))) == NULL)
|
|
||||||
return NULL;
|
|
||||||
memset(u, 0, sizeof(*u));
|
|
||||||
u->proxyp = -1;
|
|
||||||
u->port = -1;
|
|
||||||
u->urltype = URL_IS_UNKNOWN;
|
|
||||||
u->magic = URLMAGIC;
|
|
||||||
return u;
|
|
||||||
}
|
|
||||||
|
|
||||||
urlinfo urlFree(urlinfo u)
|
|
||||||
{
|
|
||||||
URLSANE(u);
|
|
||||||
u->url = _free(u->url);
|
|
||||||
u->scheme = _free(u->scheme);
|
|
||||||
u->user = _free(u->user);
|
|
||||||
u->password = _free(u->password);
|
|
||||||
u->host = _free(u->host);
|
|
||||||
u->portstr = _free(u->portstr);
|
|
||||||
u->proxyu = _free(u->proxyu);
|
|
||||||
u->proxyh = _free(u->proxyh);
|
|
||||||
|
|
||||||
u = _free(u);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
static struct urlstring {
|
static struct urlstring {
|
||||||
|
@ -140,112 +92,6 @@ urltype urlPath(const char * url, const char ** pathp)
|
||||||
return urltype;
|
return urltype;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Split URL into components. The URL can look like
|
|
||||||
* scheme://user:password@host:port/path
|
|
||||||
* or as in RFC2732 for IPv6 address
|
|
||||||
* service://user:password@[ip:v6:ad:dr:es:s]:port/path
|
|
||||||
*/
|
|
||||||
int urlSplit(const char * url, urlinfo *uret)
|
|
||||||
{
|
|
||||||
urlinfo u;
|
|
||||||
char *myurl;
|
|
||||||
char *s, *se, *f, *fe;
|
|
||||||
|
|
||||||
if (uret == NULL)
|
|
||||||
return -1;
|
|
||||||
if ((u = urlNew()) == NULL)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if ((se = s = myurl = xstrdup(url)) == NULL) {
|
|
||||||
u = urlFree(u);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
u->url = xstrdup(url);
|
|
||||||
u->urltype = urlIsURL(url);
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
/* Point to end of next item */
|
|
||||||
while (*se && *se != '/') se++;
|
|
||||||
/* Item was scheme. Save scheme and go for the rest ...*/
|
|
||||||
if (*se && (se != s) && se[-1] == ':' && se[0] == '/' && se[1] == '/') {
|
|
||||||
se[-1] = '\0';
|
|
||||||
u->scheme = xstrdup(s);
|
|
||||||
se += 2; /* skip over "//" */
|
|
||||||
s = se++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Item was everything-but-path. Continue parse on rest */
|
|
||||||
*se = '\0';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Look for ...@host... */
|
|
||||||
fe = f = s;
|
|
||||||
while (*fe && *fe != '@') fe++;
|
|
||||||
if (*fe == '@') {
|
|
||||||
s = fe + 1;
|
|
||||||
*fe = '\0';
|
|
||||||
/* Look for user:password@host... */
|
|
||||||
while (fe > f && *fe != ':') fe--;
|
|
||||||
if (*fe == ':') {
|
|
||||||
*fe++ = '\0';
|
|
||||||
u->password = xstrdup(fe);
|
|
||||||
}
|
|
||||||
u->user = xstrdup(f);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Look for ...host:port or [v6addr]:port*/
|
|
||||||
fe = f = s;
|
|
||||||
if (strchr(fe, '[') && strchr(fe, ']'))
|
|
||||||
{
|
|
||||||
fe = strchr(f, ']');
|
|
||||||
*f++ = '\0';
|
|
||||||
*fe++ = '\0';
|
|
||||||
}
|
|
||||||
while (*fe && *fe != ':') fe++;
|
|
||||||
if (*fe == ':') {
|
|
||||||
*fe++ = '\0';
|
|
||||||
u->portstr = xstrdup(fe);
|
|
||||||
if (u->portstr != NULL && u->portstr[0] != '\0') {
|
|
||||||
char *end;
|
|
||||||
u->port = strtol(u->portstr, &end, 0);
|
|
||||||
if (!(end && *end == '\0')) {
|
|
||||||
rpmlog(RPMLOG_ERR, _("url port must be a number\n"));
|
|
||||||
myurl = _free(myurl);
|
|
||||||
u = urlFree(u);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
u->host = xstrdup(f);
|
|
||||||
|
|
||||||
if (u->port < 0 && u->scheme != NULL) {
|
|
||||||
struct servent *serv;
|
|
||||||
/* HACK hkp:// might lookup "pgpkeyserver" */
|
|
||||||
serv = getservbyname(u->scheme, "tcp");
|
|
||||||
if (serv != NULL)
|
|
||||||
u->port = ntohs(serv->s_port);
|
|
||||||
else if (u->urltype == URL_IS_FTP)
|
|
||||||
u->port = IPPORT_FTP;
|
|
||||||
else if (u->urltype == URL_IS_HKP)
|
|
||||||
u->port = IPPORT_PGPKEYSERVER;
|
|
||||||
else if (u->urltype == URL_IS_HTTP)
|
|
||||||
u->port = IPPORT_HTTP;
|
|
||||||
else if (u->urltype == URL_IS_HTTPS)
|
|
||||||
u->port = IPPORT_HTTPS;
|
|
||||||
}
|
|
||||||
|
|
||||||
myurl = _free(myurl);
|
|
||||||
if (uret) {
|
|
||||||
*uret = u;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int urlGetFile(const char * url, const char * dest)
|
int urlGetFile(const char * url, const char * dest)
|
||||||
{
|
{
|
||||||
char *cmd = NULL;
|
char *cmd = NULL;
|
||||||
|
|
Loading…
Reference in New Issue