Jason Edmeades : cmd.exe: Make SET have correct errorlevel.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Mar 13 07:56:08 CDT 2007


Module: wine
Branch: master
Commit: 87f0293657591c2bed80bcf36801a8a2c889b3fc
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=87f0293657591c2bed80bcf36801a8a2c889b3fc

Author: Jason Edmeades <us at edmeades.me.uk>
Date:   Tue Mar 13 00:11:31 2007 +0000

cmd.exe: Make SET have correct errorlevel.

---

 programs/cmd/builtins.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index 02004ae..4efe580 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -1278,6 +1278,7 @@ void WCMD_setshow_env (char *s) {
   char *p;
   int status;
 
+  errorlevel = 0;
   if (param1[0] == 0x00 && quals[0] == 0x00) {
     env = GetEnvironmentStrings ();
     WCMD_setshow_sortenv( env, NULL );
@@ -1314,11 +1315,13 @@ void WCMD_setshow_env (char *s) {
     }
 
   } else {
+    DWORD gle;
     p = strchr (s, '=');
     if (p == NULL) {
       env = GetEnvironmentStrings ();
       if (WCMD_setshow_sortenv( env, s ) == 0) {
         WCMD_output ("Environment variable %s not defined\n", s);
+        errorlevel = 1;
       }
       return;
     }
@@ -1326,7 +1329,10 @@ void WCMD_setshow_env (char *s) {
 
     if (strlen(p) == 0) p = NULL;
     status = SetEnvironmentVariable (s, p);
-    if ((!status) & (GetLastError() != ERROR_ENVVAR_NOT_FOUND)) WCMD_print_error();
+    gle = GetLastError();
+    if ((!status) & (gle == ERROR_ENVVAR_NOT_FOUND)) {
+      errorlevel = 1;
+    } else if ((!status)) WCMD_print_error();
   }
 }
 




More information about the wine-cvs mailing list