Mercurial > hg > toybox
changeset 413:12add511705e
Add id command from Tim Bird.
author | Rob Landley <rob@landley.net> |
---|---|
date | Fri, 27 Jan 2012 06:49:28 -0600 |
parents | 2b521c791e4e |
children | 9204821e6b95 |
files | toys/id.c |
diffstat | 1 files changed, 56 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toys/id.c Fri Jan 27 06:49:28 2012 -0600 @@ -0,0 +1,56 @@ +/* vi: set sw=4 ts=4: + * + * id.c - print real and effective user and group IDs + * + * Copyright 2012 Sony Network Entertainment, Inc. + * + * by Tim Bird <tim.bird@am.sony.com> + * + * See http://www.opengroup.org/onlinepubs/009695399/utilities/id.html + +USE_ID(NEWTOY(id, "gru", TOYFLAG_BIN)) + +config ID + bool "id" + default y + help + usage: id [-gru] + + Print user and group ID. + + -g Show only the effective group ID + -r Show real ID instead of effective ID + -u Show only the effective user ID +*/ + +#include "toys.h" + +#define FLAG_g (1<<2) +#define FLAG_r (1<<1) +#define FLAG_u 1 + +void id_main(void) +{ + int flags = toys.optflags; + + uid_t uid; + gid_t gid; + + /* show effective, unless user specifies real */ + uid = geteuid(); + gid = getegid(); + + if (flags & FLAG_r) { + uid = getuid(); + gid = getgid(); + } + if (flags & FLAG_u) { + printf("%d\n", uid); + return; + } + if (flags & FLAG_g) { + printf("%d\n", gid); + return; + } + printf("%d %d\n", uid, gid); +}