* cygcheck.cc (cygwin_info): New function. Scans DLL for Cygwin version info.

(dll_info): Add path parameter for checking "cygwin1.dll".
(track_down): Accomodate additional parameter for dll_info.
(ls): Ditto.
(dump_sys_info): Always print cygwin1.dll last.
This commit is contained in:
Christopher Faylor 2000-06-25 03:18:54 +00:00
parent bb34ad9674
commit 749bdbe92a
2 changed files with 68 additions and 4 deletions

View File

@ -1,3 +1,12 @@
Sat Jun 24 23:16:33 2000 Christopher Faylor <cgf@cygnus.com>
* cygcheck.cc (cygwin_info): New function. Scans DLL for Cygwin
version info.
(dll_info): Add path parameter for checking "cygwin1.dll".
(track_down): Accomodate additional parameter for dll_info.
(ls): Ditto.
(dump_sys_info): Always print cygwin1.dll last.
2000-06-07 Kazuhiro Fujieda <fujieda@jaist.ac.jp>
mount.cc (error): New function to report an error and exit.

View File

@ -272,8 +272,50 @@ struct ImpDirectory
void track_down (char *file, char *suffix, int lvl);
#define CYGPREFIX (sizeof ("%%% Cygwin ") - 1)
static void
cygwin_info (HANDLE h)
{
char *buf, *bufend;
char *major, *minor;
const char *hello = " Cygwin DLL version info:\n";
DWORD size = GetFileSize (h, NULL);
DWORD n;
if (size == 0xffffffff)
return;
buf = (char *) malloc (size);
if (!buf)
return;
(void) SetFilePointer (h, 0, NULL, FILE_BEGIN);
if (!ReadFile (h, buf, size, &n, NULL))
return;
bufend = buf + size;
major = minor = NULL;
while (buf < bufend)
if ((buf = (char *) memchr (buf, '%', bufend - buf)) == NULL)
break;
else if (strncmp ("%%% Cygwin ", buf, CYGPREFIX) != 0)
buf++;
else
{
char *p = strchr (buf += CYGPREFIX, '\n');
fputs (hello, stdout);
fputs (" ", stdout);
fwrite (buf, 1 + p - buf, 1, stdout);
hello = "";
}
if (!*hello)
puts ("");
return;
}
void
dll_info (HANDLE fh, int lvl, int recurse)
dll_info (const char *path, HANDLE fh, int lvl, int recurse)
{
DWORD junk;
int i;
@ -342,6 +384,8 @@ dll_info (HANDLE fh, int lvl, int recurse)
}
}
}
if (strstr (path, "\\cygwin1.dll"))
cygwin_info (fh);
}
void
@ -400,7 +444,7 @@ track_down (char *file, char *suffix, int lvl)
d->state = DID_ACTIVE;
dll_info (fh, lvl, 1);
dll_info (path, fh, lvl, 1);
d->state = DID_INACTIVE;
CloseHandle (fh);
}
@ -418,7 +462,7 @@ ls (char *f)
(((int) info.nFileSizeLow) + 512) / 1024,
systime.wYear, systime.wMonth, systime.wDay,
f);
dll_info (h, 16, 0);
dll_info (f, h, 16, 0);
CloseHandle (h);
}
@ -566,6 +610,7 @@ dump_sysinfo ()
int i, j;
char tmp[4000];
time_t now;
char *found_cygwin_dll;
printf ("\nCygnus Win95/NT Configuration Diagnostics\n");
time (&now);
@ -837,6 +882,7 @@ dump_sysinfo ()
sprintf (tmp, "%s/*.*", paths[i]);
HANDLE ff = FindFirstFile (tmp, &ffinfo);
int found = (ff != INVALID_HANDLE_VALUE);
found_cygwin_dll = NULL;
while (found)
{
char *f = ffinfo.cFileName;
@ -845,11 +891,20 @@ dump_sysinfo ()
if (strncasecmp (f, "cyg", 3) == 0)
{
sprintf (tmp, "%s\\%s", paths[i], f);
ls (tmp);
if (strcasecmp (f, "cygwin1.dll") == 0)
found_cygwin_dll = strdup (tmp);
else
ls (tmp);
}
}
found = FindNextFile (ff, &ffinfo);
}
if (found_cygwin_dll)
{
ls (found_cygwin_dll);
free (found_cygwin_dll);
}
FindClose (ff);
}
}