Use an explicit symbol for uninitialized vnode types
[openafs.git] / src / tools / dumpscan / dumptool.c
index 6f6e44f..70b2ec7 100644 (file)
@@ -918,7 +918,7 @@ ScanVnodes(FILE * f, VolumeDiskData * vol, int sizescan)
 
        offset = 0;
        length = 0;
-       vnode->type = -1;
+       vnode->type = vNull;
        vnode->length = -1;
 
        if (ReadInt32(f, (uint32_t *) & vnodeNumber)) {
@@ -1064,7 +1064,7 @@ ScanVnodes(FILE * f, VolumeDiskData * vol, int sizescan)
         * just skip it (because we can't do anything with it.
         */
 
-       if (vnode->type == -1)
+       if (vnode->type == vNull)
            continue;
 
 #ifdef RESIDENCY
@@ -1149,12 +1149,19 @@ ScanVnodes(FILE * f, VolumeDiskData * vol, int sizescan)
        numSmallVnodes = numFileVnodes;
 
     } else {
-       LargeVnodeIndex = (struct vnodeData **)
-           malloc(numDirVnodes * sizeof(struct vnodeData));
-       SmallVnodeIndex = (struct vnodeData **)
-           malloc(numFileVnodes * sizeof(struct vnodeData));
+       if (numDirVnodes == 0)
+           LargeVnodeIndex = NULL;
+       else
+           LargeVnodeIndex = malloc(numDirVnodes
+                                     * sizeof(struct vnodeData *));
+       if (numFileVnodes == 0)
+           SmallVnodeIndex = NULL;
+       else
+           SmallVnodeIndex = malloc(numFileVnodes
+                                     * sizeof(struct vnodeData *));
 
-       if (LargeVnodeIndex == NULL || SmallVnodeIndex == NULL) {
+       if ((numDirVnodes != 0 && LargeVnodeIndex == NULL) ||
+           (numFileVnodes != 0 && SmallVnodeIndex == NULL)) {
            if (verbose)
                fprintf(stderr,
                        "Unable to allocate space " "for vnode tables\n");
@@ -1217,7 +1224,8 @@ InteractiveRestore(FILE * f, VolumeDiskData * vol)
     printf("> ");
     while (fgets(cmdbuf, CMDBUFSIZE, stdin)) {
 
-       cmdbuf[strlen(cmdbuf) - 1] = '\0';
+       if (strlen(cmdbuf) > 0 && cmdbuf[strlen(cmdbuf) - 1] == '\n')
+           cmdbuf[strlen(cmdbuf) - 1] = '\0';
 
        if (strlen(cmdbuf) == 0) {
            printf("> ");