[SHUTDOWN] Actually all shutdown.exe utilities from all Windows (>= XP) versions...
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Tue, 1 May 2018 21:41:41 +0000 (23:41 +0200)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Tue, 1 May 2018 22:24:10 +0000 (00:24 +0200)
base/applications/shutdown/misc.c
base/applications/shutdown/precomp.h
base/applications/shutdown/shutdown.c

index d794937..462672d 100644 (file)
@@ -45,59 +45,6 @@ REASON shutdownReason[] =
     {L"P" , 7,  0, SHTDN_REASON_MAJOR_POWER | SHTDN_REASON_MINOR_ENVIRONMENT}                                        /* Legacy API shutdown (Planned) */
 };
 
-/*
- * This command helps to work around the fact that the shutdown utility has
- * different upper limits for the comment flag since each version of Windows
- * seems to have different upper limits.
- */
-BOOL CheckCommentLength(LPCWSTR comment)
-{
-    DWORD finalLength = 0;
-    size_t strLength = 0;
-    DWORD osVersion = 0;
-    DWORD osMajorVersion = 0;
-    DWORD osMinorVersion = 0;
-
-    /* An empty string is always valid. */
-    if (!comment || *comment == 0)
-        return TRUE;
-
-    /* Grab the version of the current Operating System. */
-    osVersion = GetVersion();
-
-    osMajorVersion = (DWORD)(LOBYTE(LOWORD(osVersion)));
-    osMinorVersion = (DWORD)(HIBYTE(LOWORD(osVersion)));
-
-    /*
-     * Check to make sure that the proper length is being used
-     * based upon the version of Windows currently being used.
-     */
-    if (osMajorVersion == 5) /* Windows XP/2003 */
-    {
-        if ((osMinorVersion == 1) || (osMinorVersion == 2))
-        {
-            finalLength = 127;
-        }
-    }
-    else if (osMajorVersion == 6) /* Windows Vista/7/2008 */
-    {
-        if ((osMinorVersion == 0) || (osMinorVersion == 1))
-        {
-            finalLength = 512;
-        }
-    }
-
-    /* Grab the length of the comment string. */
-    strLength = wcslen(comment);
-
-    /*
-     * Compare the size of the string to make sure
-     * it fits with the current version of Windows,
-     * and return TRUE or FALSE accordingly.
-     */
-    return (strLength <= finalLength);
-}
-
 /*
  * This function parses the reason code to a usable format that will specify
  * why the user wants to shut the computer down. Although this is used for
index f13ce2b..a63cc47 100644 (file)
@@ -52,7 +52,6 @@ extern const DWORD defaultReason;
 /* PROTOTYPES *****************************************************************/
 
 /* misc.c */
-BOOL CheckCommentLength(LPCWSTR);
 DWORD ParseReasonCode(LPCWSTR);
 VOID DisplayError(DWORD dwError);
 
index 3e492b9..f4c403d 100644 (file)
@@ -56,9 +56,9 @@ ParseArguments(struct CommandLineOptions* pOpts, int argc, WCHAR *argv[])
                     break;
 
                 case L'c': /* Comment on reason for shutdown */
-                    if (index+1 > argc)
+                    if (index+1 >= argc)
                         return ERROR_INVALID_DATA;
-                    if(CheckCommentLength(argv[index+1]))
+                    if (!argv[index+1] || wcslen(argv[index+1]) <= 512)
                     {
                         pOpts->message = argv[index+1];
                         index++;