* cygcheck.cc (dump_sysinfo): Don't attempt to use path if it is not set.

(nuke): Fix off by one error in allocation of environment variable.
(load_cygwin): Always set PATH even if cygwin environment is empty.
This commit is contained in:
Christopher Faylor 2005-05-20 16:38:42 +00:00
parent fece73ae83
commit ceb7fa1c4a
2 changed files with 34 additions and 20 deletions

View File

@ -1,3 +1,10 @@
2005-05-20 Christopher Faylor <cgf@timesys.com>
* cygcheck.cc (dump_sysinfo): Don't attempt to use path if it is not
set.
(nuke): Fix off by one error in allocation of environment variable.
(load_cygwin): Always set PATH even if cygwin environment is empty.
2005-05-16 Christopher Faylor <cgf@timesys.com>
* cygcheck.cc (cygwin_internal): Define as a "C" function.

View File

@ -977,19 +977,24 @@ dump_sysinfo ()
printf ("Path:");
char *s = getenv ("PATH"), *e;
char sep = strchr (s, ';') ? ';' : ':';
int count_path_items = 0;
while (1)
if (!s)
puts ("");
else
{
for (e = s; *e && *e != sep; e++);
if (e-s)
printf ("\t%.*s\n", e - s, s);
else
puts ("\t.");
count_path_items++;
if (!*e)
break;
s = e + 1;
char sep = strchr (s, ';') ? ';' : ':';
int count_path_items = 0;
while (1)
{
for (e = s; *e && *e != sep; e++);
if (e-s)
printf ("\t%.*s\n", e - s, s);
else
puts ("\t.");
count_path_items++;
if (!*e)
break;
s = e + 1;
}
}
fflush (stdout);
@ -1432,8 +1437,8 @@ Compiled on %s\n\
void
nuke (char *ev)
{
int n = 1 + strchr (*_environ, '=') - ev;
char *s = (char *) alloca (n);
int n = 1 + strchr (ev, '=') - ev;
char *s = (char *) alloca (n + 1);
memcpy (s, ev, n);
s[n] = '\0';
putenv (s);
@ -1461,22 +1466,24 @@ load_cygwin (int& argc, char **&argv)
char **envp = (char **) cygwin_internal (CW_ENVP);
if (envp)
{
cygwin_internal (CW_DEBUG_SELF, "d:\\cygwin\\bin\\gdb.exe");
/* Store path and revert to this value, otherwise path gets overwritten
by the POSIXy Cygwin variation, which breaks cygcheck.
Another approach would be to use the Cygwin PATH and convert it to
Win32 again. */
char *path = NULL;
while (*_environ)
char **env;
while (*(env = _environ))
{
if (strncmp (*_environ, "PATH=", 5) == 0)
path = strdup (*_environ);
nuke (*_environ);
if (strncmp (*env, "PATH=", 5) == 0)
path = strdup (*env);
nuke (*env);
}
for (char **ev = envp; *ev; ev++)
if (strncmp (*ev, "PATH=", 5) != 0)
putenv (*ev);
else if (path)
putenv (path);
if (path)
putenv (path);
}
}