---- rpm-4.4.2/configure.ac.orig 2005-07-23 14:06:59.692430464 +0200
-+++ rpm-4.4.2/configure.ac 2005-07-23 14:08:45.591331384 +0200
-@@ -516,28 +516,6 @@
- WITH_NEON_SUBDIR=
- WITH_NEON_INCLUDE=
- WITH_NEON_LIB=
--AC_CHECK_HEADER([neon/ne_session.h], [
-- AC_CHECK_LIB(neon, ne_session_create, [
-- AC_DEFINE(HAVE_LIBNEON, 1, [Define to 1 if you have the 'neon' library (-lneon).])
-- AC_CHECK_LIB(neon, ne_get_response_header, [
-- AC_DEFINE(HAVE_NEON_NE_GET_RESPONSE_HEADER, 1, [Define to 1 if you have ne_get_response_header() in libneon.])
-- ])
-- AC_CHECK_LIB(neon, ne_send_request_chunk, [
-- AC_DEFINE(HAVE_NEON_NE_SEND_REQUEST_CHUNK, 1, [Define to 1 if you have ne_send_request_chunk() in libneon.])
-- ])
-- WITH_NEON_INCLUDE="-I${includedir}/neon"
-- WITH_NEON_LIB="-lneon"
-- ])
--],[
-- if test -d neon ; then
-- AC_DEFINE(HAVE_LIBNEON, 1, [Define to 1 if you have the 'neon' library (-lneon).])
--# XXX HAVE_NEON_NE_GET_RESPONSE_HEADER assumes libneon-0.25 devel internal
-- AC_DEFINE(HAVE_NEON_NE_GET_RESPONSE_HEADER, 1, [Define to 1 if you have ne_get_response_header() in libneon.])
-- WITH_NEON_SUBDIR=neon
-- WITH_NEON_INCLUDE="-I\${top_srcdir}/${WITH_NEON_SUBDIR}/src"
-- WITH_NEON_LIB="\${top_builddir}/${WITH_NEON_SUBDIR}/src/libneon.la"
-- fi
--])
- AC_SUBST(WITH_NEON_SUBDIR)
- AC_SUBST(WITH_NEON_INCLUDE)
- AC_SUBST(WITH_NEON_LIB)
---- rpm-4.4.6/rpmio/rpmdav.c.orig 2006-03-12 20:24:23.000000000 +0100
-+++ rpm-4.4.6/rpmio/rpmdav.c 2006-04-17 18:20:07.597482250 +0200
-@@ -9,31 +9,6 @@
+--- rpm-4.5/rpmio/rpmdav.c~ 2008-07-09 12:38:31.000000000 +0300
++++ rpm-4.5/rpmio/rpmdav.c 2008-09-04 17:43:50.215697868 +0300
+@@ -9,58 +9,6 @@
#include <pthread.h>
#endif
+-#if USE_INTERNAL_NEON
-#include "ne_alloc.h"
-#include "ne_auth.h"
-#include "ne_basic.h"
-#include "ne_dates.h"
-#include "ne_locks.h"
+-#else
+-#include "neon/ne_alloc.h"
+-#include "neon/ne_auth.h"
+-#include "neon/ne_basic.h"
+-#include "neon/ne_dates.h"
+-#include "neon/ne_locks.h"
+-#endif
-
-#define NEONBLOWSCHUNKS
-#ifndef NEONBLOWSCHUNKS
-#include "../neon/src/ne_private.h"
-#endif
-
+-#if USE_INTERNAL_NEON
-#include "ne_props.h"
-#include "ne_request.h"
-#include "ne_socket.h"
-#include "ne_string.h"
-#include "ne_utils.h"
+-#include "ne_md5.h" /* for version detection only */
+-#else
+-#include "neon/ne_props.h"
+-#include "neon/ne_request.h"
+-#include "neon/ne_socket.h"
+-#include "neon/ne_string.h"
+-#include "neon/ne_utils.h"
+-#include "neon/ne_md5.h" /* for version detection only */
+-#endif
+-
+-/* poor-man's NEON version determination */
+-#if defined(NE_MD5_H)
+-#define WITH_NEON_MIN_VERSION 0x002700
+-#elif defined(NE_FEATURE_I18N)
+-#define WITH_NEON_MIN_VERSION 0x002600
+-#else
+-#define WITH_NEON_MIN_VERSION 0x002500
+-#endif
-
--/* XXX API changes for neon-0.26.0 */
--#if !defined(NE_FREE)
+-/* XXX API changes for NEON 0.26 */
+-#if WITH_NEON_MIN_VERSION >= 0x002600
-#define ne_set_persist(_sess, _flag)
-#define ne_propfind_set_private(_pfh, _create_item, NULL) \
- ne_propfind_set_private(_pfh, _create_item, NULL, NULL)
#include <rpmio_internal.h>
#define _RPMDAV_INTERNAL
-@@ -69,1332 +44,6 @@
- }
+@@ -74,1469 +22,6 @@
+ /*@access FD_t @*/
+ /*@access urlinfo @*/
- /* =============================================================== */
--static int davFree(urlinfo u)
+-#if 0 /* HACK: reasonable value needed. */
+-#define TIMEOUT_SECS 60
+-#else
+-#define TIMEOUT_SECS 5
+-#endif
+-/*@unchecked@*/
+-static int httpTimeoutSecs = TIMEOUT_SECS;
+-
+-/* =============================================================== */
+-int davFree(urlinfo u)
- /*@globals internalState @*/
- /*@modifies u, internalState @*/
-{
-- if (u != NULL && u->sess != NULL) {
-- u->capabilities = _free(u->capabilities);
-- if (u->lockstore != NULL)
-- ne_lockstore_destroy(u->lockstore);
-- u->lockstore = NULL;
-- ne_session_destroy(u->sess);
-- u->sess = NULL;
+- if (u != NULL) {
+- if (u->sess != NULL) {
+- ne_session_destroy(u->sess);
+- u->sess = NULL;
+- }
+- switch (u->urltype) {
+- default:
+- /*@notreached@*/ break;
+- case URL_IS_HTTPS:
+- case URL_IS_HTTP:
+- case URL_IS_HKP:
+- u->capabilities = _free(u->capabilities);
+- if (u->lockstore != NULL)
+- ne_lockstore_destroy(u->lockstore);
+- u->lockstore = NULL;
+- ne_sock_exit();
+- break;
+- }
- }
- return 0;
-}
-fprintf(stderr, "*** davProgress(%p,0x%x:0x%x) sess %p u %p\n", userdata, (unsigned int)current, (unsigned int)total, sess, u);
-}
-
+-#if WITH_NEON_MIN_VERSION >= 0x002700
+-static void davNotify(void * userdata,
+- ne_session_status connstatus, const ne_session_status_info *info)
+-#else
-static void davNotify(void * userdata,
- ne_conn_status connstatus, const char * info)
+-#endif
- /*@*/
-{
- urlinfo u = userdata;
-} ne_conn_status;
-#endif
-
+-#if WITH_NEON_MIN_VERSION < 0x002700
- u->connstatus = connstatus;
+-#endif
-
-/*@-boundsread@*/
-if (_dav_debug < 0)
- /* HACK: where should server capabilities be read? */
- (void) urlPath(u->url, &path);
- /* HACK: perhaps capture Allow: tag, look for PUT permitted. */
+- /* XXX [hdr] Allow: GET,HEAD,POST,OPTIONS,TRACE */
- rc = ne_options(u->sess, path, u->capabilities);
- switch (rc) {
- case NE_OK:
-- break;
+- { ne_server_capabilities *cap = u->capabilities;
+- if (cap->dav_class1)
+- u->allow |= RPMURL_SERVER_HASDAVCLASS1;
+- else
+- u->allow &= ~RPMURL_SERVER_HASDAVCLASS1;
+- if (cap->dav_class2)
+- u->allow |= RPMURL_SERVER_HASDAVCLASS2;
+- else
+- u->allow &= ~RPMURL_SERVER_HASDAVCLASS2;
+- if (cap->dav_executable)
+- u->allow |= RPMURL_SERVER_HASDAVEXEC;
+- else
+- u->allow &= ~RPMURL_SERVER_HASDAVEXEC;
+- } break;
- case NE_ERROR:
- /* HACK: "301 Moved Permanently" on empty subdir. */
- if (!strncmp("301 ", ne_get_error(u->sess), sizeof("301 ")-1))
- break;
-- /*@fallthrough@*/
-- case NE_CONNECT:
+- errno = EIO; /* HACK: more precise errno. */
+- goto bottom;
- case NE_LOOKUP:
+- errno = ENOENT; /* HACK: errno same as non-existent path. */
+- goto bottom;
+- case NE_CONNECT: /* HACK: errno set already? */
- default:
+-bottom:
-if (_dav_debug)
-fprintf(stderr, "*** Connect to %s:%d failed(%d):\n\t%s\n",
- u->host, u->port, rc, ne_get_error(u->sess));
-#endif
-
- ne_set_progress(u->sess, davProgress, u);
+-#if WITH_NEON_MIN_VERSION >= 0x002700
+- ne_set_notifier(u->sess, davNotify, u);
+-#else
- ne_set_status(u->sess, davNotify, u);
+-#endif
-
- ne_set_persist(u->sess, 1);
- ne_set_read_timeout(u->sess, httpTimeoutSecs);
-
-exit:
-/*@-boundswrite@*/
-- if (rc == 0 && uret != NULL)
-- *uret = urlLink(u, __FUNCTION__);
+- if (uret != NULL)
+- *uret = urlLink(u, "davInit");
-/*@=boundswrite@*/
- u = urlFree(u, "urlSplit (davInit)");
-
-}
-#endif
-
+-#if WITH_NEON_MIN_VERSION >= 0x002600
+-static void *fetch_create_item(/*@unused@*/ void *userdata, /*@unused@*/ const ne_uri *uri)
+-#else
-static void *fetch_create_item(/*@unused@*/ void *userdata, /*@unused@*/ const char *uri)
+-#endif
- /*@*/
-{
- struct fetch_resource_s * res = ne_calloc(sizeof(*res));
- int ac;
- int nalloced;
- ARGV_t av;
+-/*@null@*/ /*@shared@*/
+- struct stat *st;
- mode_t * modes;
- size_t * sizes;
- time_t * mtimes;
- ctx->modes = _free(ctx->modes);
- ctx->sizes = _free(ctx->sizes);
- ctx->mtimes = _free(ctx->mtimes);
-- ctx->u = urlFree(ctx->u, __FUNCTION__);
+- ctx->u = urlFree(ctx->u, "fetch_destroy_context");
- ctx->uri = _free(ctx->uri);
-/*@-boundswrite@*/
- memset(ctx, 0, sizeof(*ctx));
-}
-
-/*@null@*/
--static void *fetch_create_context(const char *uri)
+-static void *fetch_create_context(const char *uri, /*@null@*/ struct stat *st)
- /*@globals internalState @*/
- /*@modifies internalState @*/
-{
-
- ctx = ne_calloc(sizeof(*ctx));
- ctx->uri = xstrdup(uri);
-- ctx->u = urlLink(u, __FUNCTION__);
+- ctx->u = urlLink(u, "fetch_create_context");
+- if ((ctx->st = st) != NULL)
+- memset(ctx->st, 0, sizeof(*ctx->st));
- return ctx;
-}
-
- }
-}
-
+-#if WITH_NEON_MIN_VERSION >= 0x002600
+-static void fetch_results(void *userdata, const ne_uri *uarg,
+- const ne_prop_result_set *set)
+-#else
-static void fetch_results(void *userdata, void *uarg,
- const ne_prop_result_set *set)
+-#endif
- /*@*/
-{
- struct fetch_context_s *ctx = userdata;
- const ne_status *status = NULL;
- const char * path = NULL;
-
--#if !defined(NE_FREE)
+-#if WITH_NEON_MIN_VERSION >= 0x002600
- const ne_uri * uri = uarg;
- (void) urlPath(uri->path, &path);
-#else
- (void) urlPath(u->url, &path);
- pfh = ne_propfind_create(u->sess, ctx->uri, depth);
-
-- /* HACK: need to set u->httpHasRange here. */
+- /* HACK: need to set RPMURL_SERVER_HASRANGE in u->allow here. */
-
- ctx->resrock = resrock;
- ctx->include_target = include_target;
- current = fetch_destroy_item(current);
- }
- ctx->resrock = NULL; /* HACK: avoid leaving stack reference. */
+- /* HACK realloc to truncate modes/sizes/mtimes */
+-
+- return rc;
+-}
+-
+-/* HACK this should be rewritten to use davReq/davResp w callbacks. */
+-static int davHEAD(urlinfo u, struct stat *st)
+- /*@modifies *st @*/
+-{
+- ne_request *req;
+- const char *htag;
+- const char *value = NULL;
+- int rc;
+-
+- st->st_mode = S_IFREG;
+- st->st_blksize = 4 * 1024; /* HACK correct for linux ext */
+- st->st_size = -1;
+- st->st_atime = -1;
+- st->st_mtime = -1;
+- st->st_ctime = -1;
+-
+- req = ne_request_create(u->sess, "HEAD", u->url);
+-
+- rc = ne_request_dispatch(req);
+- switch (rc) {
+- default:
+- goto exit;
+- /*@notreached@*/
+- case NE_OK:
+- if (ne_get_status(req)->klass != 2) {
+- rc = NE_ERROR;
+- goto exit;
+- }
+- break;
+- }
-
+-#ifdef NOTYET
+- htag = "ETag";
+- value = ne_get_response_header(req, htag);
+- if (value) {
+- /* inode-size-mtime */
+- }
+-#endif
+-
+- htag = "Content-Length";
+-#if defined(HAVE_NEON_NE_GET_RESPONSE_HEADER)
+- value = ne_get_response_header(req, htag);
+-#endif
+- if (value) {
+- st->st_size = strtoll(value, NULL, 10);
+- st->st_blocks = (st->st_size + 511)/512;
+- }
+-
+- htag = "Last-Modified";
+-#if defined(HAVE_NEON_NE_GET_RESPONSE_HEADER)
+- value = ne_get_response_header(req, htag);
+-#endif
+- if (value) {
+- st->st_mtime = ne_httpdate_parse(value);
+- st->st_atime = st->st_ctime = st->st_mtime; /* HACK */
+- }
+-
+-exit:
+- ne_request_destroy(req);
- return rc;
-}
-
- if (rc || u == NULL)
- goto exit;
-
-- rc = davFetch(u, ctx);
+-/* HACK do PROPFIND through davFetch iff enabled, otherwise HEAD Content-length/ETag/Last-Modified */
+- if (u->allow & RPMURL_SERVER_HASDAV)
+- rc = davFetch(u, ctx); /* use PROPFIND to get contentLength */
+- else
+- rc = davHEAD(u, ctx->st); /* use HEAD to get contentLength */
+-
- switch (rc) {
- case NE_OK:
- break;
- case NE_ERROR:
+- /* HACK: "405 Method Not Allowed" for PROPFIND on non-DAV servers. */
+- /* XXX #206066 OPTIONS is ok, but PROPFIND from Stat() fails. */
+- /* rpm -qp --rpmiodebug --davdebug http://people.freedesktop.org/~sandmann/metacity-2.16.0-2.fc6/i386/metacity-2.16.0-2.fc6.i386.rpm */
- /* HACK: "301 Moved Permanently" on empty subdir. */
- if (!strncmp("301 ", ne_get_error(u->sess), sizeof("301 ")-1))
- break;
- }
-
-exit:
-- if (rc)
-- xx = davFree(u);
+- xx = davFree(u);
- return rc;
-}
-
-if (_dav_debug < 0)
-fprintf(stderr, "*** u %p Accept-Ranges: %s\n", u, value);
- if (!strcmp(value, "bytes"))
-- u->httpHasRange = 1;
+- u->allow |= RPMURL_SERVER_HASRANGE;
- if (!strcmp(value, "none"))
-- u->httpHasRange = 0;
+- u->allow &= ~RPMURL_SERVER_HASRANGE;
-}
-/*@=mustmod@*/
-
-
-ssize_t davWrite(void * cookie, const char * buf, size_t count)
-{
+-#if !defined(NEONBLOWSCHUNKS) || defined(HAVE_NEON_NE_SEND_REQUEST_CHUNK) || defined(__LCLINT__)
- FD_t fd = cookie;
+-#endif
- ssize_t rc;
-- int xx;
+- int xx = -1;
-
-#if !defined(NEONBLOWSCHUNKS)
- ne_session * sess;
-}
-
-/*@unchecked@*/
--static int dav_st_ino = 0xdead0000;
+-static unsigned int dav_st_ino = 0xdead0000;
-
-/*@-boundswrite@*/
-int davStat(const char * path, /*@out@*/ struct stat *st)
- int rc = -1;
-
-/* HACK: neon really wants collections with trailing '/' */
-- ctx = fetch_create_context(path);
+- ctx = fetch_create_context(path, st);
- if (ctx == NULL) {
+-fprintf(stderr, "==> %s fetch_create_context ctx %p\n", "davStat", ctx);
-/* HACK: errno = ??? */
- goto exit;
- }
- goto exit;
- }
-
-- memset(st, 0, sizeof(*st));
-- st->st_mode = ctx->modes[0];
-- st->st_size = ctx->sizes[0];
-- st->st_mtime = ctx->mtimes[0];
+- if (st->st_mode == 0)
+- st->st_mode = (ctx->ac > 1 ? S_IFDIR : S_IFREG);
+- st->st_size = (ctx->sizes ? ctx->sizes[0] : st->st_size);
+- st->st_mtime = (ctx->mtimes ? ctx->mtimes[0] : st->st_mtime);
+- st->st_atime = st->st_ctime = st->st_mtime; /* HACK */
- if (S_ISDIR(st->st_mode)) {
- st->st_nlink = 2;
- st->st_mode |= 0755;
- /* XXX fts(3) needs/uses st_ino, make something up for now. */
- if (st->st_ino == 0)
- st->st_ino = dav_st_ino++;
+-
+-exit:
-if (_dav_debug < 0)
-fprintf(stderr, "*** davStat(%s) rc %d\n%s", path, rc, statstr(st, buf));
--exit:
- ctx = fetch_destroy_context(ctx);
- return rc;
-}
- int rc = -1;
-
-/* HACK: neon really wants collections with trailing '/' */
-- ctx = fetch_create_context(path);
+- ctx = fetch_create_context(path, st);
- if (ctx == NULL) {
-/* HACK: errno = ??? */
- goto exit;
- goto exit;
- }
-
-- memset(st, 0, sizeof(*st));
-- st->st_mode = ctx->modes[0];
-- st->st_size = ctx->sizes[0];
-- st->st_mtime = ctx->mtimes[0];
+- if (st->st_mode == 0)
+- st->st_mode = (ctx->ac > 1 ? S_IFDIR : S_IFREG);
+- st->st_size = (ctx->sizes ? ctx->sizes[0] : st->st_size);
+- st->st_mtime = (ctx->mtimes ? ctx->mtimes[0] : st->st_mtime);
+- st->st_atime = st->st_ctime = st->st_mtime; /* HACK */
- if (S_ISDIR(st->st_mode)) {
- st->st_nlink = 2;
- st->st_mode |= 0755;
-}
-#endif /* NOTYET */
-
--/* =============================================================== */
+ /* =============================================================== */
/*@unchecked@*/
int avmagicdir = 0x3607113;
-
-@@ -1517,172 +166,3 @@
+@@ -1660,179 +145,3 @@
/*@=kepttrans@*/
}
/*@=boundswrite@*/
- dp = (struct dirent *) avdir->data;
- av = (const char **) (dp + 1);
- ac = avdir->size;
-- dt = (char *) (av + (ac + 1));
+- dt = (unsigned char *) (av + (ac + 1));
- i = avdir->offset + 1;
-
-/*@-boundsread@*/
- dp->d_reclen = 0; /* W2DO? */
-
-#if !(defined(hpux) || defined(__hpux) || defined(sun))
--#if !defined(__APPLE__)
+-#if !defined(__APPLE__) && !defined(__FreeBSD_kernel__) && !defined(__FreeBSD__)
- dp->d_off = 0; /* W2DO? */
-#endif
-/*@-boundsread@*/
-fprintf(stderr, "*** davOpendir(%s)\n", path);
-
- /* Load DAV collection into argv. */
-- ctx = fetch_create_context(path);
+- ctx = fetch_create_context(path, NULL);
- if (ctx == NULL) {
-/* HACK: errno = ??? */
- return NULL;
- /*@-abstract@*/
- dp = (struct dirent *) (avdir + 1);
- nav = (const char **) (dp + 1);
-- dt = (char *) (nav + (ac + 1));
+- dt = (unsigned char *) (nav + (ac + 1));
- t = (char *) (dt + ac + 1);
- /*@=abstract@*/
-
-/*@=kepttrans@*/
-}
-/*@=modfilesys@*/
---- rpm-4.4.3/rpmio/rpmdav.h.orig 2005-10-11 21:13:59.000000000 +0200
-+++ rpm-4.4.3/rpmio/rpmdav.h 2005-11-19 01:07:54.224769056 +0100
-@@ -80,133 +80,6 @@
+-
+-char * davRealpath(const char * path, char * resolved_path)
+-{
+-assert(resolved_path == NULL); /* XXX no POSIXly broken realpath(3) here. */
+- /* XXX TODO: handle redirects. For now, just dupe the path. */
+- return xstrdup(path);
+-}
+--- rpm-4.5/rpmio/rpmdav.h 2007-05-25 20:36:36.000000000 +0300
++++ rpm-4.4.9/rpmio/rpmdav.h 2008-09-04 17:21:50.369579599 +0300
+@@ -46,12 +46,6 @@
+ extern int avmagicdir;
+ #define ISAVMAGIC(_dir) (!memcmp((_dir), &avmagicdir, sizeof(avmagicdir)))
+
+-/**
+- */
+-/*@unchecked@*/
+-extern int davmagicdir;
+-#define ISDAVMAGIC(_dir) (!memcmp((_dir), &davmagicdir, sizeof(davmagicdir)))
+-
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -85,133 +79,6 @@
/*@globals fileSystem, internalState @*/
/*@modifies fileSystem, internalState @*/;
#ifdef __cplusplus
}
#endif
---- rpm-4.4.3/rpmio/rpmio.c.orig 2005-11-16 01:05:39.000000000 +0100
-+++ rpm-4.4.3/rpmio/rpmio.c 2005-11-19 01:03:10.769860752 +0100
-@@ -371,13 +371,6 @@
+--- rpm-4.5/rpmio/rpmio.c 2008-09-04 18:04:37.362241187 +0300
++++ rpm-4.5/rpmio/rpmio.c 2008-09-04 18:05:08.695569896 +0300
+@@ -155,11 +155,6 @@
+ /*@unchecked@*/
+ int _ftp_debug = 0;
+
+-/**
+- */
+-/*@unchecked@*/
+-int _dav_debug = 0;
+-
+ /* =============================================================== */
+
+ /*@-boundswrite@*/
+@@ -386,13 +381,6 @@
fdstat_enter(fd, FDSTAT_READ);
/*@-boundswrite@*/
rc = read(fdFileno(fd), buf, (count > fd->bytesRemain ? fd->bytesRemain : count));
/*@=boundswrite@*/
fdstat_exit(fd, FDSTAT_READ, rc);
-@@ -405,10 +398,6 @@
+@@ -420,10 +408,6 @@
fdstat_enter(fd, FDSTAT_WRITE);
/*@-boundsread@*/
rc = write(fdno, buf, (count > fd->bytesRemain ? fd->bytesRemain : count));
/*@=boundsread@*/
fdstat_exit(fd, FDSTAT_WRITE, rc);
-@@ -455,11 +444,6 @@
+@@ -470,11 +454,6 @@
fdSetFdno(fd, -1);
fdstat_enter(fd, FDSTAT_CLOSE);
rc = ((fdno >= 0) ? close(fdno) : -2);
/*@=branchstate@*/
fdstat_exit(fd, FDSTAT_CLOSE, rc);
-@@ -512,10 +496,6 @@
+@@ -544,10 +523,6 @@
FD_ZERO(&wrfds);
#endif
if ((fdno = fdFileno(fd)) < 0)
return -1; /* XXX W2DO? */
-@@ -567,10 +547,6 @@
+@@ -599,10 +574,6 @@
FD_ZERO(&rdfds);
#endif
if ((fdno = fdFileno(fd)) < 0)
return -1; /* XXX W2DO? */
-@@ -1566,154 +1542,6 @@
- return rc;
- }
-
--#ifdef DEAD
--static int httpResp(urlinfo u, FD_t ctrl, /*@out@*/ char ** str)
-- /*@globals fileSystem @*/
-- /*@modifies ctrl, *str, fileSystem @*/
--{
-- int ec = 0;
-- int rc;
--
-- URLSANE(u);
-- rc = checkResponse(u, ctrl, &ec, str);
--
--if (_ftp_debug && !(rc == 0 && (ec == 200 || ec == 201)))
--fprintf(stderr, "*** httpResp: rc %d ec %d\n", rc, ec);
--
-- switch (ec) {
-- case 200:
-- case 201: /* 201 Created. */
-- break;
-- case 204: /* HACK: if overwriting, 204 No Content. */
-- case 403: /* 403 Forbidden. */
-- ctrl->syserrno = EACCES; /* HACK */
-- rc = FTPERR_UNKNOWN;
-- break;
-- default:
-- rc = FTPERR_FILE_NOT_FOUND;
-- break;
-- }
-- return rc;
--}
--
--static int httpReq(FD_t ctrl, const char * httpCmd, const char * httpArg)
-- /*@globals h_errno, fileSystem, internalState @*/
-- /*@modifies ctrl, fileSystem, internalState @*/
--{
-- urlinfo u;
-- const char * host;
-- const char * path;
-- int port;
-- int rc;
-- char * req;
-- size_t len;
-- int retrying = 0;
--
--assert(ctrl != NULL);
-- u = ctrl->url;
-- URLSANE(u);
--
-- if (((host = (u->proxyh ? u->proxyh : u->host)) == NULL))
-- return FTPERR_BAD_HOSTNAME;
--
-- if ((port = (u->proxyp > 0 ? u->proxyp : u->port)) < 0) port = 80;
-- path = (u->proxyh || u->proxyp > 0) ? u->url : httpArg;
-- /*@-branchstate@*/
-- if (path == NULL) path = "";
-- /*@=branchstate@*/
--
--reopen:
-- /*@-branchstate@*/
-- if (fdFileno(ctrl) >= 0 && (rc = fdWritable(ctrl, 0)) < 1) {
-- /*@-refcounttrans@*/ (void) fdClose(ctrl); /*@=refcounttrans@*/
-- }
-- /*@=branchstate@*/
--
--/*@-usereleased@*/
-- if (fdFileno(ctrl) < 0) {
-- rc = tcpConnect(ctrl, host, port);
-- if (rc < 0)
-- goto errxit2;
-- ctrl = fdLink(ctrl, "open ctrl (httpReq)");
-- }
--
-- len = sizeof("\
--req x HTTP/1.0\r\n\
--User-Agent: rpm/3.0.4\r\n\
--Host: y:z\r\n\
--Accept: text/plain\r\n\
--Transfer-Encoding: chunked\r\n\
--\r\n\
--") + strlen(httpCmd) + strlen(path) + sizeof(VERSION) + strlen(host) + 20;
--
--/*@-boundswrite@*/
-- req = alloca(len);
-- *req = '\0';
--
-- if (!strcmp(httpCmd, "PUT")) {
-- sprintf(req, "\
--%s %s HTTP/1.%d\r\n\
--User-Agent: rpm/%s\r\n\
--Host: %s:%d\r\n\
--Accept: text/plain\r\n\
--Transfer-Encoding: chunked\r\n\
--\r\n\
--", httpCmd, path, (u->httpVersion ? 1 : 0), VERSION, host, port);
--} else {
-- sprintf(req, "\
--%s %s HTTP/1.%d\r\n\
--User-Agent: rpm/%s\r\n\
--Host: %s:%d\r\n\
--Accept: text/plain\r\n\
--\r\n\
--", httpCmd, path, (u->httpVersion ? 1 : 0), VERSION, host, port);
--}
--/*@=boundswrite@*/
--
--if (_ftp_debug)
--fprintf(stderr, "-> %s", req);
--
-- len = strlen(req);
-- if (fdWrite(ctrl, req, len) != len) {
-- rc = FTPERR_SERVER_IO_ERROR;
-- goto errxit;
-- }
--
-- /*@-branchstate@*/
-- if (!strcmp(httpCmd, "PUT")) {
-- ctrl->wr_chunked = 1;
-- } else {
--
-- rc = httpResp(u, ctrl, NULL);
--
-- if (rc) {
-- if (!retrying) { /* not HTTP_OK */
-- retrying = 1;
-- /*@-refcounttrans@*/ (void) fdClose(ctrl); /*@=refcounttrans@*/
-- goto reopen;
-- }
-- goto errxit;
-- }
-- }
-- /*@=branchstate@*/
--
-- ctrl = fdLink(ctrl, "open data (httpReq)");
-- return 0;
--
--errxit:
-- /*@-observertrans@*/
-- fdSetSyserrno(ctrl, errno, ftpStrerror(rc));
-- /*@=observertrans@*/
--errxit2:
-- /*@-branchstate@*/
-- if (fdFileno(ctrl) >= 0)
-- /*@-refcounttrans@*/ (void) fdClose(ctrl); /*@=refcounttrans@*/
-- /*@=branchstate@*/
-- return rc;
--/*@=usereleased@*/
--}
--#endif
--
- /* XXX DYING: unused */
- void * ufdGetUrlinfo(FD_t fd)
- {
-@@ -2071,29 +1899,6 @@
+@@ -2265,29 +2236,6 @@
fd->wr_chunked = 0;
}
break;
case URL_IS_DASH:
assert(!(flags & O_RDWR));
fd = fdDup( ((flags & O_WRONLY) ? STDOUT_FILENO : STDIN_FILENO) );
-@@ -2711,10 +2516,8 @@
+@@ -2911,10 +2859,8 @@
if (fd->nfps > 0 && fpno == -1 &&
fd->fps[fd->nfps-1].io == ufdio &&
fd->fps[fd->nfps-1].fp == fp &&
if (fp)
rc = fflush(fp);
fd->nfps--;
-@@ -2724,26 +2527,9 @@
+@@ -2924,26 +2870,9 @@
/*@-usereleased@*/
if (fdGetFdno(fd) >= 0)
break;
rc = fclose(fp);
}
fdPop(fd);
-@@ -2992,18 +2778,10 @@
- return NULL;
- }
- } else {
-- FILE *fp;
-- int fdno;
-- int isHTTP = 0;
-
- /* XXX gzdio and bzdio here too */
-
- switch (urlIsURL(path)) {
-- case URL_IS_HTTPS:
-- case URL_IS_HTTP:
-- case URL_IS_HKP:
-- isHTTP = 1;
-- /*@fallthrough@*/
- case URL_IS_PATH:
- case URL_IS_DASH:
- case URL_IS_FTP:
-@@ -3011,7 +2789,7 @@
+@@ -3223,7 +3152,7 @@
if (_rpmio_debug)
fprintf(stderr, "*** Fopen ufdio path %s fmode %s\n", path, fmode);
fd = ufdOpen(path, flags, perms);
return fd;
break;
default:
-@@ -3020,15 +2798,6 @@
- return NULL;
- /*@notreached@*/ break;
+@@ -3234,7 +3163,7 @@
}
--
-- /* XXX persistent HTTP/1.1 returns the previously opened fp */
-- if (isHTTP && ((fp = fdGetFp(fd)) != NULL) && ((fdno = fdGetFdno(fd)) >= 0 || fd->req != NULL))
-- {
-- /*@+voidabstract@*/
-- fdPush(fd, fpio, fp, fileno(fp)); /* Push fpio onto stack */
-- /*@=voidabstract@*/
-- return fd;
-- }
- }
- /*@=branchstate@*/
-@@ -3064,10 +2833,6 @@
+ /* XXX persistent HTTP/1.1 returns the previously opened fp */
+- if (isHTTP && ((fp = fdGetFp(fd)) != NULL) && ((fdno = fdGetFdno(fd)) >= 0 || fd->req != NULL))
++ if (isHTTP && ((fp = fdGetFp(fd)) != NULL) && ((fdno = fdGetFdno(fd)) >= 0))
+ {
+ /*@+voidabstract@*/
+ fdPush(fd, fpio, fp, fileno(fp)); /* Push fpio onto stack */
+@@ -3276,10 +3205,6 @@
int i, rc = 0;
if (fd == NULL) return -1;
for (i = fd->nfps; rc == 0 && i >= 0; i--) {
/*@-boundsread@*/
FDSTACK_t * fps = &fd->fps[i];
-@@ -3102,9 +2867,6 @@
+@@ -3317,9 +3242,6 @@
{
int i, rc = -1;
for (i = fd->nfps ; rc == -1 && i >= 0; i--) {
/*@-boundsread@*/
rc = fd->fps[i].fdno;
-diff -ur rpm-4.4.1/rpmio/rpmio_internal.h rpm-4.4.1-no-neon/rpmio/rpmio_internal.h
---- rpm-4.4.1/rpmio/rpmio_internal.h 2005-02-08 18:14:20.000000000 +0100
-+++ rpm-4.4.1-no-neon/rpmio/rpmio_internal.h 2005-06-19 20:34:07.006758008 +0200
-@@ -152,7 +152,6 @@
- /*@dependent@*/
- void * url; /* ufdio: URL info */
- /*@relnull@*/
-- void * req; /* ufdio: HTTP request */
+--- rpm-4.5/rpmio/librpmio.vers~ 2008-07-09 12:38:31.000000000 +0300
++++ rpm-4.5/rpmio/librpmio.vers 2008-09-04 17:52:56.158976430 +0300
+@@ -29,25 +29,6 @@
+ Chmod;
+ Chown;
+ Chroot;
+- davClose;
+- davClosedir;
+- _dav_debug;
+- davLstat;
+- davmagicdir;
+- davMkdir;
+- davOpen;
+- davOpendir;
+- davRead;
+- davReaddir;
+- davRealpath;
+- davRename;
+- davReq;
+- davResp;
+- davRmdir;
+- davSeek;
+- davStat;
+- davUnlink;
+- davWrite;
+ delMacro;
+ expandMacros;
+ Fclose;
+--- rpm-4.5/lib/poptALL.c~ 2007-10-23 18:53:08.000000000 +0300
++++ rpm-4.5/lib/poptALL.c 2008-09-04 17:53:21.845642132 +0300
+@@ -126,8 +126,6 @@
+ extern int _ftp_debug;
+ /*@unchecked@*/
+ extern int _av_debug;
+-/*@unchecked@*/
+-extern int _dav_debug;
- int rd_timeoutsecs; /* ufdRead: per FD_t timer */
- ssize_t bytesRemain; /* ufdio: */
-diff -ur rpm-4.4.1/rpmio/rpmrpc.c rpm-4.4.1-no-neon/rpmio/rpmrpc.c
---- rpm-4.4.1/rpmio/rpmrpc.c 2005-01-26 06:16:09.000000000 +0100
-+++ rpm-4.4.1-no-neon/rpmio/rpmrpc.c 2005-06-19 20:34:07.008757704 +0200
-@@ -91,10 +91,6 @@
+ /*@unchecked@*/
+ extern int noLibio;
+@@ -424,8 +422,6 @@
+ N_("debug FTP/HTTP data stream"), NULL},
+ { "avdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_av_debug, -1,
+ N_("debug argv collections"), NULL},
+- { "davdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_dav_debug, -1,
+- N_("debug WebDAV data stream"), NULL},
+ { "hdrdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_hdr_debug, -1,
+ NULL, NULL},
+ { "miredebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_mire_debug, -1,
+--- rpm-4.5/rpmio/rpmrpc.c 2008-09-04 17:56:39.132287618 +0300
++++ rpm-4.5/rpmio/rpmrpc.c 2008-09-04 17:57:38.618948392 +0300
+@@ -78,10 +78,6 @@
case URL_IS_FTP:
return ftpMkdir(path, mode);
/*@notreached@*/ break;
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
-@@ -118,14 +114,6 @@
+@@ -105,15 +101,6 @@
case URL_IS_FTP:
return ftpChdir(path);
/*@notreached@*/ break;
-#ifdef NOTYET
- return davChdir(path);
-#else
+- errno = EINVAL; /* XXX W2DO? */
- return -2;
-#endif
- /*@notreached@*/ break;
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
-@@ -149,10 +137,6 @@
+@@ -138,10 +125,6 @@
case URL_IS_FTP:
return ftpRmdir(path);
/*@notreached@*/ break;
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
-@@ -180,10 +164,6 @@
+@@ -245,10 +228,6 @@
oldut = urlPath(oldpath, &oe);
switch (oldut) {
case URL_IS_FTP: /* XXX WRONG WRONG WRONG */
case URL_IS_PATH:
case URL_IS_UNKNOWN:
-@@ -278,10 +258,6 @@
+@@ -343,10 +322,6 @@
case URL_IS_FTP:
return ftpUnlink(path);
/*@notreached@*/ break;
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
-@@ -1280,10 +1256,6 @@
+@@ -1354,10 +1329,6 @@
case URL_IS_FTP:
return ftpStat(path, st);
/*@notreached@*/ break;
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
-@@ -1309,10 +1281,6 @@
+@@ -1384,10 +1355,6 @@
case URL_IS_FTP:
return ftpLstat(path, st);
/*@notreached@*/ break;
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
-@@ -1336,14 +1304,6 @@
+@@ -1630,14 +1597,6 @@
case URL_IS_FTP:
return ftpReadlink(path, buf, bufsiz);
/*@notreached@*/ break;
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
-@@ -1487,10 +1447,6 @@
+@@ -1787,10 +1746,6 @@
case URL_IS_FTP:
return ftpOpendir(path);
/*@notreached@*/ break;
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
-@@ -1515,8 +1471,6 @@
+@@ -1815,8 +1770,6 @@
return NULL;
if (ISAVMAGIC(dir))
return avReaddir(dir);
return readdir(dir);
}
-@@ -1528,7 +1482,5 @@
+@@ -1828,8 +1781,6 @@
return 0;
if (ISAVMAGIC(dir))
return avClosedir(dir);
- return davClosedir(dir);
return closedir(dir);
}
-diff -ur rpm-4.4.1/rpmio/tget.c rpm-4.4.1-no-neon/rpmio/tget.c
---- rpm-4.4.1/rpmio/tget.c 2004-11-19 17:52:58.000000000 +0100
-+++ rpm-4.4.1-no-neon/rpmio/tget.c 2005-06-19 20:34:07.009757552 +0200
-@@ -9,7 +9,6 @@
-
- static int _debug = 0;
-
--int noNeon;
- #define HTTPSPATH "https://localhost/test.txt"
- #define HTTPPATH "http://localhost/test.txt"
-@@ -40,8 +39,6 @@
- { "debug", 'd', POPT_ARG_VAL, &_debug, -1, NULL, NULL },
- { "ftpdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_ftp_debug, -1,
- N_("debug protocol data stream"), NULL},
-- { "noneon", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &noNeon, 1,
-- N_("disable use of libneon for HTTP"), NULL},
- { "rpmiodebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmio_debug, -1,
- N_("debug rpmio I/O"), NULL},
- { "urldebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_url_debug, -1,
-diff -ur rpm-4.4.1/rpmio/tglob.c rpm-4.4.1-no-neon/rpmio/tglob.c
---- rpm-4.4.1/rpmio/tglob.c 2004-11-19 17:53:05.000000000 +0100
-+++ rpm-4.4.1-no-neon/rpmio/tglob.c 2005-06-19 20:34:07.010757400 +0200
-@@ -9,7 +9,6 @@
-
- static int _debug = 0;
-
--int noNeon;
-
- #define HTTPSPATH "https://localhost/rawhide/test/*.rpm"
- #if 0
-@@ -52,8 +51,6 @@
- { "debug", 'd', POPT_ARG_VAL, &_debug, -1, NULL, NULL },
- { "ftpdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_ftp_debug, -1,
- N_("debug protocol data stream"), NULL},
-- { "noneon", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &noNeon, 1,
-- N_("disable use of libneon for HTTP"), NULL},
- { "rpmiodebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmio_debug, -1,
- N_("debug rpmio I/O"), NULL},
- { "urldebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_url_debug, -1,
-diff -ur rpm-4.4.1/rpmio/thkp.c rpm-4.4.1-no-neon/rpmio/thkp.c
---- rpm-4.4.1/rpmio/thkp.c 2005-01-04 17:35:12.000000000 +0100
-+++ rpm-4.4.1-no-neon/rpmio/thkp.c 2005-06-19 20:34:07.012757096 +0200
-@@ -10,7 +10,6 @@
- static int _debug = 0;
- static int _printing = 0;
-
--int noNeon;
-
- #if 0
- #define HKPPATH "hkp://pgp.mit.edu:11371/pks/lookup?op=get&search=0xF5C75256"
-@@ -95,8 +94,6 @@
- N_("debug protocol data stream"), NULL},
- { "ftpdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_ftp_debug, -1,
- N_("debug protocol data stream"), NULL},
-- { "noneon", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &noNeon, 1,
-- N_("disable use of libneon for HTTP"), NULL},
- { "rpmiodebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmio_debug, -1,
- N_("debug rpmio I/O"), NULL},
- { "urldebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_url_debug, -1,
-diff -ur rpm-4.4.1/rpmio/tput.c rpm-4.4.1-no-neon/rpmio/tput.c
---- rpm-4.4.1/rpmio/tput.c 2004-11-19 17:53:11.000000000 +0100
-+++ rpm-4.4.1-no-neon/rpmio/tput.c 2005-06-19 20:34:07.013756944 +0200
-@@ -9,7 +9,6 @@
-
- static int _debug = 0;
-
--int noNeon;
-
- #define HTTPSPATH "https://localhost/rawhide/toad/tput.txt"
- #define HTTPPATH "http://localhost/rawhide/toad/tput.txt"
-@@ -100,8 +99,6 @@
- { "debug", 'd', POPT_ARG_VAL, &_debug, -1, NULL, NULL },
- { "ftpdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_ftp_debug, -1,
- N_("debug protocol data stream"), NULL},
-- { "noneon", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &noNeon, 1,
-- N_("disable use of libneon for HTTP"), NULL},
- { "rpmiodebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmio_debug, -1,
- N_("debug rpmio I/O"), NULL},
- { "urldebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_url_debug, -1,
-diff -ur rpm-4.4.1/rpmio/tring.c rpm-4.4.1-no-neon/rpmio/tring.c
---- rpm-4.4.1/rpmio/tring.c 2004-11-28 21:41:04.000000000 +0100
-+++ rpm-4.4.1-no-neon/rpmio/tring.c 2005-06-19 20:34:07.013756944 +0200
-@@ -5,7 +5,6 @@
+@@ -1852,14 +1803,6 @@
+ case URL_IS_FTP:
+ return ftpRealpath(path, resolved_path);
+ /*@notreached@*/ break;
+- case URL_IS_HTTPS:
+- case URL_IS_HTTP:
+- case URL_IS_HKP:
+-#ifdef WITH_NEON
+- return davRealpath(path, resolved_path);
+- /*@notreached@*/ break;
+-#endif
+- /*@fallthrough@*/
+ default:
+ return xstrdup(path);
+ /*@notreached@*/ break;
+--- rpm-4.5/./rpmio/rpmio_internal.h~ 2008-06-10 02:19:26.000000000 +0300
++++ rpm-4.5/./rpmio/rpmio_internal.h 2008-09-04 18:00:31.015598325 +0300
+@@ -182,7 +182,6 @@
+ /*@dependent@*/
+ void * url; /* ufdio: URL info */
+ /*@relnull@*/
+- void * req; /* ufdio: HTTP request */
- static int printing = 1;
- static int _debug = 0;
--int noNeon;
+ int rd_timeoutsecs; /* ufdRead: per FD_t timer */
+ ssize_t bytesRemain; /* ufdio: */
+--- rpm-4.5/rpmio/rpmurl.h~ 2008-06-10 02:19:26.000000000 +0300
++++ rpm-4.5/rpmio/rpmurl.h 2008-09-04 18:14:00.546141703 +0300
+@@ -54,15 +54,6 @@
+ /*@relnull@*/
+ FD_t data; /*!< per-xfer data channel */
- static struct poptOption optionsTable[] = {
- { "print", 'p', POPT_ARG_VAL, &printing, 1, NULL, NULL },
-@@ -13,8 +12,6 @@
- { "debug", 'd', POPT_ARG_VAL, &_debug, -1, NULL, NULL },
- { "ftpdebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_ftp_debug, -1,
- N_("debug protocol data stream"), NULL},
-- { "noneon", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &noNeon, 1,
-- N_("disable use of libneon for HTTP"), NULL},
- { "rpmiodebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_rpmio_debug, -1,
- N_("debug rpmio I/O"), NULL},
- { "urldebug", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_url_debug, -1,
-diff -ur rpm-4.4.1/rpmio/url.c rpm-4.4.1-no-neon/rpmio/url.c
---- rpm-4.4.1/rpmio/url.c 2004-11-28 21:41:31.000000000 +0100
-+++ rpm-4.4.1-no-neon/rpmio/url.c 2005-06-19 20:37:11.810663544 +0200
-@@ -148,7 +148,6 @@
- }
- if (u->sess != NULL) {
- /* HACK: neon include has prototype. */
-- ne_session_destroy(u->sess);
- u->sess = NULL;
+-/*@relnull@*/
+- void * capabilities; /*!< neon: ne_server_capabilities ptr */
+-/*@relnull@*/
+- void * lockstore; /*!< neon: ne_lock_store ptr */
+-/*@relnull@*/
+- void * sess; /*!< neon: ne_session ptr */
+- off_t current; /*!< neon: current body offset. */
+- off_t total; /*!< neon: total body length. */
+- int connstatus; /*!< neon: connection status. */
+ #ifdef REFERENCE
+ typedef enum {
+ ne_conn_namelookup, /* lookup up hostname (info = hostname) */
+--- rpm-4.5/rpmio/url.c~ 2008-06-10 02:19:26.000000000 +0300
++++ rpm-4.5/rpmio/url.c 2008-09-04 20:05:19.011716915 +0300
+@@ -134,7 +134,6 @@
+ (u->scheme ? u->scheme : ""));
+ /*@=usereleased@*/
}
+- xx = davFree(u);
u->buf = _free(u->buf);
-@@ -352,9 +351,6 @@
- } urlstrings[] = {
- { "file://", URL_IS_PATH },
- { "ftp://", URL_IS_FTP },
-- { "hkp://", URL_IS_HKP },
-- { "http://", URL_IS_HTTP },
-- { "https://", URL_IS_HTTPS },
- { "-", URL_IS_DASH },
- { NULL, URL_IS_UNKNOWN }
- };
+ u->url = _free(u->url);
+ u->scheme = _free((void *)u->scheme);
+--- rpm-4.5/perl/Makefile.PL.in~ 2008-10-05 01:31:09.000000000 +0300
++++ rpm-4.5/perl/Makefile.PL.in 2008-10-05 01:32:12.688278120 +0300
+@@ -12,7 +12,7 @@
+ 'NAME' => 'RPM',
+ 'VERSION_FROM' => 'RPM.pm', # finds $VERSION
+ 'PREREQ_PM' => {}, # e.g., Module::Name => 1.1
+- 'LIBS' => [join(' ', @ldaddp) . ' ' . join(' ', @ldadd) . ' @LIBS@ @WITH_POPT_LIB@ @WITH_BEECRYPT_LIB@ -lneon'],
++ 'LIBS' => [join(' ', @ldaddp) . ' ' . join(' ', @ldadd) . ' @LIBS@ @WITH_POPT_LIB@ @WITH_BEECRYPT_LIB@'],
+ 'DEFINE' => join(" ", @defines), # e.g., '-DHAVE_SOMETHING'
+ 'INC' => join(' ', map { '-I@top_srcdir@/'. $_ } @libdir) . ' @CPPFLAGS@',
+ 'TYPEMAPS' => [ 'typemap' ],