]> git.eshelyaron.com Git - emacs.git/commitdiff
* update-game-score.c: Include <limits.h>
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 28 Aug 2011 23:59:14 +0000 (16:59 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 28 Aug 2011 23:59:14 +0000 (16:59 -0700)
(get_user_id): Do not assume uid fits in 'int'.  Simplify.

lib-src/ChangeLog
lib-src/update-game-score.c

index ca08ece7c39a8ecebdaecd3b4f2d90734e1b3200..a888a8cdd1c0d70dd4d98c62be98c49859110030 100644 (file)
@@ -30,6 +30,9 @@
        in 'int'.  Instead, put the possibly-long file name into the
        output of pfatal_with_name.
 
+       * update-game-score.c: Include <limits.h>
+       (get_user_id): Do not assume uid fits in 'int'.  Simplify.
+
 2011-07-28  Paul Eggert  <eggert@cs.ucla.edu>
 
        Assume freestanding C89 headers, string.h, stdlib.h.
index 2a89379aefe1bd1d8e9c6609fc2dccb0125e29bf..9fba51a33de30d3e8fdb819475a60dd6ded8a62a 100644 (file)
@@ -35,6 +35,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <unistd.h>
 #include <errno.h>
+#include <limits.h>
 #include <string.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -128,19 +129,13 @@ lose_syserr (const char *msg)
 static char *
 get_user_id (void)
 {
-  char *name;
   struct passwd *buf = getpwuid (getuid ());
   if (!buf)
     {
-      int count = 1;
-      int uid = (int) getuid ();
-      int tuid = uid;
-      while (tuid /= 10)
-       count++;
-      name = malloc (count+1);
-      if (!name)
-       return NULL;
-      sprintf (name, "%d", uid);
+      long uid = getuid ();
+      char *name = malloc (sizeof uid * CHAR_BIT / 3 + 1);
+      if (name)
+       sprintf (name, "%ld", uid);
       return name;
     }
   return buf->pw_name;