RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: [EMAIL PROTECTED]
Module: rpm Date: 01-Mar-2008 20:12:22
Branch: HEAD Handle: 2008030119122100
Modified files:
rpm CHANGES
rpm/rpmio librpmio.vers rpmdav.c rpmdav.h rpmrpc.c
Log:
- jbj: rpmdav: refactor davOpendir et al on top of avOpendir.
Summary:
Revision Changes Path
1.2215 +1 -0 rpm/CHANGES
2.54 +0 -1 rpm/rpmio/librpmio.vers
2.62 +4 -121 rpm/rpmio/rpmdav.c
2.24 +0 -6 rpm/rpmio/rpmdav.h
2.69 +0 -8 rpm/rpmio/rpmrpc.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.2214 -r1.2215 CHANGES
--- rpm/CHANGES 1 Mar 2008 16:17:19 -0000 1.2214
+++ rpm/CHANGES 1 Mar 2008 19:12:21 -0000 1.2215
@@ -1,4 +1,5 @@
5.0.0 -> 5.1a1:
+ - jbj: rpmdav: refactor davOpendir et al on top of avOpendir.
- jbj: handle (GNU-style) ar(1) long member names.
- jbj: permit ar(1) payloads (file names are truncated atm).
- jbj: rpmmg: fix: avoid false failure using <pcreposix.h>.
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/librpmio.vers
============================================================================
$ cvs diff -u -r2.53 -r2.54 librpmio.vers
--- rpm/rpmio/librpmio.vers 29 Feb 2008 23:59:43 -0000 2.53
+++ rpm/rpmio/librpmio.vers 1 Mar 2008 19:12:21 -0000 2.54
@@ -48,7 +48,6 @@
_dav_debug;
_dav_nooptions;
davLstat;
- davmagicdir;
davMkdir;
davOpen;
davOpendir;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmdav.c
============================================================================
$ cvs diff -u -r2.61 -r2.62 rpmdav.c
--- rpm/rpmio/rpmdav.c 1 Mar 2008 18:39:03 -0000 2.61
+++ rpm/rpmio/rpmdav.c 1 Mar 2008 19:12:21 -0000 2.62
@@ -1778,89 +1778,23 @@
#ifdef WITH_NEON
/* =============================================================== */
-/[EMAIL PROTECTED]@*/
-int davmagicdir = 0x8440291;
-
int davClosedir(/[EMAIL PROTECTED]@*/ DIR * dir)
{
- DAVDIR avdir = (DAVDIR)dir;
-
-if (_dav_debug < 0)
-fprintf(stderr, "*** davClosedir(%p)\n", avdir);
-
-#if defined(HAVE_PTHREAD_H)
-/[EMAIL PROTECTED] -noeffectuncon @*/
- (void) pthread_mutex_destroy(&avdir->lock);
-/[EMAIL PROTECTED] =noeffectuncon @*/
-#endif
-
- avdir = _free(avdir);
- return 0;
+ return avClosedir(dir);
}
struct dirent * davReaddir(DIR * dir)
{
- DAVDIR avdir = (DAVDIR)dir;
- struct dirent * dp;
- const char ** av;
- unsigned char * dt;
- int ac;
- int i;
-
- if (avdir == NULL || !ISDAVMAGIC(avdir) || avdir->data == NULL) {
- /* XXX TODO: EBADF errno. */
- return NULL;
- }
-
- dp = (struct dirent *) avdir->data;
- av = (const char **) (dp + 1);
- ac = (int)avdir->size;
- dt = (unsigned char *) (av + (ac + 1));
- i = avdir->offset + 1;
-
- if (i < 0 || i >= ac || av[i] == NULL)
- return NULL;
-
- avdir->offset = i;
-
- /* XXX glob(3) uses REAL_DIR_ENTRY(dp) test on d_ino */
-/[EMAIL PROTECTED]@*/
- /* Hash the name (starting with parent hash) for a d_ino analogue. */
- dp->d_ino = hashFunctionString(avdir->filepos, dp->d_name, 0);
-#if !defined(__DragonFly__) && !defined(__CYGWIN__)
- dp->d_reclen = 0; /* W2DO? */
-#endif
-
-#if !(defined(hpux) || defined(__hpux) || defined(sun) ||
defined(RPM_OS_AIX) || defined(__CYGWIN__))
-#if !defined(__APPLE__) && !defined(__FreeBSD_kernel__) &&
!defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__)
- dp->d_off = 0; /* W2DO? */
-#endif
- dp->d_type = dt[i];
-#endif
-/[EMAIL PROTECTED]@*/
-
- 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;
+ return avReaddir(dir);
}
DIR * davOpendir(const char * path)
{
+ AVDIR avdir;
struct fetch_context_s * ctx;
struct stat sb, *st = &sb; /* XXX HACK: davHEAD needs ctx->st. */
- const char ** av;
int rc;
- DAVDIR avdir;
- struct dirent * dp;
- size_t nb;
- const char ** nav;
- unsigned char * dt;
- char * t;
- int ac, nac;
-
if (_dav_debug < 0)
fprintf(stderr, "*** davOpendir(%s)\n", path);
@@ -1883,58 +1817,7 @@
return NULL;
}
- av = ctx->av;
- nb = 0;
- ac = 0;
- if (av != NULL)
- while (av[ac] != NULL)
- nb += strlen(av[ac++]) + 1;
- ac += 2; /* for "." and ".." */
- nb += sizeof(".") + sizeof("..");
-
- nb += sizeof(*avdir) + sizeof(*dp) + ((ac + 1) * sizeof(*av)) + (ac + 1);
- avdir = xcalloc(1, nb);
- /[EMAIL PROTECTED]@*/
- dp = (struct dirent *) (avdir + 1);
- nav = (const char **) (dp + 1);
- dt = (unsigned char *) (nav + (ac + 1));
- t = (char *) (dt + ac + 1);
- /[EMAIL PROTECTED]@*/
-
- avdir->fd = davmagicdir;
-/[EMAIL PROTECTED]@*/
- avdir->data = (char *) dp;
-/[EMAIL PROTECTED]@*/
- avdir->allocation = nb;
- avdir->size = ac;
- avdir->offset = -1;
- /* Hash the directory path for a d_ino analogue. */
- avdir->filepos = hashFunctionString(0, path, 0);
-
-#if defined(HAVE_PTHREAD_H)
-/[EMAIL PROTECTED] -noeffectuncon -nullpass @*/
- (void) pthread_mutex_init(&avdir->lock, NULL);
-/[EMAIL PROTECTED] =noeffectuncon =nullpass @*/
-#endif
-
- nac = 0;
-/[EMAIL PROTECTED] [EMAIL PROTECTED]/
- dt[nac] = (unsigned char)DT_DIR; nav[nac++] = t; t = stpcpy(t, ".");
t++;
- dt[nac] = (unsigned char)DT_DIR; nav[nac++] = t; t = stpcpy(t, "..");
t++;
-/[EMAIL PROTECTED] [EMAIL PROTECTED]/
-
- /* Append av strings to DIR elements. */
- ac = 0;
- if (av != NULL)
- while (av[ac] != NULL) {
- nav[nac] = t;
- dt[nac] = (unsigned char) (S_ISDIR(ctx->modes[ac]) ? DT_DIR : DT_REG);
- t = stpcpy(t, av[ac]);
- ac++;
- t++;
- nac++;
- }
- nav[nac] = NULL;
+ avdir = avOpendir(path, ctx->av, ctx->modes);
ctx = fetch_destroy_context(ctx);
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmdav.h
============================================================================
$ cvs diff -u -r2.23 -r2.24 rpmdav.h
--- rpm/rpmio/rpmdav.h 1 Mar 2008 18:39:03 -0000 2.23
+++ rpm/rpmio/rpmdav.h 1 Mar 2008 19:12:21 -0000 2.24
@@ -48,12 +48,6 @@
extern int avmagicdir;
#define ISAVMAGIC(_dir) (!memcmp((_dir), &avmagicdir, sizeof(avmagicdir)))
-/**
- */
-/[EMAIL PROTECTED]@*/
-extern int davmagicdir;
-#define ISDAVMAGIC(_dir) (!memcmp((_dir), &davmagicdir, sizeof(davmagicdir)))
-
#ifdef __cplusplus
extern "C" {
#endif
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmrpc.c
============================================================================
$ cvs diff -u -r2.68 -r2.69 rpmrpc.c
--- rpm/rpmio/rpmrpc.c 27 Feb 2008 18:27:11 -0000 2.68
+++ rpm/rpmio/rpmrpc.c 1 Mar 2008 19:12:21 -0000 2.69
@@ -1842,10 +1842,6 @@
return NULL;
if (ISAVMAGIC(dir))
return avReaddir(dir);
-#ifdef WITH_NEON
- if (ISDAVMAGIC(dir))
- return davReaddir(dir);
-#endif
return readdir(dir);
}
@@ -1857,10 +1853,6 @@
return 0;
if (ISAVMAGIC(dir))
return avClosedir(dir);
-#ifdef WITH_NEON
- if (ISDAVMAGIC(dir))
- return davClosedir(dir);
-#endif
return closedir(dir);
}
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository [email protected]