(remove_cwd_entries): Don't apply CLOSEDIR to a NULL
authorJim Meyering <jim@meyering.net>
Sun, 25 Oct 1998 13:58:50 +0000 (13:58 +0000)
committerJim Meyering <jim@meyering.net>
Sun, 25 Oct 1998 13:58:50 +0000 (13:58 +0000)
pointer. (provoke with `mkdir -m 0100 x; rm -rf x')
Upon CLOSEDIR failure, set `status' to RM_ERROR, not RM_OK.
(remove_dir): Return `status', rather than always RM_OK.

src/remove.c

index 2922821..e35c1e3 100644 (file)
@@ -575,12 +575,15 @@ remove_cwd_entries (const struct rm_options *x)
     }
   while (dirp == NULL);
 
-  if (CLOSEDIR (dirp))
+  if (dirp)
     {
-      error (0, errno, "%s", full_filename ("."));
-      status = RM_OK;
+      if (CLOSEDIR (dirp))
+       {
+         error (0, errno, "%s", full_filename ("."));
+         status = RM_ERROR;
+       }
+      dirp = NULL;
     }
-  dirp = NULL;
 
   if (ht)
     {
@@ -766,7 +769,7 @@ remove_dir (struct File_spec *fs, int need_save_cwd, const struct rm_options *x)
       return RM_ERROR;
     }
 
-  return RM_OK;
+  return status;
 }
 
 /* Remove the file or directory specified by FS after checking appropriate