diff options
-rw-r--r-- | winsup/utils/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/utils/ps.cc | 27 |
2 files changed, 25 insertions, 7 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 932f9b7..9fb1ba6 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,5 +1,10 @@ 2002-05-29 Corinna Vinschen <corinna@vinschen.de> + * ps.cc (main): Use uid or uid32 member of struct external_pinfo + dependent of the value of the struct's version member. + +2002-05-29 Corinna Vinschen <corinna@vinschen.de> + * ps.cc (main): Change print format for uid to unsigned. Use uid32 member of struct external_pinfo instead of uid. diff --git a/winsup/utils/ps.cc b/winsup/utils/ps.cc index ec52a8d..6866ccb 100644 --- a/winsup/utils/ps.cc +++ b/winsup/utils/ps.cc @@ -325,8 +325,14 @@ main (int argc, char *argv[]) (p = (external_pinfo *) cygwin_internal (query, pid | CW_NEXTPID)); pid = p->pid) { - if (!aflag && p->uid32 != (__uid32_t) uid) - continue; + if (!aflag) + if (p->version >= EXTERNAL_PINFO_VERSION_32_BIT) + { + if (p->uid32 != (__uid32_t) uid) + continue; + } + else if (p->uid != uid) + continue; char status = ' '; if (p->process_state & PID_STOPPED) status = 'S'; @@ -349,7 +355,8 @@ main (int argc, char *argv[]) } else if (query == CW_GETPINFO_FULL) { - HANDLE h = OpenProcess (PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, p->dwProcessId); + HANDLE h = OpenProcess (PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, + FALSE, p->dwProcessId); if (!h) continue; HMODULE hm[1000]; @@ -370,19 +377,25 @@ main (int argc, char *argv[]) { struct passwd *pw; - if ((pw = getpwuid (p->uid32))) + if ((pw = getpwuid (p->version >= EXTERNAL_PINFO_VERSION_32_BIT ? + p->uid32 : p->uid))) strcpy (uname, pw->pw_name); else - sprintf (uname, "%u", (unsigned) p->uid32); + sprintf (uname, "%u", (unsigned) + (p->version >= EXTERNAL_PINFO_VERSION_32_BIT ? + p->uid32 : p->uid)); } if (sflag) printf (dfmt, p->pid, ttynam (p->ctty), start_time (p), pname); else if (fflag) - printf (ffmt, uname, p->pid, p->ppid, ttynam (p->ctty), start_time (p), pname); + printf (ffmt, uname, p->pid, p->ppid, ttynam (p->ctty), start_time (p), + pname); else if (lflag) printf (lfmt, status, p->pid, p->ppid, p->pgid, - p->dwProcessId, ttynam (p->ctty), p->uid32, start_time (p), pname); + p->dwProcessId, ttynam (p->ctty), + p->version >= EXTERNAL_PINFO_VERSION_32_BIT ? p->uid32 : p->uid, + start_time (p), pname); } (void) cygwin_internal (CW_UNLOCK_PINFO); |