Prefer $LOGNAME over $USER, since the latter is deprecated,
see environ(7).  Pointed out by millert@
Fall back to getlogin() before defaulting to "  ???".

Index: snake/snake.6
===================================================================
RCS file: /cvs/src/games/snake/snake.6,v
retrieving revision 1.12
diff -u -p -r1.12 snake.6
--- snake/snake.6       27 Nov 2015 09:37:56 -0000      1.12
+++ snake/snake.6       29 Nov 2015 13:39:21 -0000
@@ -116,7 +116,7 @@ To see who wastes time playing snake, ru
 .Fl s .
 .Sh ENVIRONMENT
 .Bl -tag -width Ds
-.It Ev USER
+.It Ev LOGNAME
 Name displayed in high score file.
 .El
 .Sh FILES
Index: snake/snake.c
===================================================================
RCS file: /cvs/src/games/snake/snake.c,v
retrieving revision 1.17
diff -u -p -r1.17 snake.c
--- snake/snake.c       27 Nov 2015 09:37:56 -0000      1.17
+++ snake/snake.c       29 Nov 2015 13:39:21 -0000
@@ -985,7 +985,7 @@ int
 readscores(int create)
 {
        const char      *home;
-       const char      *user;
+       const char      *name;
        const char      *modstr;
        int              modint;
        int              ret;
@@ -1019,13 +1019,17 @@ readscores(int create)
        if (ferror(sf))
                err(1, "error reading %s", scorepath);
 
-       user = getenv("USER");
-       if (user == NULL || *user == '\0')
-               user = "???";
+       name = getenv("LOGNAME");
+       if (name == NULL || *name == '\0')
+               name = getenv("USER");
+       if (name == NULL || *name == '\0')
+               name = getlogin();
+       if (name == NULL || *name == '\0')
+               name = "  ???";
 
        if (nscores > TOPN)
                nscores = TOPN;
-       strlcpy(scores[nscores].name, user, sizeof(scores[nscores].name));
+       strlcpy(scores[nscores].name, name, sizeof(scores[nscores].name));
        scores[nscores].score = 0;
 
        return 1;
Index: tetris/scores.c
===================================================================
RCS file: /cvs/src/games/tetris/scores.c,v
retrieving revision 1.15
diff -u -p -r1.15 scores.c
--- tetris/scores.c     26 Nov 2015 14:43:18 -0000      1.15
+++ tetris/scores.c     29 Nov 2015 13:39:21 -0000
@@ -217,10 +217,13 @@ thisuser(void)
 
        if (u[0])
                return (u);
-       p = getlogin();
-       if (p == NULL || *p == '\0') {
+       p = getenv("LOGNAME");
+       if (p == NULL || *p == '\0')
+               p = getenv("USER");
+       if (p == NULL || *p == '\0')
+               p = getlogin();
+       if (p == NULL || *p == '\0')
                p = "  ???";
-       }
        strlcpy(u, p, sizeof(u));
        return (u);
 }
Index: tetris/tetris.6
===================================================================
RCS file: /cvs/src/games/tetris/tetris.6,v
retrieving revision 1.18
diff -u -p -r1.18 tetris.6
--- tetris/tetris.6     25 Nov 2015 16:15:06 -0000      1.18
+++ tetris/tetris.6     29 Nov 2015 13:39:21 -0000
@@ -145,6 +145,11 @@ name, score, and how many points were sc
 Scores which are the highest on a given level
 are marked with asterisks
 .Dq * .
+.Sh ENVIRONMENT
+.Bl -tag -width Ds
+.It Ev LOGNAME
+Name displayed in high score file.
+.El
 .Sh FILES
 .Bl -tag -width $HOME/.tetris.scores
 .It Pa $HOME/.tetris.scores

Reply via email to