From: Lennart Poettering Date: Mon, 17 Sep 2012 23:53:15 +0000 (+0200) Subject: util: introduce get_process_gid() X-Git-Tag: v190~43 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;ds=sidebyside;h=901c3d0d85628e6a4708bc9748766029cf5c7f97;p=elogind.git util: introduce get_process_gid() --- diff --git a/src/shared/util.c b/src/shared/util.c index 20e5faf34..59c1417b4 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -1108,7 +1108,7 @@ int get_process_exe(pid_t pid, char **name) { return r; } -int get_process_uid(pid_t pid, uid_t *uid) { +static int get_process_id(pid_t pid, const char *field, uid_t *uid) { char *p; FILE *f; int r; @@ -1140,8 +1140,8 @@ int get_process_uid(pid_t pid, uid_t *uid) { l = strstrip(line); - if (startswith(l, "Uid:")) { - l += 4; + if (startswith(l, field)) { + l += strlen(field); l += strspn(l, WHITESPACE); l[strcspn(l, WHITESPACE)] = 0; @@ -1159,6 +1159,14 @@ finish: return r; } +int get_process_uid(pid_t pid, uid_t *uid) { + return get_process_id(pid, "Uid:", uid); +} + +int get_process_gid(pid_t pid, gid_t *gid) { + return get_process_id(pid, "Gid:", gid); +} + char *strnappend(const char *s, const char *suffix, size_t b) { size_t a; char *r; diff --git a/src/shared/util.h b/src/shared/util.h index 71b5c52c4..2429339f5 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -246,6 +246,7 @@ int get_process_comm(pid_t pid, char **name); int get_process_cmdline(pid_t pid, size_t max_length, bool comm_fallback, char **line); int get_process_exe(pid_t pid, char **name); int get_process_uid(pid_t pid, uid_t *uid); +int get_process_gid(pid_t pid, gid_t *gid); char hexchar(int x); int unhexchar(char c);