Author: jmcd
Date: 2005-10-11 18:53:13 +0000 (Tue, 11 Oct 2005)
New Revision: 10910

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=10910

Log:
Give better shutdown messages
Modified:
   trunk/source/include/doserr.h
   trunk/source/libsmb/doserr.c
   trunk/source/utils/net_rpc.c


Changeset:
Modified: trunk/source/include/doserr.h
===================================================================
--- trunk/source/include/doserr.h       2005-10-11 18:42:25 UTC (rev 10909)
+++ trunk/source/include/doserr.h       2005-10-11 18:53:13 UTC (rev 10910)
@@ -196,6 +196,7 @@
 #define WERR_REG_FILE_INVALID W_ERROR(1017)
 #define WERR_NO_SUCH_SERVICE W_ERROR(1060)
 #define WERR_INVALID_SERVICE_CONTROL W_ERROR(1052)
+#define WERR_MACHINE_LOCKED W_ERROR(1271)
 #define WERR_INVALID_SECURITY_DESCRIPTOR W_ERROR(1338)
 #define WERR_EVENTLOG_FILE_CORRUPT W_ERROR(1500)
 #define WERR_SERVER_UNAVAILABLE W_ERROR(1722)

Modified: trunk/source/libsmb/doserr.c
===================================================================
--- trunk/source/libsmb/doserr.c        2005-10-11 18:42:25 UTC (rev 10909)
+++ trunk/source/libsmb/doserr.c        2005-10-11 18:53:13 UTC (rev 10910)
@@ -66,6 +66,7 @@
        { "WERR_DFS_NO_SUCH_SERVER", WERR_DFS_NO_SUCH_SERVER },
        { "WERR_DFS_INTERNAL_ERROR", WERR_DFS_INTERNAL_ERROR },
        { "WERR_DFS_CANT_CREATE_JUNCT", WERR_DFS_CANT_CREATE_JUNCT },
+       { "WERR_MACHINE_LOCKED", WERR_MACHINE_LOCKED },
        { "WERR_INVALID_SECURITY_DESCRIPTOR", WERR_INVALID_SECURITY_DESCRIPTOR 
},
        { "WERR_INVALID_OWNER", WERR_INVALID_OWNER },
        { "WERR_SERVER_UNAVAILABLE", WERR_SERVER_UNAVAILABLE },

Modified: trunk/source/utils/net_rpc.c
===================================================================
--- trunk/source/utils/net_rpc.c        2005-10-11 18:42:25 UTC (rev 10909)
+++ trunk/source/utils/net_rpc.c        2005-10-11 18:53:13 UTC (rev 10910)
@@ -4610,9 +4610,9 @@
        if (NT_STATUS_IS_OK(result)) {
                d_printf("\nShutdown of remote machine succeeded\n");
                DEBUG(5,("Shutdown of remote machine succeeded\n"));
-       } else
-               DEBUG(0,("Shutdown of remote machine failed!\n"));
-
+       } else {
+               DEBUG(1,("Shutdown of remote machine failed!\n"));
+       }
        return result;
 }
 
@@ -4640,7 +4640,7 @@
                                                int argc,
                                                const char **argv) 
 {
-       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+       WERROR result;
         const char *msg = "This machine will be shutdown shortly";
        uint32 timeout = 20;
 #if 0
@@ -4676,16 +4676,19 @@
        }
 
        /* create an entry */
-       result = werror_to_ntstatus(rpccli_reg_shutdown(pipe_hnd, mem_ctx, msg, 
timeout, opt_reboot, opt_force));
+       result = rpccli_reg_shutdown(pipe_hnd, mem_ctx, msg, timeout, 
opt_reboot, opt_force);
 
-       if (NT_STATUS_IS_OK(result)) {
+       if (W_ERROR_IS_OK(result)) {
                d_printf("\nShutdown of remote machine succeeded\n");
-               DEBUG(5,("Shutdown of remote machine succeeded\n"));
+       } else {
+               d_printf("\nShutdown of remote machine failed\n");
+               if (W_ERROR_EQUAL(result,WERR_MACHINE_LOCKED))
+                       d_printf("\nMachine locked, use -f switch to force\n");
+               else
+                       d_printf("\nresult was: %s\n", dos_errstr(result));
        }
-       else
-               DEBUG(0,("Shutdown of remote machine failed!\n"));
 
-       return result;
+       return werror_to_ntstatus(result);
 }
 
 /** 
@@ -4703,13 +4706,14 @@
        int rc = run_rpc_command(NULL, PI_SHUTDOWN, 0, 
                                 rpc_init_shutdown_internals,
                                 argc, argv);
-       if (rc == 0)
-               return rc;
 
-       DEBUG(1, ("initshutdown pipe didn't work, trying winreg pipe\n"));
+       if (rc) {
+               DEBUG(1, ("initshutdown pipe failed, trying winreg pipe\n"));
+               rc = run_rpc_command(NULL, PI_WINREG, 0, 
+                                    rpc_reg_shutdown_internals, argc, argv);
+       }
 
-       return run_rpc_command(NULL, PI_WINREG, 0, rpc_reg_shutdown_internals,
-                                      argc, argv);
+       return rc;
 }
 
 /***************************************************************************

Reply via email to