Add id command from Tim Bird.
authorRob Landley <rob@landley.net>
Fri, 27 Jan 2012 12:49:28 +0000 (06:49 -0600)
committerRob Landley <rob@landley.net>
Fri, 27 Jan 2012 12:49:28 +0000 (06:49 -0600)
toys/id.c [new file with mode: 0644]

diff --git a/toys/id.c b/toys/id.c
new file mode 100644 (file)
index 0000000..f051189
--- /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 <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);
+}