From fe587db415b1cf728f42c5db55c3acbad7a9a529 Mon Sep 17 00:00:00 2001
From: KWSys Robot <kwrobot@kitware.com>
Date: Thu, 7 Aug 2014 09:55:30 -0400
Subject: [PATCH] KWSys 2014-08-07 (4d526097)

Extract upstream KWSys using the following shell commands.

$ git archive --prefix=upstream-kwsys/ 4d526097 | tar x
$ git shortlog --no-merges --abbrev=8 --format='%h %s' e787837a..4d526097
Brad King (2):
      4791701a SystemTools: Remove ConvertWindowsCommandLineToUnixArguments method
      4d526097 Add assert() to quiet Clang scan-build warnings

Change-Id: I15e4ad710a8ad01f96761a89f2c1517f3c2aa835
---
 ProcessUNIX.c                 |   2 +
 SystemTools.cxx               | 105 ----------------------------------
 SystemTools.hxx.in            |   9 ---
 testCommandLineArguments1.cxx |   2 +
 testProcess.c                 |   2 +
 testSystemTools.cxx           |  22 -------
 6 files changed, 6 insertions(+), 136 deletions(-)

diff --git a/ProcessUNIX.c b/ProcessUNIX.c
index 241e295738..ca9d424289 100644
--- a/ProcessUNIX.c
+++ b/ProcessUNIX.c
@@ -68,6 +68,7 @@ do.
 #include <signal.h>    /* sigaction */
 #include <dirent.h>    /* DIR, dirent */
 #include <ctype.h>     /* isspace */
+#include <assert.h>    /* assert */
 
 #if defined(__VMS)
 # define KWSYSPE_VMS_NONBLOCK , O_NONBLOCK
@@ -450,6 +451,7 @@ int kwsysProcess_AddCommand(kwsysProcess* cp, char const* const* command)
       }
     for(i=0; i < n; ++i)
       {
+      assert(command[i]); /* Quiet Clang scan-build. */
       newCommands[cp->NumberOfCommands][i] = strdup(command[i]);
       if(!newCommands[cp->NumberOfCommands][i])
         {
diff --git a/SystemTools.cxx b/SystemTools.cxx
index dcfd49c890..e34bb431eb 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -4600,111 +4600,6 @@ void SystemTools::Delay(unsigned int msec)
 #endif
 }
 
-void SystemTools::ConvertWindowsCommandLineToUnixArguments(
-  const char *cmd_line, int *argc, char ***argv)
-{
-  if (!cmd_line || !argc || !argv)
-    {
-    return;
-    }
-
-  // A space delimites an argument except when it is inside a quote
-
-  (*argc) = 1;
-
-  size_t cmd_line_len = strlen(cmd_line);
-
-  size_t i;
-  for (i = 0; i < cmd_line_len; i++)
-    {
-    while (isspace(cmd_line[i]) && i < cmd_line_len)
-      {
-      i++;
-      }
-    if (i < cmd_line_len)
-      {
-      if (cmd_line[i] == '\"')
-        {
-        i++;
-        while (cmd_line[i] != '\"' && i < cmd_line_len)
-          {
-          i++;
-          }
-        (*argc)++;
-        }
-      else
-        {
-        while (!isspace(cmd_line[i]) && i < cmd_line_len)
-          {
-          i++;
-          }
-        (*argc)++;
-        }
-      }
-    }
-
-  (*argv) = new char* [(*argc) + 1];
-  (*argv)[(*argc)] = NULL;
-
-  // Set the first arg to be the exec name
-
-  (*argv)[0] = new char [1024];
-#ifdef _WIN32
-  wchar_t tmp[1024];
-  ::GetModuleFileNameW(0, tmp, 1024);
-  strcpy((*argv)[0], Encoding::ToNarrow(tmp).c_str());
-#else
-  (*argv)[0][0] = '\0';
-#endif
-
-  // Allocate the others
-
-  int j;
-  for (j = 1; j < (*argc); j++)
-    {
-    (*argv)[j] = new char [cmd_line_len + 10];
-    }
-
-  // Grab the args
-
-  size_t pos;
-  int argc_idx = 1;
-
-  for (i = 0; i < cmd_line_len; i++)
-    {
-    while (isspace(cmd_line[i]) && i < cmd_line_len)
-      {
-      i++;
-      }
-    if (i < cmd_line_len)
-      {
-      if (cmd_line[i] == '\"')
-        {
-        i++;
-        pos = i;
-        while (cmd_line[i] != '\"' && i < cmd_line_len)
-          {
-          i++;
-          }
-        memcpy((*argv)[argc_idx], &cmd_line[pos], i - pos);
-        (*argv)[argc_idx][i - pos] = '\0';
-        argc_idx++;
-        }
-      else
-        {
-        pos = i;
-        while (!isspace(cmd_line[i]) && i < cmd_line_len)
-          {
-          i++;
-          }
-        memcpy((*argv)[argc_idx], &cmd_line[pos], i - pos);
-        (*argv)[argc_idx][i - pos] = '\0';
-        argc_idx++;
-        }
-      }
-    }
- }
-
 kwsys_stl::string SystemTools::GetOperatingSystemNameAndVersion()
 {
   kwsys_stl::string res;
diff --git a/SystemTools.hxx.in b/SystemTools.hxx.in
index 25146996e2..e88bc8f3c3 100644
--- a/SystemTools.hxx.in
+++ b/SystemTools.hxx.in
@@ -856,15 +856,6 @@ public:
    */
   static kwsys_stl::string GetOperatingSystemNameAndVersion();
 
-  /**
-   * Convert windows-style arguments given as a command-line string
-   * into more traditional argc/argv arguments.
-   * Note that argv[0] will be assigned the executable name using
-   * the GetModuleFileName() function.
-   */
-  static void ConvertWindowsCommandLineToUnixArguments(
-    const char *cmd_line, int *argc, char ***argv);
-
   /** -----------------------------------------------------------------
    *               URL Manipulation Routines
    *  -----------------------------------------------------------------
diff --git a/testCommandLineArguments1.cxx b/testCommandLineArguments1.cxx
index 3b84c38cdc..b65c37f85c 100644
--- a/testCommandLineArguments1.cxx
+++ b/testCommandLineArguments1.cxx
@@ -21,6 +21,7 @@
 # include "kwsys_ios_iostream.h.in"
 #endif
 
+#include <assert.h> /* assert */
 #include <string.h> /* strcmp */
 
 int testCommandLineArguments1(int argc, char* argv[])
@@ -83,6 +84,7 @@ int testCommandLineArguments1(int argc, char* argv[])
     }
   for ( cc = 0; cc < newArgc; ++ cc )
     {
+    assert(newArgv[cc]); /* Quiet Clang scan-build. */
     kwsys_ios::cout << "Unused argument[" << cc << "] = [" << newArgv[cc] << "]"
       << kwsys_ios::endl;
     if ( cc >= 9 )
diff --git a/testProcess.c b/testProcess.c
index 3d62822488..47c3fb0d05 100644
--- a/testProcess.c
+++ b/testProcess.c
@@ -20,6 +20,7 @@
 # include "Encoding.h.in"
 #endif
 
+#include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -104,6 +105,7 @@ static int test4(int argc, const char* argv[])
   fprintf(stderr, "Output before crash on stderr from crash test.\n");  
   fflush(stdout);
   fflush(stderr);
+  assert(invalidAddress); /* Quiet Clang scan-build. */
   /* Provoke deliberate crash by writing to the invalid address. */
   *invalidAddress = 0;
   fprintf(stdout, "Output after crash on stdout from crash test.\n");
diff --git a/testSystemTools.cxx b/testSystemTools.cxx
index 15123ebb5b..04ab4fc345 100644
--- a/testSystemTools.cxx
+++ b/testSystemTools.cxx
@@ -507,28 +507,6 @@ static bool CheckStringOperations()
     res = false;    
     }
 
-  int targc;
-  char **targv;
-  kwsys::SystemTools::ConvertWindowsCommandLineToUnixArguments
-    ("\"Local Mojo\\Voodoo.asp\" -CastHex \"D:\\My Secret Mojo\\Voodoo.mp3\"",
-    &targc, &targv);
-  if (targc != 4 || strcmp(targv[1],"Local Mojo\\Voodoo.asp") ||
-      strcmp(targv[2],"-CastHex") || 
-      strcmp(targv[3],"D:\\My Secret Mojo\\Voodoo.mp3"))
-    {
-    kwsys_ios::cerr
-      << "Problem with ConvertWindowsCommandLineToUnixArguments"
-      << "\'\"Local Mojo\\Voodoo.asp\" "
-      << "-CastHex \"D:\\My Secret Mojo\\Voodoo.mp3\"\'"
-      << kwsys_ios::endl;
-    res = false;    
-    }
-  for (;targc >=0; --targc)
-    {
-    delete [] targv[targc];
-    }
-  delete [] targv;
-
   return res;
 }
 
-- 
GitLab