From c05bcf387474ddd2f5cb777bf1a88be791c8e1a1 Mon Sep 17 00:00:00 2001 From: corinna Date: Wed, 29 May 2002 20:10:27 +0000 Subject: [PATCH] * ps.cc (main): Use uid or uid32 member of struct external_pinfo dependent of the value of the struct's version member. --- winsup/utils/ChangeLog | 5 +++++ winsup/utils/ps.cc | 27 ++++++++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 932f9b7e47..9fb1ba6006 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,5 +1,10 @@ 2002-05-29 Corinna Vinschen + * 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 + * 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 ec52a8d31b..6866ccb62c 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); -- 2.11.0