[PATCH 7/9] Add errorlevel support for DIR command

Jason Edmeades us at edmeades.me.uk
Tue Mar 13 15:27:51 CDT 2007


---
 programs/cmd/directory.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/programs/cmd/directory.c b/programs/cmd/directory.c
index 8cb4e23..4d40bff 100644
--- a/programs/cmd/directory.c
+++ b/programs/cmd/directory.c
@@ -82,6 +82,8 @@ void WCMD_directory (void) {
   char *p;
   char string[MAXSTRING];
 
+  errorlevel = 0;
+
   /* Prefill Quals with (uppercased) DIRCMD env var */
   if (GetEnvironmentVariable ("DIRCMD", string, sizeof(string))) {
     p = string;
@@ -167,6 +169,7 @@ void WCMD_directory (void) {
               } else {
                 SetLastError(ERROR_INVALID_PARAMETER);
                 WCMD_print_error();
+                errorlevel = 1;
                 return;
               }
               break;
@@ -186,6 +189,7 @@ void WCMD_directory (void) {
                 default:
                     SetLastError(ERROR_INVALID_PARAMETER);
                     WCMD_print_error();
+                    errorlevel = 1;
                     return;
                 }
                 p++;
@@ -216,6 +220,7 @@ void WCMD_directory (void) {
                 default:
                     SetLastError(ERROR_INVALID_PARAMETER);
                     WCMD_print_error();
+                    errorlevel = 1;
                     return;
                 }
 
@@ -234,6 +239,7 @@ void WCMD_directory (void) {
     default:
               SetLastError(ERROR_INVALID_PARAMETER);
               WCMD_print_error();
+              errorlevel = 1;
               return;
     }
     p = p + 1;
@@ -260,6 +266,7 @@ void WCMD_directory (void) {
   if (!status) {
     WCMD_print_error();
     if (paged_mode) WCMD_leave_paged_mode();
+    errorlevel = 1;
     return;
   }
   lstrcpyn (drive, path, 3);
@@ -268,6 +275,7 @@ void WCMD_directory (void) {
      status = WCMD_volume (0, drive);
      if (!status) {
          if (paged_mode) WCMD_leave_paged_mode();
+       errorlevel = 1;
        return;
      }
   }
@@ -352,6 +360,7 @@ void WCMD_list_directory (char *search_path, int level) {
     SetLastError (ERROR_FILE_NOT_FOUND);
     WCMD_print_error ();
     HeapFree(GetProcessHeap(),0,fd);
+    errorlevel = 1;
     return;
   }
   do {
@@ -371,7 +380,8 @@ void WCMD_list_directory (char *search_path, int level) {
     if (fd == NULL) {
       FindClose (hff);
       WCMD_output ("Memory Allocation Error");
-       return;
+      errorlevel = 1;
+      return;
     }
   } while (FindNextFile(hff, (fd+entry_count)) != 0);
   FindClose (hff);
@@ -381,6 +391,7 @@ void WCMD_list_directory (char *search_path, int level) {
     SetLastError (ERROR_FILE_NOT_FOUND);
     WCMD_print_error ();
     HeapFree(GetProcessHeap(),0,fd);
+    errorlevel = 1;
     return;
   }
 
-- 
1.5.0




More information about the wine-patches mailing list