* Makefile.in (cygcheck.o): Fix so that actual mingw include files are used.

* cygcheck.cc (find_on_path): Translate from cygwin path when qualified path
name found.
(pretty_id): New function.  Dump output of id command.
(dump_sysinfo): Call pretty_id for CYGWIN=ntsec and CYGWIN=nontsec cases.
This commit is contained in:
Christopher Faylor 2003-03-01 03:38:19 +00:00
parent 005c3065eb
commit dbc49afd52
3 changed files with 94 additions and 5 deletions

View File

@ -1,3 +1,12 @@
2003-02-28 Christopher Faylor <cgf@redhat.com>
* Makefile.in (cygcheck.o): Fix so that actual mingw include files are
used.
* cygcheck.cc (find_on_path): Translate from cygwin path when qualified
path name found.
(pretty_id): New function. Dump output of id command.
(dump_sysinfo): Call pretty_id for CYGWIN=ntsec and CYGWIN=nontsec cases.
2003-02-12 Christopher Faylor <cgf@redhat.com>
* cygpath.cc (doit): Allocate more space for non-path filename.

View File

@ -147,10 +147,10 @@ endif
cygcheck.o: cygcheck.cc
ifdef VERBOSE
${filter-out -I$(newlib_source)/%,$(COMPILE_CXX)} $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) -I$(updir) $<
${CXX} $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) -I$(updir) $<
else
@echo $(CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) ... $^;\
${filter-out -I$(newlib_source)/%,$(COMPILE_CXX)} $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) -I$(updir) $<
${CXX} $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) -I$(updir) $<
endif
strace.o: strace.cc

View File

@ -1,6 +1,6 @@
/* cygcheck.cc
Copyright 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
Copyright 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc.
This file is part of Cygwin.
@ -13,7 +13,9 @@
#include <string.h>
#include <sys/time.h>
#include <ctype.h>
#include <io.h>
#include <windows.h>
#include "path.h"
#include "cygwin/include/sys/cygwin.h"
#include "cygwin/include/mntent.h"
#include "cygwin/include/getopt.h"
@ -171,7 +173,7 @@ find_on_path (char *file, char *default_extension,
static char rv[4000];
char tmp[4000], *ptr = rv;
if (file == NULL)
if (!file)
{
keyeprint ("find_on_path: NULL pointer for file");
return 0;
@ -184,7 +186,7 @@ find_on_path (char *file, char *default_extension,
}
if (strchr (file, ':') || strchr (file, '\\') || strchr (file, '/'))
return file;
return cygpath (file, NULL);
if (strchr (file, '.'))
default_extension = (char *) "";
@ -759,6 +761,74 @@ scan_registry (RegInfo * prev, HKEY hKey, char *name, int cygnus)
free (subkey_name);
}
void
pretty_id (const char *s, char *cygwin, size_t cyglen)
{
char *groups[16384];
strcpy (cygwin + cyglen++, " ");
strcpy (cygwin + cyglen, s);
putenv (cygwin);
char *id = cygpath ("/bin/id.exe", NULL);
for (char *p = id; p = strchr (p, '/'); p++)
*p = '\\';
if (access (id, X_OK))
{
fprintf (stderr, "`id' program not found\n");
exit (1);
}
FILE *f = popen (id, "rt");
char buf[16384];
fgets (buf, sizeof (buf), f);
char *uid = strtok (buf, " ") + sizeof ("uid=") - 1;
char *gid = strtok (NULL, " ") + sizeof ("gid=") - 1;
char **ng;
size_t sz = 0;
for (ng = groups; (*ng = strtok (NULL, ",")); ng++)
{
char *p = strchr (*ng, '\n');
if (p)
*p = '\0';
if (ng == groups)
*ng += sizeof ("groups=") - 1;
size_t len = strlen (*ng);
if (sz < len)
sz = len;
}
printf ("\n%s output (%s)\n", id, s);
int szmaybe = sizeof ("UID: ") + strlen (uid) - 1;
if (sz < szmaybe)
sz = szmaybe;
sz += 1;
int n = 80 / (int) sz;
sz = -sz;
ng[0] += sizeof ("groups=") - 1;
printf ("UID: %*s GID: %s\n", sz + (sizeof ("UID: ") - 1), uid, gid);
int i = 0;
for (char **g = groups; g < ng; g++)
{
if (i < n)
i++;
else
{
i = 0;
puts ("");
}
if (++i <= n && g != (ng - 1))
printf ("%*s ", sz, *g);
else
{
printf ("%s\n", *g);
i = 0;
}
}
}
static void
dump_sysinfo ()
{
@ -878,6 +948,16 @@ dump_sysinfo ()
s = e + 1;
}
fflush (stdout);
char *cygwin = getenv ("CYGWIN") ?: const_cast <char *> ("CYGWIN=");
size_t cyglen = strlen (cygwin);
cygwin = strcpy ((char *) malloc (cyglen + sizeof (" nontsec")), cygwin);
pretty_id ("nontsec", cygwin, cyglen);
pretty_id ("ntsec", cygwin, cyglen);
cygwin[cyglen] = 0;
putenv (cygwin);
if (!GetSystemDirectory (tmp, 4000))
keyeprint ("dump_sysinfo: GetSystemDirectory()");
printf ("\nSysDir: %s\n", tmp);