diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2011-08-28 16:59:14 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2011-08-28 16:59:14 -0700 |
commit | 0c6d656d269f84c83c483057eac6081eddfd33a0 (patch) | |
tree | 99a3d309b3fbb6572e3cb65c8402cab635b92092 /lib-src/update-game-score.c | |
parent | 644a0faa36ad8c1e251d198c2bc69f17c8bdb83a (diff) | |
download | emacs-0c6d656d269f84c83c483057eac6081eddfd33a0.tar.gz |
* update-game-score.c: Include <limits.h>
(get_user_id): Do not assume uid fits in 'int'. Simplify.
Diffstat (limited to 'lib-src/update-game-score.c')
-rw-r--r-- | lib-src/update-game-score.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/lib-src/update-game-score.c b/lib-src/update-game-score.c index 2a89379aefe..9fba51a33de 100644 --- a/lib-src/update-game-score.c +++ b/lib-src/update-game-score.c @@ -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; |