My little adventure of analyzing lib usage has already rooted out
authorErik Andersen <andersen@codepoet.org>
Mon, 1 May 2000 19:49:20 +0000 (19:49 -0000)
committerErik Andersen <andersen@codepoet.org>
Mon, 1 May 2000 19:49:20 +0000 (19:49 -0000)
a big "P" Policy violator -- logname was using getlogin(3), which uses
utmp under the hood.  We don't need no stinkin' utmp (and if we
are using tinylogin, it is unlikely to be useful trying).
 -Erik

TODO
coreutils/logname.c
logname.c

diff --git a/TODO b/TODO
index 8b4279d87a779143acce3186b56988c7c62aaf14..fade2e2494416269afcaab8fe793c9e67f29fc1f 100644 (file)
--- a/TODO
+++ b/TODO
@@ -44,6 +44,8 @@ It would be a very nice thing to reduce this list to an absolute minimum, and
 then create a microLibc to provide these functions.  There is no good reason
 for GNU libc to be so big.  I'm sure it can be a lot better.
 
+(BTW, this is more informative if BB_FEATURE_NFSMOUNT is turned off...)
+
 
 -----------------------
 
index 182f40ed2b959e55ca446c86011157141f401f3b..bde1752baa0e9a44bf216d2d840fe9baf1a116ad 100644 (file)
@@ -29,16 +29,16 @@ static const char logname_usage[] = "logname\n\n"
 
 extern int logname_main(int argc, char **argv)
 {
-       char *cp;
+       char *user = xmalloc(9);
 
        if (argc > 1)
                usage(logname_usage);
 
-       cp = getlogin();
-       if (cp) {
-               puts(cp);
+       my_getpwuid(user, geteuid());
+       if (user) {
+               puts(user);
                exit(TRUE);
        }
-       fprintf(stderr, "%s: no login name\n", argv[0]);
+       fprintf(stderr, "no login name\n");
        exit(FALSE);
 }
index 182f40ed2b959e55ca446c86011157141f401f3b..bde1752baa0e9a44bf216d2d840fe9baf1a116ad 100644 (file)
--- a/logname.c
+++ b/logname.c
@@ -29,16 +29,16 @@ static const char logname_usage[] = "logname\n\n"
 
 extern int logname_main(int argc, char **argv)
 {
-       char *cp;
+       char *user = xmalloc(9);
 
        if (argc > 1)
                usage(logname_usage);
 
-       cp = getlogin();
-       if (cp) {
-               puts(cp);
+       my_getpwuid(user, geteuid());
+       if (user) {
+               puts(user);
                exit(TRUE);
        }
-       fprintf(stderr, "%s: no login name\n", argv[0]);
+       fprintf(stderr, "no login name\n");
        exit(FALSE);
 }