X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lib-src%2Fmake-docfile.c;h=d971a1189d3dad7f06ee207a2d348a8dae1154f5;hb=76759ab036458c54499a454399e19602b8ae6ce3;hp=cc55e8c06292cf369f4fc399d1542291f2e4013e;hpb=716cfba952c1dc0d2cf5c968971f3780ba728a89;p=chise%2Fxemacs-chise.git.1 diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c index cc55e8c..d971a11 100644 --- a/lib-src/make-docfile.c +++ b/lib-src/make-docfile.c @@ -91,14 +91,14 @@ enum c_file } Current_file_type; -static int scan_file (CONST char *filename); +static int scan_file (const char *filename); static int read_c_string (FILE *, int, int); -static void write_c_args (FILE *out, CONST char *func, char *buf, int minargs, +static void write_c_args (FILE *out, const char *func, char *buf, int minargs, int maxargs); -static int scan_c_file (CONST char *filename, CONST char *mode); +static int scan_c_file (const char *filename, const char *mode); static void skip_white (FILE *); static void read_lisp_symbol (FILE *, char *); -static int scan_lisp_file (CONST char *filename, CONST char *mode); +static int scan_lisp_file (const char *filename, const char *mode); #define C_IDENTIFIER_CHAR_P(c) \ (('A' <= c && c <= 'Z') || \ @@ -115,7 +115,7 @@ int ellcc = 0; /* Print error message. `s1' is printf control string, `s2' is arg for it. */ static void -error (CONST char *s1, CONST char *s2) +error (const char *s1, const char *s2) { fprintf (stderr, "%s: ", progname); fprintf (stderr, s1, s2); @@ -125,7 +125,7 @@ error (CONST char *s1, CONST char *s2) /* Print error message and exit. */ static void -fatal (CONST char *s1, CONST char *s2) +fatal (const char *s1, const char *s2) { error (s1, s2); exit (1); @@ -274,7 +274,7 @@ main (int argc, char **argv) /* Return 1 if file is not found, 0 if it is found. */ static int -scan_file (CONST char *filename) +scan_file (const char *filename) { int len = strlen (filename); if (ellcc == 0 && len > 4 && !strcmp (filename + len - 4, ".elc")) @@ -303,48 +303,59 @@ char buf[128]; Convert escape sequences \n and \t to newline and tab; discard \ followed by newline. */ +#define MDGET do { prevc = c; c = getc (infile); } while (0) static int read_c_string (FILE *infile, int printflag, int c_docstring) { - register int c; + register int prevc = 0, c = 0; char *p = buf; int start = -1; - c = getc (infile); + MDGET; while (c != EOF) { while ((c_docstring || c != '"') && c != EOF) { - if (start) + if (c == '*') { - if (c == '*') + int cc = getc (infile); + if (cc == '/') { - int cc = getc (infile); - if (cc == '/') - break; - else - ungetc (cc, infile); + if (prevc != '\n') + { + if (printflag > 0) + { + if (ellcc) + fprintf (outfile, "\\n\\"); + putc ('\n', outfile); + } + else if (printflag < 0) + *p++ = '\n'; + } + break; } + else + ungetc (cc, infile); + } - if (start != -1) + if (start == 1) + { + if (printflag > 0) { - if (printflag > 0) - { - if (ellcc) - fprintf (outfile, "\\n\\"); - putc ('\n', outfile); - } - else if (printflag < 0) - *p++ = '\n'; + if (ellcc) + fprintf (outfile, "\\n\\"); + putc ('\n', outfile); } + else if (printflag < 0) + *p++ = '\n'; } if (c == '\\') { - c = getc (infile); + MDGET; if (c == '\n') { - c = getc (infile); + MDGET; start = 1; continue; } @@ -358,32 +369,36 @@ read_c_string (FILE *infile, int printflag, int c_docstring) else { start = 0; - if (printflag > 0) { - if (ellcc && c == '"') - putc ('\\', outfile); - putc (c, outfile); - } + if (printflag > 0) + { + if (ellcc && c == '"') + putc ('\\', outfile); + putc (c, outfile); + } else if (printflag < 0) *p++ = c; } - c = getc (infile); + MDGET; } /* look for continuation of string */ if (Current_file_type == c_file) { - while (isspace (c = getc (infile))) - ; + do + { + MDGET; + } + while (isspace (c)); if (c != '"') break; } else { - c = getc (infile); + MDGET; if (c != '"') break; /* If we had a "", concatenate the two strings. */ } - c = getc (infile); + MDGET; } if (printflag < 0) @@ -396,7 +411,7 @@ read_c_string (FILE *infile, int printflag, int c_docstring) MINARGS and MAXARGS are the minimum and maximum number of arguments. */ static void -write_c_args (FILE *out, CONST char *func, char *buff, int minargs, +write_c_args (FILE *out, const char *func, char *buff, int minargs, int maxargs) { register char *p; @@ -496,7 +511,7 @@ write_c_args (FILE *out, CONST char *func, char *buff, int minargs, Accepts any word starting DEF... so it finds DEFSIMPLE and DEFPRED. */ static int -scan_c_file (CONST char *filename, CONST char *mode) +scan_c_file (const char *filename, const char *mode) { FILE *infile; register int c; @@ -787,7 +802,7 @@ read_lisp_symbol (FILE *infile, char *buffer) } static int -scan_lisp_file (CONST char *filename, CONST char *mode) +scan_lisp_file (const char *filename, const char *mode) { FILE *infile; register int c;