From 7701a023ff6e5861b0d875551070fa4df3e2525c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 10 Jun 2015 11:07:27 +0200 Subject: [PATCH] Drop Windows 2000 considerations in ps, fix uid field length * ps.cc (main): Widen UID field in long format to accommodate longer UIDs since Cygwin 1.7.34. Remove Windows 2000 considerations. Fix comments accordingly. Signed-off-by: Corinna Vinschen --- winsup/utils/ChangeLog | 6 ++++++ winsup/utils/ps.cc | 45 ++++++++++++++---------------------------- 2 files changed, 21 insertions(+), 30 deletions(-) diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 70fef4ae7..f9a25b210 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,3 +1,9 @@ +2015-06-10 Corinna Vinschen + + * ps.cc (main): Widen UID field in long format to accommodate longer + UIDs since Cygwin 1.7.34. Remove Windows 2000 considerations. Fix + comments accordingly. + 2015-06-08 Corinna Vinschen * path.cc (from_fstab_line): Don't convert slashes to backslashes for diff --git a/winsup/utils/ps.cc b/winsup/utils/ps.cc index 952b63ee3..081fd6e8f 100644 --- a/winsup/utils/ps.cc +++ b/winsup/utils/ps.cc @@ -158,8 +158,8 @@ main (int argc, char *argv[]) const char *dfmt = "%7d%4s%10s %s\n"; const char *ftitle = " UID PID PPID TTY STIME COMMAND\n"; const char *ffmt = "%8.8s%8d%8d%4s%10s %s\n"; - const char *ltitle = " PID PPID PGID WINPID TTY UID STIME COMMAND\n"; - const char *lfmt = "%c %7d %7d %7d %10u %4s %4u %8s %s\n"; + const char *ltitle = " PID PPID PGID WINPID TTY UID STIME COMMAND\n"; + const char *lfmt = "%c %7d %7d %7d %10u %4s %8u %8s %s\n"; char ch; PUNICODE_STRING uni = (PUNICODE_STRING) unicode_buf; void *drive_map = NULL; @@ -259,27 +259,15 @@ main (int argc, char *argv[]) version.dwOSVersionInfoSize = sizeof version; GetVersionEx (&version); if (version.dwMajorVersion <= 5) /* pre-Vista */ - { - proc_access = PROCESS_QUERY_INFORMATION; - if (version.dwMinorVersion < 1) /* Windows 2000 */ - proc_access |= PROCESS_VM_READ; - else - { - } - } + proc_access = PROCESS_QUERY_INFORMATION; - /* Except on Windows 2000, fetch an opaque drive mapping object from the - Cygwin DLL. This is used to map NT device paths to Win32 paths. */ - if (!(proc_access & PROCESS_VM_READ)) - { - drive_map = (void *) cygwin_internal (CW_ALLOC_DRIVE_MAP); - /* Check old Cygwin version. */ - if (drive_map == (void *) -1) - drive_map = NULL; - /* Allow fallback to GetModuleFileNameEx for post-W2K. */ - if (!drive_map) - proc_access = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ; - } + drive_map = (void *) cygwin_internal (CW_ALLOC_DRIVE_MAP); + /* Check old Cygwin version. */ + if (drive_map == (void *) -1) + drive_map = NULL; + /* Allow fallback to GetModuleFileNameEx. */ + if (!drive_map) + proc_access = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ; } for (int pid = 0; @@ -332,9 +320,9 @@ main (int argc, char *argv[]) if (!h) continue; /* We use NtQueryInformationProcess in the first place, because - GetModuleFileNameEx does not work on 64 bit systems when trying + GetModuleFileNameEx does not work under WOW64 when trying to fetch module names of 64 bit processes. */ - if (!(proc_access & PROCESS_VM_READ)) /* Windows 2000 */ + if (!(proc_access & PROCESS_VM_READ)) { status = NtQueryInformationProcess (h, ProcessImageFileName, uni, sizeof unicode_buf, NULL); @@ -358,12 +346,9 @@ main (int argc, char *argv[]) } } } - else - { - if (GetModuleFileNameExW (h, NULL, (PWCHAR) unicode_buf, - NT_MAX_PATH)) - win32path = (wchar_t *) unicode_buf; - } + else if (GetModuleFileNameExW (h, NULL, (PWCHAR) unicode_buf, + NT_MAX_PATH)) + win32path = (wchar_t *) unicode_buf; if (win32path) wcstombs (pname, win32path, sizeof pname); else