]> code.delx.au - gnu-emacs/blobdiff - lib-src/make-docfile.c
Use 'inline', not 'INLINE'.
[gnu-emacs] / lib-src / make-docfile.c
index 93994c1ed3eefab31e600b97d2cd56d7b20c41d7..ba54202954b09e9ecd3e2e6292cf12389cd973cb 100644 (file)
@@ -66,12 +66,19 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
 #endif
 
-int scan_file (char *filename);
-int scan_lisp_file (const char *filename, const char *mode);
-int scan_c_file (char *filename, const char *mode);
-void fatal (const char *s1, const char *s2) NO_RETURN;
-void start_globals (void);
-void write_globals (void);
+/* Use this to suppress gcc's `...may be used before initialized' warnings. */
+#ifdef lint
+# define IF_LINT(Code) Code
+#else
+# define IF_LINT(Code) /* empty */
+#endif
+
+static int scan_file (char *filename);
+static int scan_lisp_file (const char *filename, const char *mode);
+static int scan_c_file (char *filename, const char *mode);
+static void fatal (const char *s1, const char *s2) NO_RETURN;
+static void start_globals (void);
+static void write_globals (void);
 
 #ifdef MSDOS
 /* s/msdos.h defines this as sys_chdir, but we're not linking with the
@@ -93,7 +100,7 @@ int generate_globals;
 /* Print error message.  `s1' is printf control string, `s2' is arg for it.  */
 
 /* VARARGS1 */
-void
+static void
 error (const char *s1, const char *s2)
 {
   fprintf (stderr, "%s: ", progname);
@@ -104,7 +111,7 @@ error (const char *s1, const char *s2)
 /* Print error message and exit.  */
 
 /* VARARGS1 */
-void
+static void
 fatal (const char *s1, const char *s2)
 {
   error (s1, s2);
@@ -113,7 +120,7 @@ fatal (const char *s1, const char *s2)
 
 /* Like malloc but get fatal error if memory is exhausted.  */
 
-void *
+static void *
 xmalloc (unsigned int size)
 {
   void *result = (void *) malloc (size);
@@ -124,7 +131,7 @@ xmalloc (unsigned int size)
 
 /* Like realloc but get fatal error if memory is exhausted.  */
 
-void *
+static void *
 xrealloc (void *arg, unsigned int size)
 {
   void *result = (void *) realloc (arg, size);
@@ -212,7 +219,7 @@ main (int argc, char **argv)
 }
 
 /* Add a source file name boundary marker in the output file.  */
-void
+static void
 put_filename (char *filename)
 {
   char *tmp;
@@ -231,7 +238,7 @@ put_filename (char *filename)
 /* Read file FILENAME and output its doc strings to outfile.  */
 /* Return 1 if file is not found, 0 if it is found.  */
 
-int
+static int
 scan_file (char *filename)
 {
 
@@ -247,7 +254,7 @@ scan_file (char *filename)
     return scan_c_file (filename, READ_TEXT);
 }
 
-void
+static void
 start_globals (void)
 {
   fprintf (outfile, "/* This file was auto-generated by make-docfile.  */\n");
@@ -255,7 +262,7 @@ start_globals (void)
   fprintf (outfile, "struct emacs_globals {\n");
 }
 \f
-char buf[128];
+static char input_buffer[128];
 
 /* Some state during the execution of `read_c_string_or_comment'.  */
 struct rcsoc_state
@@ -284,7 +291,7 @@ struct rcsoc_state
 /* Output CH to the file or buffer in STATE.  Any pending newlines or
    spaces are output first.  */
 
-static INLINE void
+static inline void
 put_char (int ch, struct rcsoc_state *state)
 {
   int out_ch;
@@ -388,14 +395,14 @@ scan_keyword_or_put_char (int ch, struct rcsoc_state *state)
    at the beginning of a line will be removed, and *SAW_USAGE set to
    true if any were encountered.  */
 
-int
+static int
 read_c_string_or_comment (FILE *infile, int printflag, int comment, int *saw_usage)
 {
   register int c;
   struct rcsoc_state state;
 
   state.in_file = infile;
-  state.buf_ptr = (printflag < 0 ? buf : 0);
+  state.buf_ptr = (printflag < 0 ? input_buffer : 0);
   state.out_file = (printflag > 0 ? outfile : 0);
   state.pending_spaces = 0;
   state.pending_newlines = 0;
@@ -476,12 +483,12 @@ read_c_string_or_comment (FILE *infile, int printflag, int comment, int *saw_usa
 /* Write to file OUT the argument names of function FUNC, whose text is in BUF.
    MINARGS and MAXARGS are the minimum and maximum number of arguments.  */
 
-void
+static void
 write_c_args (FILE *out, char *func, char *buf, int minargs, int maxargs)
 {
   register char *p;
   int in_ident = 0;
-  char *ident_start;
+  char *ident_start IF_LINT (= NULL);
   size_t ident_length = 0;
 
   fprintf (out, "(fn");
@@ -610,14 +617,14 @@ compare_globals (const void *a, const void *b)
   return strcmp (ga->name, gb->name);
 }
 
-void
+static void
 write_globals (void)
 {
   int i;
   qsort (globals, num_globals, sizeof (struct global), compare_globals);
   for (i = 0; i < num_globals; ++i)
     {
-      char *type;
+      char const *type;
 
       switch (globals[i].type)
        {
@@ -652,18 +659,14 @@ write_globals (void)
    Looks for DEFUN constructs such as are defined in ../src/lisp.h.
    Accepts any word starting DEF... so it finds DEFSIMPLE and DEFPRED.  */
 
-int
+static int
 scan_c_file (char *filename, const char *mode)
 {
   FILE *infile;
   register int c;
   register int commas;
-  register int defunflag;
-  register int defvarperbufferflag;
-  register int defvarflag;
   int minargs, maxargs;
   int extension = filename[strlen (filename) - 1];
-  enum global_type type;
 
   if (extension == 'o')
     filename[strlen (filename) - 1] = 'c';
@@ -693,6 +696,10 @@ scan_c_file (char *filename, const char *mode)
   while (!feof (infile))
     {
       int doc_keyword = 0;
+      int defunflag = 0;
+      int defvarperbufferflag = 0;
+      int defvarflag = 0;
+      enum global_type type = INVALID;
 
       if (c != '\n' && c != '\r')
        {
@@ -726,7 +733,6 @@ scan_c_file (char *filename, const char *mode)
            continue;
 
          defvarflag = 1;
-         defunflag = 0;
 
          c = getc (infile);
          defvarperbufferflag = (c == 'P');
@@ -738,8 +744,6 @@ scan_c_file (char *filename, const char *mode)
                type = LISP_OBJECT;
              else if (c == 'B')
                type = BOOLEAN;
-             else
-               type = INVALID;
            }
 
          c = getc (infile);
@@ -758,8 +762,6 @@ scan_c_file (char *filename, const char *mode)
            continue;
          c = getc (infile);
          defunflag = c == 'U';
-         defvarflag = 0;
-         defvarperbufferflag = 0;
        }
       else continue;
 
@@ -795,15 +797,15 @@ scan_c_file (char *filename, const char *mode)
          /* Read in the identifier.  */
          do
            {
-             buf[i++] = c;
+             input_buffer[i++] = c;
              c = getc (infile);
            }
          while (! (c == ',' || c == ' ' || c == '\t' ||
                    c == '\n' || c == '\r'));
-         buf[i] = '\0';
+         input_buffer[i] = '\0';
 
          name = xmalloc (i + 1);
-         memcpy (name, buf, i + 1);
+         memcpy (name, input_buffer, i + 1);
          add_global (type, name);
          continue;
        }
@@ -815,7 +817,7 @@ scan_c_file (char *filename, const char *mode)
       if (defunflag)
        commas = 5;
       else if (defvarperbufferflag)
-       commas = 2;
+       commas = 3;
       else if (defvarflag)
        commas = 1;
       else  /* For DEFSIMPLE and DEFPRED */
@@ -888,7 +890,7 @@ scan_c_file (char *filename, const char *mode)
 
          putc (037, outfile);
          putc (defvarflag ? 'V' : 'F', outfile);
-         fprintf (outfile, "%s\n", buf);
+         fprintf (outfile, "%s\n", input_buffer);
 
          if (comment)
            getc (infile);      /* Skip past `*' */
@@ -931,11 +933,12 @@ scan_c_file (char *filename, const char *mode)
              *p = '\0';
              /* Output them.  */
              fprintf (outfile, "\n\n");
-             write_c_args (outfile, buf, argbuf, minargs, maxargs);
+             write_c_args (outfile, input_buffer, argbuf, minargs, maxargs);
            }
          else if (defunflag && maxargs == -1 && !saw_usage)
            /* The DOC should provide the usage form.  */
-           fprintf (stderr, "Missing `usage' for function `%s'.\n", buf);
+           fprintf (stderr, "Missing `usage' for function `%s'.\n",
+                    input_buffer);
        }
     }
  eof:
@@ -979,7 +982,7 @@ scan_c_file (char *filename, const char *mode)
  An entry is output only if DOCSTRING has \ newline just after the opening "
  */
 
-void
+static void
 skip_white (FILE *infile)
 {
   char c = ' ';
@@ -988,7 +991,7 @@ skip_white (FILE *infile)
   ungetc (c, infile);
 }
 
-void
+static void
 read_lisp_symbol (FILE *infile, char *buffer)
 {
   char c;
@@ -1016,7 +1019,7 @@ read_lisp_symbol (FILE *infile, char *buffer)
   skip_white (infile);
 }
 
-int
+static int
 scan_lisp_file (const char *filename, const char *mode)
 {
   FILE *infile;