changeset 1315:0f42d83199a9 draft

logname and whoami are the same as id -un, so merge them. Since the starting letters are greater than those for 'id' or 'groups', we cn just check if the first letter is greater than 'i'.
author Isaac Dunham <ibid.ag@gmail.com>
date Sun, 25 May 2014 11:46:58 -0500
parents bc618abf4fb2
children 160ea67a200d
files toys/other/whoami.c toys/posix/id.c toys/posix/logname.c
diffstat 3 files changed, 12 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
--- a/toys/other/whoami.c	Sat May 24 22:40:41 2014 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/* whoami.c - Print effective user name
- *
- * Copyright 2012 Georgi Chorbadzhiyski <georgi@unixsol.org>
-
-USE_WHOAMI(NEWTOY(whoami, NULL, TOYFLAG_USR|TOYFLAG_BIN))
-
-config WHOAMI
-  bool "whoami"
-  default y
-  help
-    usage: whoami
-
-    Print effective user name.
-*/
-
-#include "toys.h"
-
-void whoami_main(void)
-{
-  struct passwd *pw = getpwuid(geteuid());
-
-  if (!pw) {
-    perror("getpwuid");
-    toys.exitval = 1;
-    return;
-  }
-
-  xputs(pw->pw_name);
-}
--- a/toys/posix/id.c	Sat May 24 22:40:41 2014 -0500
+++ b/toys/posix/id.c	Sun May 25 11:46:58 2014 -0500
@@ -8,6 +8,8 @@
 
 USE_ID(NEWTOY(id, ">1nGgru[!Ggu]", TOYFLAG_BIN))
 USE_ID_GROUPS(OLDTOY(groups, id, NULL, TOYFLAG_USR|TOYFLAG_BIN))
+USE_ID_LOGNAME(OLDTOY(logname, id, ">0", TOYFLAG_BIN))
+USE_ID_LOGNAME(OLDTOY(whoami, id, ">0", TOYFLAG_BIN))
 
 config ID
   bool "id"
@@ -32,6 +34,15 @@
 
     Print the groups a user is in.
 
+config ID_LOGNAME
+  bool "logname"
+  default y
+  depends on ID
+  help
+    usage: logname
+
+    Print the current user name.
+
 */
 
 #define FOR_id
@@ -116,6 +127,7 @@
 
 void id_main(void)
 {
+  if (toys.which->name[0] > 'i') toys.optflags = (FLAG_u | FLAG_n);
   if (toys.optc) while(*toys.optargs) do_id(*toys.optargs++);
   else do_id(NULL);
 }
--- a/toys/posix/logname.c	Sat May 24 22:40:41 2014 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/* logname.c - Print user's login name.
- *
- * Copyright 2012 Elie De Brauwer <eliedebrauwer@gmail.com>
- *
- * See http://opengroup.org/onlinepubs/9699919799/utilities/logname.html
-
-USE_LOGNAME(NEWTOY(logname, ">0", TOYFLAG_BIN))
-
-config LOGNAME
-  bool "logname"
-  default y
-  help
-    usage: logname
-
-    Prints the calling user's name or an error when this cannot be
-    determined.
-*/
-
-#include "toys.h"
-
-void logname_main(void)
-{
-  if (getlogin_r(toybuf, sizeof(toybuf))) error_exit("no login name");
-  xputs(toybuf);
-}