* cygcheck.cc (load_cygwin): Make half-hearted attempt to work with older DLLs.
* strace.cc (load_cygwin): Ditto.
This commit is contained in:
parent
720c77ee72
commit
cba3b11fc5
@ -1,3 +1,9 @@
|
|||||||
|
2005-05-27 Christopher Faylor <cgf@timesys.com>
|
||||||
|
|
||||||
|
* cygcheck.cc (load_cygwin): Make half-hearted attempt to work with
|
||||||
|
older DLLs.
|
||||||
|
* strace.cc (load_cygwin): Ditto.
|
||||||
|
|
||||||
2005-05-22 Brian Dessent <brian@dessent.net>
|
2005-05-22 Brian Dessent <brian@dessent.net>
|
||||||
|
|
||||||
* cygcheck.cc (dump_sysinfo_services): Add new function that uses
|
* cygcheck.cc (dump_sysinfo_services): Add new function that uses
|
||||||
|
@ -160,12 +160,12 @@ init_paths ()
|
|||||||
{
|
{
|
||||||
char tmp[4000], *sl;
|
char tmp[4000], *sl;
|
||||||
add_path ((char *) ".", 1); /* to be replaced later */
|
add_path ((char *) ".", 1); /* to be replaced later */
|
||||||
|
|
||||||
if (GetCurrentDirectory (4000, tmp))
|
if (GetCurrentDirectory (4000, tmp))
|
||||||
add_path (tmp, strlen (tmp));
|
add_path (tmp, strlen (tmp));
|
||||||
else
|
else
|
||||||
display_error ("init_paths: GetCurrentDirectory()");
|
display_error ("init_paths: GetCurrentDirectory()");
|
||||||
|
|
||||||
if (GetSystemDirectory (tmp, 4000))
|
if (GetSystemDirectory (tmp, 4000))
|
||||||
add_path (tmp, strlen (tmp));
|
add_path (tmp, strlen (tmp));
|
||||||
else
|
else
|
||||||
@ -878,15 +878,15 @@ dump_sysinfo_services ()
|
|||||||
char buf[1024];
|
char buf[1024];
|
||||||
char buf2[1024];
|
char buf2[1024];
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
|
||||||
if (givehelp)
|
if (givehelp)
|
||||||
printf ("\nChecking for any Cygwin services... %s\n\n",
|
printf ("\nChecking for any Cygwin services... %s\n\n",
|
||||||
verbose ? "" : "(use -v for more detail)");
|
verbose ? "" : "(use -v for more detail)");
|
||||||
else
|
else
|
||||||
fputc ('\n', stdout);
|
fputc ('\n', stdout);
|
||||||
|
|
||||||
/* find the location of cygrunsrv.exe */
|
/* find the location of cygrunsrv.exe */
|
||||||
char *cygrunsrv = cygpath ("/bin/cygrunsrv.exe", NULL);
|
char *cygrunsrv = cygpath ("/bin/cygrunsrv.exe", NULL);
|
||||||
for (char *p = cygrunsrv; (p = strchr (p, '/')); p++)
|
for (char *p = cygrunsrv; (p = strchr (p, '/')); p++)
|
||||||
*p = '\\';
|
*p = '\\';
|
||||||
|
|
||||||
@ -895,10 +895,10 @@ dump_sysinfo_services ()
|
|||||||
puts ("Can't find the cygrunsrv utility, skipping services check.\n");
|
puts ("Can't find the cygrunsrv utility, skipping services check.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check for a recent cygrunsrv */
|
/* check for a recent cygrunsrv */
|
||||||
snprintf (buf, sizeof (buf), "%s --version", cygrunsrv);
|
snprintf (buf, sizeof (buf), "%s --version", cygrunsrv);
|
||||||
if ((f = popen (buf, "rt")) == NULL)
|
if ((f = popen (buf, "rt")) == NULL)
|
||||||
{
|
{
|
||||||
printf ("Failed to execute '%s', skipping services check.\n", buf);
|
printf ("Failed to execute '%s', skipping services check.\n", buf);
|
||||||
return;
|
return;
|
||||||
@ -911,7 +911,7 @@ dump_sysinfo_services ()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
fclose (f);
|
fclose (f);
|
||||||
|
|
||||||
/* run cygrunsrv --list */
|
/* run cygrunsrv --list */
|
||||||
snprintf (buf, sizeof (buf), "%s --list", cygrunsrv);
|
snprintf (buf, sizeof (buf), "%s --list", cygrunsrv);
|
||||||
if ((f = popen (buf, "rt")) == NULL)
|
if ((f = popen (buf, "rt")) == NULL)
|
||||||
@ -921,40 +921,39 @@ dump_sysinfo_services ()
|
|||||||
}
|
}
|
||||||
size_t nchars = fread ((void *) buf, 1, sizeof (buf), f);
|
size_t nchars = fread ((void *) buf, 1, sizeof (buf), f);
|
||||||
pclose (f);
|
pclose (f);
|
||||||
|
|
||||||
/* were any services found? */
|
/* were any services found? */
|
||||||
if (nchars < 1)
|
if (nchars < 1)
|
||||||
{
|
{
|
||||||
puts ("No Cygwin services found.\n");
|
puts ("No Cygwin services found.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* In verbose mode, just run 'cygrunsrv --list --verbose' and copy the
|
||||||
/* In verbose mode, just run 'cygrunsrv --list --verbose' and copy the
|
|
||||||
entire output. Otherwise run 'cygrunsrv --query' for each service. */
|
entire output. Otherwise run 'cygrunsrv --query' for each service. */
|
||||||
for (char *srv = strtok (buf, "\n"); srv; srv = strtok (NULL, "\n"))
|
for (char *srv = strtok (buf, "\n"); srv; srv = strtok (NULL, "\n"))
|
||||||
{
|
{
|
||||||
if (verbose)
|
if (verbose)
|
||||||
snprintf (buf2, sizeof (buf2), "%s --list --verbose", cygrunsrv);
|
snprintf (buf2, sizeof (buf2), "%s --list --verbose", cygrunsrv);
|
||||||
else
|
else
|
||||||
snprintf (buf2, sizeof (buf2), "%s --query %s", cygrunsrv, srv);
|
snprintf (buf2, sizeof (buf2), "%s --query %s", cygrunsrv, srv);
|
||||||
if ((f = popen (buf2, "rt")) == NULL)
|
if ((f = popen (buf2, "rt")) == NULL)
|
||||||
{
|
{
|
||||||
printf ("Failed to execute '%s', skipping services check.\n", buf2);
|
printf ("Failed to execute '%s', skipping services check.\n", buf2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* copy output to stdout */
|
/* copy output to stdout */
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
nchars = fread ((void *)buf2, 1, sizeof (buf2), f);
|
nchars = fread ((void *)buf2, 1, sizeof (buf2), f);
|
||||||
fwrite ((void *)buf2, 1, nchars, stdout);
|
fwrite ((void *)buf2, 1, nchars, stdout);
|
||||||
}
|
}
|
||||||
while (!feof (f) && !ferror (f));
|
while (!feof (f) && !ferror (f));
|
||||||
pclose (f);
|
pclose (f);
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1552,15 +1551,15 @@ load_cygwin (int& argc, char **&argv)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
char **av = (char **) cygwin_internal (CW_ARGV);
|
char **av = (char **) cygwin_internal (CW_ARGV);
|
||||||
if (av)
|
if (av && ((DWORD) av != (DWORD) -1))
|
||||||
for (argc = 0, argv = av; *av; av++)
|
for (argc = 0, argv = av; *av; av++)
|
||||||
argc++;
|
argc++;
|
||||||
|
|
||||||
char **envp = (char **) cygwin_internal (CW_ENVP);
|
char **envp = (char **) cygwin_internal (CW_ENVP);
|
||||||
if (envp)
|
if (envp && ((DWORD) envp != (DWORD) -1))
|
||||||
{
|
{
|
||||||
/* Store path and revert to this value, otherwise path gets overwritten
|
/* Store path and revert to this value, otherwise path gets overwritten
|
||||||
by the POSIXy Cygwin variation, which breaks cygcheck.
|
by the POSIXy Cygwin variation, which breaks cygcheck.
|
||||||
Another approach would be to use the Cygwin PATH and convert it to
|
Another approach would be to use the Cygwin PATH and convert it to
|
||||||
Win32 again. */
|
Win32 again. */
|
||||||
char *path = NULL;
|
char *path = NULL;
|
||||||
@ -1570,7 +1569,7 @@ load_cygwin (int& argc, char **&argv)
|
|||||||
if (strncmp (*env, "PATH=", 5) == 0)
|
if (strncmp (*env, "PATH=", 5) == 0)
|
||||||
path = strdup (*env);
|
path = strdup (*env);
|
||||||
nuke (*env);
|
nuke (*env);
|
||||||
}
|
}
|
||||||
for (char **ev = envp; *ev; ev++)
|
for (char **ev = envp; *ev; ev++)
|
||||||
if (strncmp (*ev, "PATH=", 5) != 0)
|
if (strncmp (*ev, "PATH=", 5) != 0)
|
||||||
putenv (*ev);
|
putenv (*ev);
|
||||||
|
@ -909,7 +909,7 @@ main (int argc, char **argv)
|
|||||||
if (load_cygwin ())
|
if (load_cygwin ())
|
||||||
{
|
{
|
||||||
char **av = (char **) cygwin_internal (CW_ARGV);
|
char **av = (char **) cygwin_internal (CW_ARGV);
|
||||||
if (av)
|
if (av && (DWORD) av != (DWORD) -1)
|
||||||
for (argc = 0, argv = av; *av; av++)
|
for (argc = 0, argv = av; *av; av++)
|
||||||
argc++;
|
argc++;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user