summaryrefslogtreecommitdiff
path: root/rpmio
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2007-11-23 09:58:02 +0200
committerPanu Matilainen <pmatilai@redhat.com>2007-11-23 09:58:02 +0200
commitc1bcd633010cce22919dbc5c347fa401971d39a8 (patch)
tree47ac93a34e1c001d02e8aad6322a0129a369d001 /rpmio
parent2068f4611220bbe90c98b65c58dd1b6c62858152 (diff)
downloadrpm-c1bcd633010cce22919dbc5c347fa401971d39a8.tar.gz
rpm-c1bcd633010cce22919dbc5c347fa401971d39a8.tar.bz2
rpm-c1bcd633010cce22919dbc5c347fa401971d39a8.zip
Move rpmioMkpath from rpmio.h to rpmfileutil.h
Diffstat (limited to 'rpmio')
-rw-r--r--rpmio/rpmfileutil.c49
-rw-r--r--rpmio/rpmfileutil.h10
-rw-r--r--rpmio/rpmio.c52
-rw-r--r--rpmio/rpmio.h10
4 files changed, 59 insertions, 62 deletions
diff --git a/rpmio/rpmfileutil.c b/rpmio/rpmfileutil.c
index 30047dadc..fc131d4f8 100644
--- a/rpmio/rpmfileutil.c
+++ b/rpmio/rpmfileutil.c
@@ -319,3 +319,52 @@ errxit:
return 1;
}
+int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid)
+{
+ char * d, * de;
+ int created = 0;
+ int rc;
+
+ if (path == NULL)
+ return -1;
+ d = alloca(strlen(path)+2);
+ de = stpcpy(d, path);
+ de[1] = '\0';
+ for (de = d; *de != '\0'; de++) {
+ struct stat st;
+ char savec;
+
+ while (*de && *de != '/') de++;
+ savec = de[1];
+ de[1] = '\0';
+
+ rc = Stat(d, &st);
+ if (rc) {
+ switch(errno) {
+ default:
+ return errno;
+ break;
+ case ENOENT:
+ break;
+ }
+ rc = Mkdir(d, mode);
+ if (rc)
+ return errno;
+ created = 1;
+ if (!(uid == (uid_t) -1 && gid == (gid_t) -1)) {
+ rc = chown(d, uid, gid);
+ if (rc)
+ return errno;
+ }
+ } else if (!S_ISDIR(st.st_mode)) {
+ return ENOTDIR;
+ }
+ de[1] = savec;
+ }
+ rc = 0;
+ if (created)
+ rpmlog(RPMLOG_DEBUG, "created directory(s) %s mode 0%o\n",
+ path, mode);
+ return rc;
+}
+
diff --git a/rpmio/rpmfileutil.h b/rpmio/rpmfileutil.h
index 0022e5d03..a917868c5 100644
--- a/rpmio/rpmfileutil.h
+++ b/rpmio/rpmfileutil.h
@@ -31,4 +31,14 @@ int rpmDoDigest(pgpHashAlgo algo, const char * fn,int asAscii,
*/
int rpmMkTempFile(const char * prefix, const char ** fnptr, FD_t * fdptr);
+/**
+ * Insure that directories in path exist, creating as needed.
+ * @param path directory path
+ * @param mode directory mode (if created)
+ * @param uid directory uid (if created), or -1 to skip
+ * @param gid directory uid (if created), or -1 to skip
+ * @return 0 on success, errno (or -1) on error
+ */
+int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid);
+
#endif /* _RPMFILEUTIL_H */
diff --git a/rpmio/rpmio.c b/rpmio/rpmio.c
index 839f669ca..29d8c7bc3 100644
--- a/rpmio/rpmio.c
+++ b/rpmio/rpmio.c
@@ -1686,58 +1686,6 @@ int Fcntl(FD_t fd, int op, void *lip)
return fcntl(Fileno(fd), op, lip);
}
-/* =============================================================== */
-/* Helper routines that may be generally useful.
- */
-int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid)
-{
- char * d, * de;
- int created = 0;
- int rc;
-
- if (path == NULL)
- return -1;
- d = alloca(strlen(path)+2);
- de = stpcpy(d, path);
- de[1] = '\0';
- for (de = d; *de != '\0'; de++) {
- struct stat st;
- char savec;
-
- while (*de && *de != '/') de++;
- savec = de[1];
- de[1] = '\0';
-
- rc = Stat(d, &st);
- if (rc) {
- switch(errno) {
- default:
- return errno;
- break;
- case ENOENT:
- break;
- }
- rc = Mkdir(d, mode);
- if (rc)
- return errno;
- created = 1;
- if (!(uid == (uid_t) -1 && gid == (gid_t) -1)) {
- rc = chown(d, uid, gid);
- if (rc)
- return errno;
- }
- } else if (!S_ISDIR(st.st_mode)) {
- return ENOTDIR;
- }
- de[1] = savec;
- }
- rc = 0;
- if (created)
- rpmlog(RPMLOG_DEBUG, "created directory(s) %s mode 0%o\n",
- path, mode);
- return rc;
-}
-
int rpmioSlurp(const char * fn, byte ** bp, ssize_t * blenp)
{
static ssize_t blenmax = (32 * BUFSIZ);
diff --git a/rpmio/rpmio.h b/rpmio/rpmio.h
index 55f709d35..d56d46ece 100644
--- a/rpmio/rpmio.h
+++ b/rpmio/rpmio.h
@@ -236,16 +236,6 @@ int fdWritable(FD_t fd, int secs);
int fdReadable(FD_t fd, int secs);
/**
- * Insure that directories in path exist, creating as needed.
- * @param path directory path
- * @param mode directory mode (if created)
- * @param uid directory uid (if created), or -1 to skip
- * @param gid directory uid (if created), or -1 to skip
- * @return 0 on success, errno (or -1) on error
- */
-int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid);
-
-/**
* FTP and HTTP error codes.
*/
typedef enum ftperrCode_e {