From 95c5099f29e946da0c211b9f0d50a29cb8245887 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Fri, 27 Jan 2012 06:49:28 -0600 Subject: Add id command from Tim Bird. --- toys/id.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 toys/id.c (limited to 'toys/id.c') diff --git a/toys/id.c b/toys/id.c new file mode 100644 index 00000000..f051189b --- /dev/null +++ b/toys/id.c @@ -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 + * + * 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); +} -- cgit v1.2.3