1) rpm2cpio didn't handle zlib errors properly
authorewt <devnull@localhost>
Thu, 21 Aug 1997 01:20:16 +0000 (01:20 +0000)
committerewt <devnull@localhost>
Thu, 21 Aug 1997 01:20:16 +0000 (01:20 +0000)
2) query formats could yield (none)\n instead of just (none)
3) queries of fssizes w/o fsnames went bonkers

CVS patchset: 1787
CVS date: 1997/08/21 01:20:16

CHANGES
lib/formats.c
lib/fs.c
lib/header.c
lib/rpmlib.h
rpm2cpio.c

diff --git a/CHANGES b/CHANGES
index c2d5cf4..9583165 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -33,6 +33,8 @@
          under the LGPL
        - applied man page changes from Alex deVries
        - configure.in builds up LIBS by appending (Benedict Lofstedt)
+       - rpm2cpio reported wrong zlib error string
+       - removed \n from (none) generated by query format code
 
 2.4.2 -> 2.4.3:
        - implemented install time prerequisites
index 9d97844..10a5a84 100644 (file)
@@ -164,16 +164,13 @@ static int fsnamesTag(Header h, int_32 * type, void ** data, int_32 * count,
     char ** list;
     int i;
 
-    if (rpmGetFilesystemList(&list)) {
+    if (rpmGetFilesystemList(&list, count)) {
        return 1;
     }
 
     *type = RPM_STRING_ARRAY_TYPE;
     *((char ***) data) = list;
 
-    for (i = 0; list[i]; i++) ;
-    *count = i;
-
     *freeData = 0;
 
     return 0; 
@@ -185,15 +182,19 @@ static int fssizesTag(Header h, int_32 * type, void ** data, int_32 * count,
     int_32 * filesizes;
     uint_32 * usages;
     int numFiles;
+    int i;
 
     headerGetEntry(h, RPMTAG_FILENAMES, NULL, (void **) &filenames, NULL);
     headerGetEntry(h, RPMTAG_FILESIZES, NULL, (void **) &filesizes, &numFiles);
 
+    if (rpmGetFilesystemList(NULL, count)) {
+       return 1;
+    }
+
     if (rpmGetFilesystemUsage(filenames, filesizes, numFiles, &usages, 0))     
        return 1;
 
     *type = RPM_INT32_TYPE;
-    *count = 20;
     *freeData = 1;
     *data = usages;
 
index 3b34800..4243ae7 100644 (file)
--- a/lib/fs.c
+++ b/lib/fs.c
@@ -191,12 +191,14 @@ static int getFilesystemList(void) {
 }
 #endif
 
-int rpmGetFilesystemList(char *** listptr) {
+int rpmGetFilesystemList(char *** listptr, int * num) {
     if (!fsnames) 
        if (getFilesystemList())
            return 1;
 
-    *listptr = fsnames;
+    if (listptr) *listptr = fsnames;
+    if (num) *num = numFilesystems;
+
     return 0;
 }
 
index 1262684..dd6f9c0 100644 (file)
@@ -1686,7 +1686,7 @@ static char * singleSprintf(Header h, struct sprintfToken * token,
 
        if (numElements == -1) {
            val = malloc(20);
-           strcpy(val, "(none)\n");
+           strcpy(val, "(none)");
        } else {
            alloced = numElements * token->u.array.numTokens * 20;
            val = malloc(alloced);
index 108d324..81d6800 100644 (file)
@@ -458,7 +458,7 @@ void rpmFreeSignature(Header h);
 int rpmVerifySignature(char *file, int_32 sigTag, void *sig, int count,
                       char *result);
 
-int rpmGetFilesystemList(char *** listptr);
+int rpmGetFilesystemList(char *** listptr, int * num);
 int rpmGetFilesystemUsage(char ** filelist, int_32 * fssizes, int numFiles,
                          uint_32 ** usagesPtr, int flags);
 
index a5ba3fe..67b6c22 100644 (file)
@@ -59,7 +59,7 @@ int main(int argc, char **argv)
            gzclose(stream);
            return 1;
        }
-        fprintf (stderr, "rpm2cpio: zlib: %s error\n", zlib_err [-zerror]);
+        fprintf (stderr, "rpm2cpio: zlib: %s error\n", zlib_err [-zerror - 1]);
     }
 
     gzclose(stream);