summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjbj <devnull@localhost>2004-11-08 22:49:00 +0000
committerjbj <devnull@localhost>2004-11-08 22:49:00 +0000
commite5e4a65519c5138f505b19659ae60f2eb489c706 (patch)
treea6be6757f85792fdcf763def46410ba2b749c2ca
parent2cecae5394694809fbcfd50dabb7e196141c8754 (diff)
downloadlibrpm-tizen-e5e4a65519c5138f505b19659ae60f2eb489c706.tar.gz
librpm-tizen-e5e4a65519c5138f505b19659ae60f2eb489c706.tar.bz2
librpm-tizen-e5e4a65519c5138f505b19659ae60f2eb489c706.zip
Stub in rpmrpc primitives.
CVS patchset: 7561 CVS date: 2004/11/08 22:49:00
-rw-r--r--rpmio/rpmdav.c121
-rw-r--r--rpmio/rpmdav.h28
-rw-r--r--rpmio/rpmrpc.c53
3 files changed, 155 insertions, 47 deletions
diff --git a/rpmio/rpmdav.c b/rpmio/rpmdav.c
index 917796596..f91b54458 100644
--- a/rpmio/rpmdav.c
+++ b/rpmio/rpmdav.c
@@ -1042,7 +1042,9 @@ ssize_t davRead(void * cookie, /*@out@*/ char * buf, size_t count)
FD_t fd = cookie;
ssize_t rc;
+#if 0
assert(count >= 128); /* HACK: see ne_request.h comment */
+#endif
rc = ne_read_response_block(fd->req, buf, count);
if (_dav_debug < 0) {
@@ -1096,52 +1098,115 @@ fprintf(stderr, "*** davClose(%p) rc %d\n", fd, rc);
/*@=mustmod@*/
/* =============================================================== */
-#ifdef NOTYET
-static int davMkdir(const char * path, /*@unused@*/ mode_t mode)
- /*@globals h_errno, fileSystem, internalState @*/
- /*@modifies fileSystem, internalState @*/
+int davMkdir(const char * path, mode_t mode)
{
+ urlinfo u = NULL;
+ const char * src = NULL;
int rc;
- if ((rc = davCmd("MKD", path, NULL)) != 0)
- return rc;
-#if NOTYET
- { char buf[20];
- sprintf(buf, " 0%o", mode);
- (void) davCmd("SITE CHMOD", path, buf);
- }
-#endif
+
+ rc = davInit(path, &u);
+assert(u != NULL);
+ if (rc)
+ goto exit;
+
+ (void) urlPath(path, &src);
+
+ rc = ne_mkcol(u->sess, path);
+
+ if (rc) rc = -1; /* XXX HACK: errno impedance match */
+
+ /* XXX HACK: verify getrestype(remote) == resr_collection */
+
+exit:
+if (_dav_debug)
+fprintf(stderr, "*** davMkdir(%s,0%o) rc %d\n", path, mode, rc);
return rc;
}
-static int davChdir(const char * path)
- /*@globals h_errno, fileSystem, internalState @*/
- /*@modifies fileSystem, internalState @*/
+int davRmdir(const char * path)
{
- return davCmd("CWD", path, NULL);
+ urlinfo u = NULL;
+ const char * src = NULL;
+ int rc;
+
+ rc = davInit(path, &u);
+assert(u != NULL);
+ if (rc)
+ goto exit;
+
+ (void) urlPath(path, &src);
+
+ /* XXX HACK: only getrestype(remote) == resr_collection */
+
+ rc = ne_delete(u->sess, path);
+
+ if (rc) rc = -1; /* XXX HACK: errno impedance match */
+
+exit:
+if (_dav_debug)
+fprintf(stderr, "*** davRmdir(%s) rc %d\n", path, rc);
+ return rc;
}
-static int davRmdir(const char * path)
- /*@globals h_errno, fileSystem, internalState @*/
- /*@modifies fileSystem, internalState @*/
+int davRename(const char * oldpath, const char * newpath)
{
- return davCmd("RMD", path, NULL);
+ urlinfo u = NULL;
+ const char * src = NULL;
+ const char * dst = NULL;
+ int overwrite = 1; /* HACK: set this correctly. */
+ int rc;
+
+ rc = davInit(oldpath, &u);
+assert(u != NULL);
+ if (rc)
+ goto exit;
+
+ (void) urlPath(oldpath, &src);
+ (void) urlPath(newpath, &dst);
+
+ /* XXX HACK: only getrestype(remote) != resr_collection */
+
+ rc = ne_move(u->sess, overwrite, src, dst);
+
+ if (rc) rc = -1; /* XXX HACK: errno impedance match */
+
+exit:
+if (_dav_debug)
+fprintf(stderr, "*** davRename(%s,%s) rc %d\n", oldpath, newpath, rc);
+ return rc;
}
-static int davRename(const char * oldpath, const char * newpath)
- /*@globals h_errno, fileSystem, internalState @*/
- /*@modifies fileSystem, internalState @*/
+int davUnlink(const char * path)
{
+ urlinfo u = NULL;
+ const char * src = NULL;
int rc;
- if ((rc = davCmd("RNFR", oldpath, NULL)) != 0)
- return rc;
- return davCmd("RNTO", newpath, NULL);
+
+ rc = davInit(path, &u);
+assert(u != NULL);
+ if (rc)
+ goto exit;
+
+ (void) urlPath(path, &src);
+
+ /* XXX HACK: only getrestype(remote) != resr_collection */
+
+ rc = ne_delete(u->sess, src);
+
+ if (rc) rc = -1; /* XXX HACK: errno impedance match */
+
+exit:
+if (_dav_debug)
+fprintf(stderr, "*** davUnlink(%s) rc %d\n", path, rc);
+ return rc;
}
-static int davUnlink(const char * path)
+#ifdef NOTYET
+static int davChdir(const char * path)
/*@globals h_errno, fileSystem, internalState @*/
/*@modifies fileSystem, internalState @*/
{
- return davCmd("DELE", path, NULL);
+ return davCommand("CWD", path, NULL);
}
#endif /* NOTYET */
diff --git a/rpmio/rpmdav.h b/rpmio/rpmdav.h
index 3832e8d4d..1d64867ed 100644
--- a/rpmio/rpmdav.h
+++ b/rpmio/rpmdav.h
@@ -80,7 +80,6 @@ DIR * avOpendir(const char * path)
/*@globals fileSystem, internalState @*/
/*@modifies fileSystem, internalState @*/;
-/*@-globuse@*/
/**
* Send a http request.
* @param ctrl
@@ -108,7 +107,7 @@ int davResp(urlinfo u, FD_t ctrl, /*@out@*/ /*@null@*/ char *const * str)
/*@null@*/
FD_t davOpen(const char * url, /*@unused@*/ int flags,
/*@unused@*/ mode_t mode, /*@out@*/ urlinfo * uret)
- /*@globals h_errno, internalState @*/
+ /*@globals internalState @*/
/*@modifies *uret, internalState @*/;
/**
@@ -138,7 +137,30 @@ int davSeek(void * cookie, _libio_pos_t pos, int whence)
int davClose(void * cookie)
/*@globals fileSystem, internalState @*/
/*@modifies cookie, fileSystem, internalState @*/;
-/*@=globuse@*/
+
+/**
+ */
+int davMkdir(const char * path, mode_t mode)
+ /*@globals fileSystem, internalState @*/
+ /*@modifies fileSystem, internalState @*/;
+
+/**
+ */
+int davRmdir(const char * path)
+ /*@globals fileSystem, internalState @*/
+ /*@modifies fileSystem, internalState @*/;
+
+/**
+ */
+int davRename(const char * oldpath, const char * newpath)
+ /*@globals fileSystem, internalState @*/
+ /*@modifies fileSystem, internalState @*/;
+
+/**
+ */
+int davUnlink(const char * path)
+ /*@globals fileSystem, internalState @*/
+ /*@modifies fileSystem, internalState @*/;
/**
* Close a DAV collection.
diff --git a/rpmio/rpmrpc.c b/rpmio/rpmrpc.c
index 0c8c02500..94f7fb032 100644
--- a/rpmio/rpmrpc.c
+++ b/rpmio/rpmrpc.c
@@ -87,7 +87,6 @@ static int ftpUnlink(const char * path)
}
/* =============================================================== */
-/* XXX rebuilddb.c: analogues to mkdir(2)/rmdir(2). */
int Mkdir (const char * path, mode_t mode)
{
const char * lpath;
@@ -97,8 +96,11 @@ int Mkdir (const char * path, mode_t mode)
case URL_IS_FTP:
return ftpMkdir(path, mode);
/*@notreached@*/ break;
- case URL_IS_HTTPS: /* XXX WRONG WRONG WRONG */
- case URL_IS_HTTP: /* XXX WRONG WRONG WRONG */
+ case URL_IS_HTTPS:
+ case URL_IS_HTTP:
+ if (!noNeon)
+ return davMkdir(path, mode);
+ /*@fallthrough@*/ /* XXX WRONG WRONG WRONG */
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
@@ -121,8 +123,13 @@ int Chdir (const char * path)
case URL_IS_FTP:
return ftpChdir(path);
/*@notreached@*/ break;
- case URL_IS_HTTPS: /* XXX WRONG WRONG WRONG */
- case URL_IS_HTTP: /* XXX WRONG WRONG WRONG */
+ case URL_IS_HTTPS:
+ case URL_IS_HTTP:
+#ifdef NOTYET
+ if (!noNeon)
+ return davChdir(path);
+#endif
+ /*@fallthrough@*/ /* XXX WRONG WRONG WRONG */
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
@@ -145,8 +152,11 @@ int Rmdir (const char * path)
case URL_IS_FTP:
return ftpRmdir(path);
/*@notreached@*/ break;
- case URL_IS_HTTPS: /* XXX WRONG WRONG WRONG */
- case URL_IS_HTTP: /* XXX WRONG WRONG WRONG */
+ case URL_IS_HTTPS:
+ case URL_IS_HTTP:
+ if (!noNeon)
+ return davRmdir(path);
+ /*@fallthrough@*/ /* XXX WRONG WRONG WRONG */
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
@@ -173,8 +183,11 @@ int Rename (const char * oldpath, const char * newpath)
oldut = urlPath(oldpath, &oe);
switch (oldut) {
- case URL_IS_HTTPS: /* XXX WRONG WRONG WRONG */
- case URL_IS_HTTP: /* XXX WRONG WRONG WRONG */
+ case URL_IS_HTTPS:
+ case URL_IS_HTTP:
+ if (!noNeon)
+ return davRename(oldpath, newpath);
+ /*@fallthrough@*/ /* XXX WRONG WRONG WRONG */
case URL_IS_FTP: /* XXX WRONG WRONG WRONG */
case URL_IS_PATH:
case URL_IS_UNKNOWN:
@@ -265,8 +278,11 @@ int Unlink(const char * path) {
case URL_IS_FTP:
return ftpUnlink(path);
/*@notreached@*/ break;
- case URL_IS_HTTPS: /* XXX WRONG WRONG WRONG */
- case URL_IS_HTTP: /* XXX WRONG WRONG WRONG */
+ case URL_IS_HTTPS:
+ case URL_IS_HTTP:
+ if (!noNeon)
+ return davUnlink(path);
+ /*@fallthrough@*/ /* XXX WRONG WRONG WRONG */
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
@@ -1268,7 +1284,7 @@ fprintf(stderr, "*** Stat(%s,%p)\n", path, st);
case URL_IS_HTTP:
if (!noNeon)
return davStat(path, st);
- /*@fallthrough@*/ /* WRONG WRONG WRONG */
+ /*@fallthrough@*/ /* XXX WRONG WRONG WRONG */
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
@@ -1297,7 +1313,7 @@ fprintf(stderr, "*** Lstat(%s,%p)\n", path, st);
case URL_IS_HTTP:
if (!noNeon)
return davLstat(path, st);
- /*@fallthrough@*/ /* WRONG WRONG WRONG */
+ /*@fallthrough@*/ /* XXX WRONG WRONG WRONG */
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
@@ -1320,8 +1336,13 @@ int Readlink(const char * path, char * buf, size_t bufsiz)
case URL_IS_FTP:
return ftpReadlink(path, buf, bufsiz);
/*@notreached@*/ break;
- case URL_IS_HTTPS: /* XXX WRONG WRONG WRONG */
- case URL_IS_HTTP: /* XXX WRONG WRONG WRONG */
+ case URL_IS_HTTPS:
+ case URL_IS_HTTP:
+#ifdef NOTYET
+ if (!noNeon)
+ return davReadlink(path, buf, bufsiz);
+#endif
+ /*@fallthrough@*/ /* XXX WRONG WRONG WRONG */
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/
@@ -1472,7 +1493,7 @@ fprintf(stderr, "*** Opendir(%s)\n", path);
case URL_IS_HTTP:
if (!noNeon)
return davOpendir(path);
- /*@fallthrough@*/ /* WRONG WRONG WRONG */
+ /*@fallthrough@*/ /* XXX WRONG WRONG WRONG */
case URL_IS_PATH:
path = lpath;
/*@fallthrough@*/