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:
parent
158c6d1cff
commit
fe587db415
|
@ -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])
|
||||||
{
|
{
|
||||||
|
|
105
SystemTools.cxx
105
SystemTools.cxx
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
* -----------------------------------------------------------------
|
* -----------------------------------------------------------------
|
||||||
|
|
|
@ -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 )
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue