Add 2012 to FSF copyright years for Emacs files
[bpt/emacs.git] / lib-src / update-game-score.c
index fdb5a44..a32bd6d 100644 (file)
@@ -1,7 +1,6 @@
 /* update-game-score.c --- Update a score file
 
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-  Free Software Foundation, Inc.
+Copyright (C) 2002-2012  Free Software Foundation, Inc.
 
 Author: Colin Walters <walters@debian.org>
 
@@ -34,16 +33,11 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <config.h>
 
-#ifdef HAVE_UNISTD_H
 #include <unistd.h>
-#endif
 #include <errno.h>
-#ifdef HAVE_STRING_H
+#include <limits.h>
 #include <string.h>
-#endif
-#ifdef HAVE_STDLIB_H
 #include <stdlib.h>
-#endif
 #include <stdio.h>
 #include <time.h>
 #include <pwd.h>
@@ -51,16 +45,13 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #ifdef HAVE_FCNTL_H
 #include <fcntl.h>
 #endif
-#ifdef STDC_HEADERS
-#include <stdarg.h>
-#endif
 #include <sys/stat.h>
 
 /* Needed for SunOS4, for instance.  */
 extern char *optarg;
 extern int optind, opterr;
 
-int usage (int err) NO_RETURN;
+static int usage (int err) NO_RETURN;
 
 #define MAX_ATTEMPTS 5
 #define MAX_SCORES 200
@@ -71,10 +62,10 @@ int usage (int err) NO_RETURN;
 #define difftime(t1, t0) (double)((t1) - (t0))
 #endif
 
-int
+static int
 usage (int err)
 {
-  fprintf (stdout, "Usage: update-game-score [-m MAX ] [ -r ] game/scorefile SCORE DATA\n");
+  fprintf (stdout, "Usage: update-game-score [-m MAX] [-r] [-d DIR] game/scorefile SCORE DATA\n");
   fprintf (stdout, "       update-game-score -h\n");
   fprintf (stdout, " -h\t\tDisplay this help.\n");
   fprintf (stdout, " -m MAX\t\tLimit the maximum number of scores to MAX.\n");
@@ -83,8 +74,8 @@ usage (int err)
   exit (err);
 }
 
-int lock_file (const char *filename, void **state);
-int unlock_file (const char *filename, void *state);
+static int lock_file (const char *filename, void **state);
+static int unlock_file (const char *filename, void *state);
 
 struct score_entry
 {
@@ -93,31 +84,30 @@ struct score_entry
   char *data;
 };
 
-int read_scores (const char *filename, struct score_entry **scores,
-                 int *count);
-int push_score (struct score_entry **scores, int *count,
-                int newscore, char *username, char *newdata);
-void sort_scores (struct score_entry *scores, int count, int reverse);
-int write_scores (const char *filename, const struct score_entry *scores,
-                  int count);
+static int read_scores (const char *filename, struct score_entry **scores,
+                       int *count);
+static int push_score (struct score_entry **scores, int *count,
+                      int newscore, char *username, char *newdata);
+static void sort_scores (struct score_entry *scores, int count, int reverse);
+static int write_scores (const char *filename,
+                        const struct score_entry *scores, int count);
 
-void lose (const char *msg) NO_RETURN;
+static void lose (const char *msg) NO_RETURN;
 
-void
+static void
 lose (const char *msg)
 {
   fprintf (stderr, "%s\n", msg);
   exit (EXIT_FAILURE);
 }
 
-void lose_syserr (const char *msg) NO_RETURN;
+static void lose_syserr (const char *msg) NO_RETURN;
 
 /* Taken from sysdep.c.  */
 #ifndef HAVE_STRERROR
 #ifndef WINDOWSNT
 char *
-strerror (errnum)
-     int errnum;
+strerror (int errnum)
 {
   extern char *sys_errlist[];
   extern int sys_nerr;
@@ -129,35 +119,29 @@ strerror (errnum)
 #endif /* not WINDOWSNT */
 #endif /* ! HAVE_STRERROR */
 
-void
+static void
 lose_syserr (const char *msg)
 {
   fprintf (stderr, "%s: %s\n", msg, strerror (errno));
   exit (EXIT_FAILURE);
 }
 
-char *
+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;
 }
 
-const char *
+static const char *
 get_prefix (int running_suid, const char *user_prefix)
 {
   if (!running_suid && user_prefix == NULL)
@@ -245,13 +229,15 @@ main (int argc, char **argv)
   push_score (&scores, &scorecount, newscore, user_id, newdata);
   sort_scores (scores, scorecount, reverse);
   /* Limit the number of scores.  If we're using reverse sorting, then
-     we should increment the beginning of the array, to skip over the
-     *smallest* scores.  Otherwise, we just decrement the number of
-     scores, since the smallest will be at the end. */
+     also increment the beginning of the array, to skip over the
+     *smallest* scores.  Otherwise, just decrementing the number of
+     scores suffices, since the smallest is at the end. */
   if (scorecount > MAX_SCORES)
-    scorecount -= (scorecount - MAX_SCORES);
-  if (reverse)
-    scores += (scorecount - MAX_SCORES);
+    {
+      if (reverse)
+       scores += (scorecount - MAX_SCORES);
+      scorecount = MAX_SCORES;
+    }
   if (write_scores (scorefile, scores, scorecount) < 0)
     {
       unlock_file (scorefile, lockstate);
@@ -261,7 +247,7 @@ main (int argc, char **argv)
   exit (EXIT_SUCCESS);
 }
 
-int
+static int
 read_score (FILE *f, struct score_entry *score)
 {
   int c;
@@ -345,7 +331,7 @@ read_score (FILE *f, struct score_entry *score)
   return 0;
 }
 
-int
+static int
 read_scores (const char *filename, struct score_entry **scores, int *count)
 {
   int readval, scorecount, cursize;
@@ -360,7 +346,7 @@ read_scores (const char *filename, struct score_entry **scores, int *count)
     return -1;
   while ((readval = read_score (f, &ret[scorecount])) == 0)
     {
-      /* We encoutered an error */
+      /* We encountered an error.  */
       if (readval < 0)
        return -1;
       scorecount++;
@@ -378,7 +364,7 @@ read_scores (const char *filename, struct score_entry **scores, int *count)
   return 0;
 }
 
-int
+static int
 score_compare (const void *a, const void *b)
 {
   const struct score_entry *sa = (const struct score_entry *) a;
@@ -386,7 +372,7 @@ score_compare (const void *a, const void *b)
   return (sb->score > sa->score) - (sb->score < sa->score);
 }
 
-int
+static int
 score_compare_reverse (const void *a, const void *b)
 {
   const struct score_entry *sa = (const struct score_entry *) a;
@@ -410,14 +396,14 @@ push_score (struct score_entry **scores, int *count, int newscore, char *usernam
   return 0;
 }
 
-void
+static void
 sort_scores (struct score_entry *scores, int count, int reverse)
 {
   qsort (scores, count, sizeof (struct score_entry),
        reverse ? score_compare_reverse : score_compare);
 }
 
-int
+static int
 write_scores (const char *filename, const struct score_entry *scores, int count)
 {
   FILE *f;
@@ -446,7 +432,7 @@ write_scores (const char *filename, const struct score_entry *scores, int count)
   return 0;
 }
 
-int
+static int
 lock_file (const char *filename, void **state)
 {
   int fd;
@@ -487,7 +473,7 @@ lock_file (const char *filename, void **state)
   return 0;
 }
 
-int
+static int
 unlock_file (const char *filename, void *state)
 {
   char *lockpath = (char *) state;
@@ -498,7 +484,5 @@ unlock_file (const char *filename, void *state)
   return ret;
 }
 
-/* arch-tag: 2bf5c52e-4beb-463a-954e-c58b9c64736b
-   (do not change this comment) */
 
 /* update-game-score.c ends here */