-diff -ur rpm-4.4.1/configure.ac rpm-4.4.1-no-neon/configure.ac
---- rpm-4.4.1/configure.ac 2005-06-19 20:37:35.675035608 +0200
-+++ rpm-4.4.1-no-neon/configure.ac 2005-06-19 20:34:07.022755576 +0200
-@@ -448,26 +448,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).])
-- 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)
-diff -ur rpm-4.4.1/rpmio/Makefile.am rpm-4.4.1-no-neon/rpmio/Makefile.am
---- rpm-4.4.1/rpmio/Makefile.am 2005-06-19 20:37:35.322089264 +0200
-+++ rpm-4.4.1-no-neon/rpmio/Makefile.am 2005-06-19 20:34:06.996759528 +0200
-@@ -37,7 +37,7 @@
- @WITH_LUA_LIB@ \
- $(top_builddir)/file/src/libmagic.la \
- @WITH_ZLIB_LIB@ \
-- -lneon -lpthread @HOME_ETC_LIB@
-+ -lpthread @HOME_ETC_LIB@
- librpmio_la_LIBADD = # $(BEECRYPTLOBJS)
- librpmio_la_DEPENDENCIES = # .created
-
-diff -ur rpm-4.4.1/rpmio/rpmdav.c rpm-4.4.1-no-neon/rpmio/rpmdav.c
---- rpm-4.4.1/rpmio/rpmdav.c 2005-01-17 19:46:27.000000000 +0100
-+++ rpm-4.4.1-no-neon/rpmio/rpmdav.c 2005-06-19 20:35:12.340825720 +0200
-@@ -9,17 +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
--#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>
--#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>
+-#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
+-/* HACK: include ne_private.h to access sess->socket for now. */
+-#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 */
+-#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)
+-#endif
-
#include <rpmio_internal.h>
#define _RPMDAV_INTERNAL
-@@ -55,1304 +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);
- /* XXX check that neon is ssl enabled. */
- if (!strcasecmp(u->scheme, "https"))
- ne_ssl_set_verify(u->sess, davVerifyCert, (char *)u->host);
--
+-
- ne_set_session_private(u->sess, "urlinfo", u);
-
- ne_hook_destroy_session(u->sess, davDestroySession, u);
-
-exit:
-/*@-boundswrite@*/
-- if (rc == 0 && uret != NULL)
-- *uret = urlLink(u, __FUNCTION__);
+- if (uret != NULL)
+- *uret = urlLink(u, "davInit");
-/*@=boundswrite@*/
- u = urlFree(u, "urlSplit (davInit)");
-
- resr_reference,
- resr_error
-};
--
+-
-struct fetch_resource_s {
+-/*@dependent@*/
- struct fetch_resource_s *next;
- char *uri;
-/*@unused@*/
-static void *fetch_destroy_item(/*@only@*/ struct fetch_resource_s *res)
- /*@modifies res @*/
-{
-- NE_FREE(res->uri);
-- NE_FREE(res->error_reason);
+- ne_free(res->uri);
+- ne_free(res->error_reason);
- res = _free(res);
- return NULL;
-}
-}
-#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));
-
-/* =============================================================== */
-struct fetch_context_s {
--/*@relnull@*/
+-/*@relnull@*/ /*@dependent@*/
- struct fetch_resource_s **resrock;
- const char *uri;
- unsigned int include_target; /* Include resource at href */
- 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;
-}
-
- { "DAV:", "collection", ELM_collection }
-};
-
--static int fetch_startelm(void *userdata, int parent,
+-static int fetch_startelm(void *userdata, int parent,
- const char *nspace, const char *name,
- /*@unused@*/ const char **atts)
- /*@*/
- int state = ne_xml_mapid(fetch_idmap, NE_XML_MAPLEN(fetch_idmap),
- nspace, name);
-
-- if (r == NULL ||
+- if (r == NULL ||
- !((parent == NE_207_STATE_PROP && state == ELM_resourcetype) ||
- (parent == ELM_resourcetype && state == ELM_collection)))
- return NE_XML_DECLINE;
- return state;
-}
-
--static int fetch_compare(const struct fetch_resource_s *r1,
+-static int fetch_compare(const struct fetch_resource_s *r1,
- const struct fetch_resource_s *r2)
- /*@*/
-{
- }
-}
-
--static void fetch_results(void *userdata, const char *uri,
+-#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 WITH_NEON_MIN_VERSION >= 0x002600
+- const ne_uri * uri = uarg;
+- (void) urlPath(uri->path, &path);
+-#else
+- const char * uri = uarg;
- (void) urlPath(uri, &path);
+-#endif
- if (path == NULL)
- return;
-
-
-if (_dav_debug < 0)
-fprintf(stderr, "==> %s in uri %s\n", path, ctx->uri);
--
+-
- if (ne_path_compare(ctx->uri, path) == 0 && !ctx->include_target) {
- /* This is the target URI */
-if (_dav_debug < 0)
-fprintf(stderr, "==> %s skipping target resource.\n", path);
- /* Free the private structure. */
+-/*@-dependenttrans -exposetrans@*/
- free(newres);
+-/*@=dependenttrans =exposetrans@*/
- return;
- }
-
- newres->uri = ne_strdup(path);
-
-/*@-boundsread@*/
-- clength = ne_propset_value(set, &fetch_props[0]);
+- clength = ne_propset_value(set, &fetch_props[0]);
- modtime = ne_propset_value(set, &fetch_props[1]);
- isexec = ne_propset_value(set, &fetch_props[2]);
- checkin = ne_propset_value(set, &fetch_props[4]);
- checkout = ne_propset_value(set, &fetch_props[5]);
-/*@=boundsread@*/
--
+-
-/*@-branchstate@*/
- if (clength == NULL)
- status = ne_propset_status(set, &fetch_props[0]);
- newres->is_vcr = 0;
- }
-
-- for (current = *ctx->resrock, previous = NULL; current != NULL;
+- for (current = *ctx->resrock, previous = NULL; current != NULL;
- previous = current, current = current->next)
- {
- if (fetch_compare(current, newres) >= 0) {
- if (previous) {
- previous->next = newres;
- } else {
--/*@-boundswrite@*/
+-/*@-boundswrite -dependenttrans @*/
- *ctx->resrock = newres;
--/*@=boundswrite@*/
+-/*@=boundswrite =dependenttrans @*/
- }
- newres->next = current;
-}
- (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;
-
-- ne_xml_push_handler(ne_propfind_get_parser(pfh),
+- ne_xml_push_handler(ne_propfind_get_parser(pfh),
- fetch_startelm, NULL, NULL, pfh);
-
- ne_propfind_set_private(pfh, fetch_create_item, NULL);
- xx = argvAdd(&ctx->av, val);
-if (_dav_debug < 0)
-fprintf(stderr, "*** argvAdd(%p,\"%s\")\n", &ctx->av, val);
-- NE_FREE(val);
+- ne_free(val);
-
- while (ctx->ac >= ctx->nalloced) {
- if (ctx->nalloced <= 0)
- 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;
+-}
+-
-static int davNLST(struct fetch_context_s * ctx)
- /*@globals internalState @*/
- /*@modifies ctx, internalState @*/
- 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;
-}
-
-}
-#endif
-
+-/*@-mustmod@*/
-static void davAcceptRanges(void * userdata, /*@null@*/ const char * value)
- /*@modifies userdata @*/
-{
- urlinfo u = userdata;
-
-- if (!(u && value)) return;
+- if (!(u != NULL && value != NULL)) return;
-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@*/
-
-#if !defined(HAVE_NEON_NE_GET_RESPONSE_HEADER)
-static void davAllHeaders(void * userdata, const char * value)
-{
- FD_t ctrl = userdata;
-
-- if (!(ctrl && value)) return;
+- if (!(ctrl != NULL && value != NULL)) return;
-if (_dav_debug)
-fprintf(stderr, "<- %s\n", value);
-}
-#endif
-
+-/*@-mustmod@*/
-static void davContentLength(void * userdata, /*@null@*/ const char * value)
- /*@modifies userdata @*/
-{
- FD_t ctrl = userdata;
-
-- if (!(ctrl && value)) return;
+- if (!(ctrl != NULL && value != NULL)) return;
-if (_dav_debug < 0)
-fprintf(stderr, "*** fd %p Content-Length: %s\n", ctrl, value);
-/*@-unrecog@*/
- ctrl->contentLength = strtoll(value, NULL, 10);
-/*@=unrecog@*/
-}
+-/*@=mustmod@*/
-
+-/*@-mustmod@*/
-static void davConnection(void * userdata, /*@null@*/ const char * value)
- /*@modifies userdata @*/
-{
- FD_t ctrl = userdata;
-
-- if (!(ctrl && value)) return;
+- if (!(ctrl != NULL && value != NULL)) return;
-if (_dav_debug < 0)
-fprintf(stderr, "*** fd %p Connection: %s\n", ctrl, value);
- if (!strcasecmp(value, "close"))
- else if (!strcasecmp(value, "Keep-Alive"))
- ctrl->persist = 1;
-}
+-/*@=mustmod@*/
-
-/*@-mustmod@*/ /* HACK: stash error in *str. */
-int davResp(urlinfo u, FD_t ctrl, /*@unused@*/ char *const * str)
-#endif
-
- if (!strcmp(httpCmd, "PUT")) {
--#ifdef NOTYET /* XXX HACK no wr_chunked until libneon supports */
+-#if defined(HAVE_NEON_NE_SEND_REQUEST_CHUNK)
- ctrl->wr_chunked = 1;
- ne_add_request_header(ctrl->req, "Transfer-Encoding", "chunked");
- ne_set_request_chunked(ctrl->req, 1);
- fd = fdNew("grab ctrl (davOpen)");
-
- if (fd) {
+- fdSetOpen(fd, url, flags, mode);
- fdSetIo(fd, ufdio);
+-
- fd->ftpFileDoneNeeded = 0;
- fd->rd_timeoutsecs = httpTimeoutSecs;
- fd->contentLength = fd->bytesRemain = -1;
- rc = ne_read_response_block(fd->req, buf, count);
-
-if (_dav_debug < 0) {
--fprintf(stderr, "*** davRead(%p,%p,0x%x) rc 0x%x\n", cookie, buf, count, (unsigned)rc);
+-fprintf(stderr, "*** davRead(%p,%p,0x%x) rc 0x%x\n", cookie, buf, (unsigned)count, (unsigned)rc);
-#ifdef DYING
-hexdump(buf, rc);
-#endif
-
-ssize_t davWrite(void * cookie, const char * buf, size_t count)
-{
--#ifdef NOTYET /* XXX HACK no wr_chunked until libneon supports */
+-#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;
+-
+-assert(fd->req != NULL);
+- sess = ne_get_session(fd->req);
+-assert(sess != NULL);
+-
+- /* HACK: include ne_private.h to access sess->socket for now. */
+- xx = ne_sock_fullwrite(sess->socket, buf, count);
+-#else
+-#if defined(HAVE_NEON_NE_SEND_REQUEST_CHUNK) || defined(__LCLINT__)
-assert(fd->req != NULL);
- xx = ne_send_request_chunk(fd->req, buf, count);
+-#else
+- errno = EIO; /* HACK */
+- return -1;
+-#endif
+-#endif
-
- /* HACK: stupid error impedence matching. */
- rc = (xx == 0 ? count : -1);
-
-if (_dav_debug < 0)
--fprintf(stderr, "*** davWrite(%p,%p,0x%x) rc 0x%x\n", cookie, buf, count, rc);
+-fprintf(stderr, "*** davWrite(%p,%p,0x%x) rc 0x%x\n", cookie, buf, (unsigned)count, (unsigned)rc);
-#ifdef DYING
-if (count > 0)
-hexdump(buf, count);
-#endif
-
- return rc;
--#else
-- errno = EIO; /* HACK */
-- return -1;
--#endif
-}
-
-int davSeek(void * cookie, /*@unused@*/ _libio_pos_t pos, int whence)
-}
-
-/*@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;
- if (S_ISREG(st->st_mode)) {
- st->st_nlink = 1;
- st->st_mode |= 0644;
-- }
+- }
-
- /* 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;
- if (S_ISREG(st->st_mode)) {
- st->st_nlink = 1;
- st->st_mode |= 0644;
-- }
+- }
-
- /* XXX fts(3) needs/uses st_ino, make something up for now. */
- if (st->st_ino == 0)
-}
-#endif /* NOTYET */
-
--/* =============================================================== */
+ /* =============================================================== */
/*@unchecked@*/
int avmagicdir = 0x3607113;
-
-@@ -1475,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_ino = i + 1; /* W2DO? */
- dp->d_reclen = 0; /* W2DO? */
-
--#if !defined(hpux) && !defined(sun)
--#if !defined(__APPLE__)
+-#if !(defined(hpux) || defined(__hpux) || defined(sun))
+-#if !defined(__APPLE__) && !defined(__FreeBSD_kernel__) && !defined(__FreeBSD__)
- dp->d_off = 0; /* W2DO? */
-#endif
-/*@-boundsread@*/
- strncpy(dp->d_name, av[i], sizeof(dp->d_name));
-if (_dav_debug < 0)
-fprintf(stderr, "*** davReaddir(%p) %p \"%s\"\n", (void *)avdir, dp, dp->d_name);
--
+-
- return dp;
-}
-
-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@*/
-diff -ur rpm-4.4.1/rpmio/rpmdav.h rpm-4.4.1-no-neon/rpmio/rpmdav.h
---- rpm-4.4.1/rpmio/rpmdav.h 2005-01-17 19:46:27.000000000 +0100
-+++ rpm-4.4.1-no-neon/rpmio/rpmdav.h 2005-06-19 20:39:46.034218000 +0200
-@@ -80,131 +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 @*/;
- * @retval *str error msg
- * @returns 0 on success
- */
+-/*@-exportlocal@*/
-int davResp(urlinfo u, FD_t ctrl, /*@out@*/ /*@null@*/ char *const * str)
- /*@globals fileSystem, internalState @*/
- /*@modifies ctrl, *str, fileSystem, internalState @*/;
+-/*@=exportlocal@*/
-
-/**
- */
#ifdef __cplusplus
}
#endif
-diff -ur rpm-4.4.1/rpmio/rpmio.c rpm-4.4.1-no-neon/rpmio/rpmio.c
---- rpm-4.4.1/rpmio/rpmio.c 2005-01-26 04:39:58.000000000 +0100
-+++ rpm-4.4.1-no-neon/rpmio/rpmio.c 2005-06-19 20:34:07.005758160 +0200
-@@ -104,11 +104,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@*/
--static int httpTimeoutSecs = TIMEOUT_SECS;
--
+ int _ftp_debug = 0;
+
-/**
- */
-/*@unchecked@*/
- int _rpmio_debug = 0;
+-int _dav_debug = 0;
+-
+ /* =============================================================== */
- /**
-@@ -369,13 +364,6 @@
+ /*@-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);
-@@ -403,10 +391,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);
-@@ -453,11 +437,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);
-@@ -509,10 +488,6 @@
+@@ -544,10 +523,6 @@
FD_ZERO(&wrfds);
#endif
if ((fdno = fdFileno(fd)) < 0)
return -1; /* XXX W2DO? */
-@@ -564,10 +539,6 @@
+@@ -599,10 +574,6 @@
FD_ZERO(&rdfds);
#endif
if ((fdno = fdFileno(fd)) < 0)
return -1; /* XXX W2DO? */
-@@ -1562,152 +1533,6 @@
- return rc;
- }
-
--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@*/
--}
--
- /* XXX DYING: unused */
- void * ufdGetUrlinfo(FD_t fd)
- {
-@@ -2064,29 +1889,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) );
-@@ -2703,10 +2505,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 &&
- (fd->fps[fd->nfps-1].fdno >= 0 || fd->req != NULL))
-+ fd->fps[fd->nfps-1].fdno >= 0)
++ (fd->fps[fd->nfps-1].fdno >= 0))
{
- int hadreqpersist = (fd->req != NULL);
-
if (fp)
rc = fflush(fp);
fd->nfps--;
-@@ -2716,26 +2516,9 @@
+@@ -2924,26 +2870,9 @@
/*@-usereleased@*/
if (fdGetFdno(fd) >= 0)
break;
rc = fclose(fp);
}
fdPop(fd);
-@@ -2984,18 +2767,9 @@
- 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:
-@@ -3003,7 +2777,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:
-@@ -3012,15 +2786,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@*/
-@@ -3056,10 +2821,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];
-@@ -3094,9 +2855,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' ],