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
This commit is contained in:
KWSys Robot 2014-08-07 09:55:30 -04:00 committed by Brad King
parent 158c6d1cff
commit fe587db415
6 changed files with 6 additions and 136 deletions

View File

@ -68,6 +68,7 @@ do.
#include <signal.h> /* sigaction */ #include <signal.h> /* sigaction */
#include <dirent.h> /* DIR, dirent */ #include <dirent.h> /* DIR, dirent */
#include <ctype.h> /* isspace */ #include <ctype.h> /* isspace */
#include <assert.h> /* assert */
#if defined(__VMS) #if defined(__VMS)
# define KWSYSPE_VMS_NONBLOCK , O_NONBLOCK # 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) for(i=0; i < n; ++i)
{ {
assert(command[i]); /* Quiet Clang scan-build. */
newCommands[cp->NumberOfCommands][i] = strdup(command[i]); newCommands[cp->NumberOfCommands][i] = strdup(command[i]);
if(!newCommands[cp->NumberOfCommands][i]) if(!newCommands[cp->NumberOfCommands][i])
{ {

View File

@ -4600,111 +4600,6 @@ void SystemTools::Delay(unsigned int msec)
#endif #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 SystemTools::GetOperatingSystemNameAndVersion()
{ {
kwsys_stl::string res; kwsys_stl::string res;

View File

@ -856,15 +856,6 @@ public:
*/ */
static kwsys_stl::string GetOperatingSystemNameAndVersion(); 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 * URL Manipulation Routines
* ----------------------------------------------------------------- * -----------------------------------------------------------------

View File

@ -21,6 +21,7 @@
# include "kwsys_ios_iostream.h.in" # include "kwsys_ios_iostream.h.in"
#endif #endif
#include <assert.h> /* assert */
#include <string.h> /* strcmp */ #include <string.h> /* strcmp */
int testCommandLineArguments1(int argc, char* argv[]) int testCommandLineArguments1(int argc, char* argv[])
@ -83,6 +84,7 @@ int testCommandLineArguments1(int argc, char* argv[])
} }
for ( cc = 0; cc < newArgc; ++ cc ) for ( cc = 0; cc < newArgc; ++ cc )
{ {
assert(newArgv[cc]); /* Quiet Clang scan-build. */
kwsys_ios::cout << "Unused argument[" << cc << "] = [" << newArgv[cc] << "]" kwsys_ios::cout << "Unused argument[" << cc << "] = [" << newArgv[cc] << "]"
<< kwsys_ios::endl; << kwsys_ios::endl;
if ( cc >= 9 ) if ( cc >= 9 )

View File

@ -20,6 +20,7 @@
# include "Encoding.h.in" # include "Encoding.h.in"
#endif #endif
#include <assert.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.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"); fprintf(stderr, "Output before crash on stderr from crash test.\n");
fflush(stdout); fflush(stdout);
fflush(stderr); fflush(stderr);
assert(invalidAddress); /* Quiet Clang scan-build. */
/* Provoke deliberate crash by writing to the invalid address. */ /* Provoke deliberate crash by writing to the invalid address. */
*invalidAddress = 0; *invalidAddress = 0;
fprintf(stdout, "Output after crash on stdout from crash test.\n"); fprintf(stdout, "Output after crash on stdout from crash test.\n");

View File

@ -507,28 +507,6 @@ static bool CheckStringOperations()
res = false; 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; return res;
} }