X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/ba46f4d85a6938273f52a8cdf7e09d9afee61d7f..0e926e561c259468174b16407dd7271c2c8fe904:/lib-src/etags.c diff --git a/lib-src/etags.c b/lib-src/etags.c index 385e4cc972..522c54ee4a 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -93,8 +93,11 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4"; #ifdef HAVE_CONFIG_H # include - /* On some systems, Emacs defines static as nothing for the sake - of unexec. We don't want that here since we don't use unexec. */ + /* This is probably not necessary any more. On some systems, config.h + used to define static as nothing for the sake of unexec. We don't + want that here since we don't use unexec. None of these systems + are supported any more, but the idea is still mentioned in + etc/PROBLEMS. */ # undef static # ifndef PTR /* for XEmacs */ # define PTR void * @@ -135,9 +138,7 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4"; #endif /* MSDOS */ #ifdef WINDOWSNT -# include # include -# include # include # include # define MAXPATHLEN _MAX_PATH @@ -148,27 +149,6 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4"; # define HAVE_GETCWD # endif /* undef HAVE_GETCWD */ #else /* not WINDOWSNT */ -# ifdef STDC_HEADERS -# include -# include -# else /* no standard C headers */ - extern char *getenv (const char *); - extern char *strcpy (char *, const char *); - extern char *strncpy (char *, const char *, unsigned long); - extern char *strcat (char *, const char *); - extern char *strncat (char *, const char *, unsigned long); - extern int strcmp (const char *, const char *); - extern int strncmp (const char *, const char *, unsigned long); - extern int system (const char *); - extern unsigned long strlen (const char *); - extern void *malloc (unsigned long); - extern void *realloc (void *, unsigned long); - extern void exit (int); - extern void free (void *); - extern void *memmove (void *, const void *, unsigned long); -# define EXIT_SUCCESS 0 -# define EXIT_FAILURE 1 -# endif #endif /* !WINDOWSNT */ #include @@ -178,6 +158,8 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4"; # endif #endif /* HAVE_UNISTD_H */ +#include +#include #include #include #include @@ -2357,14 +2339,7 @@ and replace lines between %< and %> with its output, then: struct C_stab_entry { const char *name; int c_ext; enum sym_type type; }; /* maximum key range = 33, duplicates = 0 */ -#ifdef __GNUC__ -__inline -#else -#ifdef __cplusplus -inline -#endif -#endif -static unsigned int +static inline unsigned int hash (register const char *str, register unsigned int len) { static unsigned char asso_values[] = @@ -3978,10 +3953,8 @@ Yacc_entries (FILE *inf) static void just_read_file (FILE *inf) { - register char *dummy; - - LOOP_ON_INPUT_LINES (inf, lb, dummy) - continue; + while (!feof (inf)) + readline (&lb, inf); } @@ -4198,7 +4171,7 @@ Ada_funcs (FILE *inf) /* Skip a string i.e. "abcd". */ if (inquote || (*dbp == '"')) { - dbp = etags_strchr ((inquote) ? dbp : dbp+1, '"'); + dbp = etags_strchr (dbp + !inquote, '"'); if (dbp != NULL) { inquote = FALSE; @@ -5254,16 +5227,16 @@ HTML_labels (FILE *inf) * Original code by Sunichirou Sugou (1989) * Rewritten by Anders Lindgren (1996) */ -static int prolog_pr (char *, char *); +static size_t prolog_pr (char *, char *); static void prolog_skip_comment (linebuffer *, FILE *); -static int prolog_atom (char *, int); +static size_t prolog_atom (char *, size_t); static void Prolog_functions (FILE *inf) { char *cp, *last; - int len; - int allocated; + size_t len; + size_t allocated; allocated = 0; len = 0; @@ -5320,16 +5293,16 @@ prolog_skip_comment (linebuffer *plb, FILE *inf) * Return the size of the name of the predicate or rule, or 0 if no * header was found. */ -static int +static size_t prolog_pr (char *s, char *last) /* Name of last clause. */ { - int pos; - int len; + size_t pos; + size_t len; pos = prolog_atom (s, 0); - if (pos < 1) + if (! pos) return 0; len = pos; @@ -5339,7 +5312,7 @@ prolog_pr (char *s, char *last) || (s[pos] == '(' && (pos += 1)) || (s[pos] == ':' && s[pos + 1] == '-' && (pos += 2))) && (last == NULL /* save only the first clause */ - || len != (int)strlen (last) + || len != strlen (last) || !strneq (s, last, len))) { make_tag (s, len, TRUE, s, pos, lineno, linecharno); @@ -5351,17 +5324,17 @@ prolog_pr (char *s, char *last) /* * Consume a Prolog atom. - * Return the number of bytes consumed, or -1 if there was an error. + * Return the number of bytes consumed, or 0 if there was an error. * * A prolog atom, in this context, could be one of: * - An alphanumeric sequence, starting with a lower case letter. * - A quoted arbitrary string. Single quotes can escape themselves. * Backslash quotes everything. */ -static int -prolog_atom (char *s, int pos) +static size_t +prolog_atom (char *s, size_t pos) { - int origpos; + size_t origpos; origpos = pos; @@ -5390,11 +5363,11 @@ prolog_atom (char *s, int pos) } else if (s[pos] == '\0') /* Multiline quoted atoms are ignored. */ - return -1; + return 0; else if (s[pos] == '\\') { if (s[pos+1] == '\0') - return -1; + return 0; pos += 2; } else @@ -5403,7 +5376,7 @@ prolog_atom (char *s, int pos) return pos - origpos; } else - return -1; + return 0; } @@ -6573,22 +6546,13 @@ absolute_filename (char *file, char *dir) else if (cp[0] != '/') cp = slashp; #endif -#ifdef HAVE_MEMMOVE memmove (cp, slashp + 3, strlen (slashp + 2)); -#else - /* Overlapping copy isn't really okay */ - strcpy (cp, slashp + 3); -#endif slashp = cp; continue; } else if (slashp[2] == '/' || slashp[2] == '\0') { -#ifdef HAVE_MEMMOVE memmove (slashp, slashp + 2, strlen (slashp + 1)); -#else - strcpy (slashp, slashp + 2); -#endif continue; } }