X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/3720fa2b1ac94b8ac9f193264bcf36990a5f43d2..4dc7c8d5795458e89d19b59f64760e155c2cd70b:/lib-src/ebrowse.c
diff --git a/lib-src/ebrowse.c b/lib-src/ebrowse.c
index 5cb9de5d8f..1c43bc6a4f 100644
--- a/lib-src/ebrowse.c
+++ b/lib-src/ebrowse.c
@@ -1,8 +1,6 @@
/* ebrowse.c --- parsing files for the ebrowse C++ browser
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+Copyright (C) 1992-2012 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -22,11 +20,7 @@ along with GNU Emacs. If not, see . */
#include
#include
-
-#ifdef HAVE_STDLIB_H
#include
-#endif
-
#include
#include
#include
@@ -43,12 +37,7 @@ along with GNU Emacs. If not, see . */
#define streq(X, Y) (*(X) == *(Y) && strcmp ((X) + 1, (Y) + 1) == 0)
-/* The ubiquitous `max' and `min' macros. */
-
-#ifndef max
-#define max(X, Y) ((X) > (Y) ? (X) : (Y))
-#define min(X, Y) ((X) < (Y) ? (X) : (Y))
-#endif
+#include
/* Files are read in chunks of this number of bytes. */
@@ -56,16 +45,16 @@ along with GNU Emacs. If not, see . */
/* The character used as a separator in path lists (like $PATH). */
-#if defined(__MSDOS__)
+#if defined (__MSDOS__)
#define PATH_LIST_SEPARATOR ';'
-#define FILENAME_EQ(X,Y) (strcasecmp(X,Y) == 0)
+#define FILENAME_EQ(X,Y) (strcasecmp (X,Y) == 0)
#else
-#if defined(WINDOWSNT)
+#if defined (WINDOWSNT)
#define PATH_LIST_SEPARATOR ';'
-#define FILENAME_EQ(X,Y) (stricmp(X,Y) == 0)
+#define FILENAME_EQ(X,Y) (stricmp (X,Y) == 0)
#else
#define PATH_LIST_SEPARATOR ':'
-#define FILENAME_EQ(X,Y) (streq(X,Y))
+#define FILENAME_EQ(X,Y) (streq (X,Y))
#endif
#endif
/* The default output file name. */
@@ -84,7 +73,6 @@ along with GNU Emacs. If not, see . */
#define TREE_HEADER_STRUCT "[ebrowse-hs "
#define TREE_STRUCT "[ebrowse-ts "
#define MEMBER_STRUCT "[ebrowse-ms "
-#define BROWSE_STRUCT "[ebrowse-bs "
#define CLASS_STRUCT "[ebrowse-cs "
/* The name of the symbol table entry for global functions, variables,
@@ -386,7 +374,7 @@ int max_regexp = 50;
char *inbuffer;
char *in;
-int inbuffer_size;
+size_t inbuffer_size;
/* Return the current buffer position in the input file. */
@@ -467,61 +455,14 @@ struct search_path *search_path_tail;
/* Function prototypes. */
-int yylex (void);
-void yyparse (void);
-void re_init_parser (void);
-const char *token_string (int);
-char *matching_regexp (void);
-void init_sym (void);
-struct sym *add_sym (const char *, struct sym *);
-void add_link (struct sym *, struct sym *);
-void add_member_defn (struct sym *, char *, char *,
- int, unsigned, int, int, int);
-void add_member_decl (struct sym *, char *, char *, int,
- unsigned, int, int, int, int);
-void dump_roots (FILE *);
-void *xmalloc (int);
-void xfree (void *);
-void add_global_defn (char *, char *, int, unsigned, int, int, int);
-void add_global_decl (char *, char *, int, unsigned, int, int, int);
-void add_define (char *, char *, int);
-void mark_inherited_virtual (void);
-void leave_namespace (void);
-void enter_namespace (char *);
-void register_namespace_alias (char *, struct link *);
-void insert_keyword (const char *, int);
-void re_init_scanner (void);
-void init_scanner (void);
-void process_file (char *);
-void add_search_path (char *);
-FILE *open_file (char *);
-int process_pp_line (void);
-int dump_members (FILE *, struct member *);
-void dump_sym (FILE *, struct sym *);
-int dump_tree (FILE *, struct sym *);
-struct member *find_member (struct sym *, char *, int, int, unsigned);
-struct member *add_member (struct sym *, char *, int, int, unsigned);
-void mark_virtual (struct sym *);
-struct sym *make_namespace (char *, struct sym *);
-char *sym_scope (struct sym *);
-char *sym_scope_1 (struct sym *);
-int skip_to (int);
-void skip_matching (void);
-void member (struct sym *, int);
-void class_body (struct sym *, int);
-void class_definition (struct sym *, int, int, int);
-void declaration (int);
-unsigned parm_list (int *);
-char *operator_name (int *);
-struct sym *parse_classname (void);
-struct sym *parse_qualified_ident_or_type (char **);
-void parse_qualified_param_ident_or_type (char **);
-int globals (int);
-void yyerror (const char *, const char *);
-void usage (int) NO_RETURN;
-void version (void) NO_RETURN;
-
-
+static char *matching_regexp (void);
+static struct sym *add_sym (const char *, struct sym *);
+static void add_global_defn (char *, char *, int, unsigned, int, int, int);
+static void add_global_decl (char *, char *, int, unsigned, int, int, int);
+static struct member *add_member (struct sym *, char *, int, int, unsigned);
+static void class_definition (struct sym *, int, int, int);
+static char *operator_name (int *);
+static void parse_qualified_param_ident_or_type (char **);
/***********************************************************************
Utilities
@@ -530,7 +471,7 @@ void version (void) NO_RETURN;
/* Print an error in a printf-like style with the current input file
name and line number. */
-void
+static void
yyerror (const char *format, const char *s)
{
fprintf (stderr, "%s:%d: ", filename, yyline);
@@ -542,8 +483,8 @@ yyerror (const char *format, const char *s)
/* Like malloc but print an error and exit if not enough memory is
available. */
-void *
-xmalloc (int nbytes)
+static void *
+xmalloc (size_t nbytes)
{
void *p = malloc (nbytes);
if (p == NULL)
@@ -557,8 +498,8 @@ xmalloc (int nbytes)
/* Like realloc but print an error and exit if out of memory. */
-void *
-xrealloc (void *p, int sz)
+static void *
+xrealloc (void *p, size_t sz)
{
p = realloc (p, sz);
if (p == NULL)
@@ -573,7 +514,7 @@ xrealloc (void *p, int sz)
/* Like strdup, but print an error and exit if not enough memory is
available.. If S is null, return null. */
-char *
+static char *
xstrdup (char *s)
{
if (s)
@@ -590,7 +531,7 @@ xstrdup (char *s)
/* Initialize the symbol table. This currently only sets up the
special symbol for globals (`*Globals*'). */
-void
+static void
init_sym (void)
{
global_symbols = add_sym (GLOBALS_NAME, NULL);
@@ -604,7 +545,7 @@ init_sym (void)
If a symbol for NAME already exists, return that. Otherwise
create a new symbol and set it to default values. */
-struct sym *
+static struct sym *
add_sym (const char *name, struct sym *nested_in_class)
{
struct sym *sym;
@@ -645,7 +586,7 @@ add_sym (const char *name, struct sym *nested_in_class)
/* Add links between superclass SUPER and subclass SUB. */
-void
+static void
add_link (struct sym *super, struct sym *sub)
{
struct link *lnk, *lnk2, *p, *prev;
@@ -685,7 +626,7 @@ add_link (struct sym *super, struct sym *sub)
parameter types of functions. Value is a pointer to the member
found or null if not found. */
-struct member *
+static struct member *
find_member (struct sym *cls, char *name, int var, int sc, unsigned int hash)
{
struct member **list;
@@ -735,7 +676,7 @@ find_member (struct sym *cls, char *name, int var, int sc, unsigned int hash)
a bit set giving additional information about the member (see the
F_* defines). */
-void
+static void
add_member_decl (struct sym *cls, char *name, char *regexp, int pos, unsigned int hash, int var, int sc, int vis, int flags)
{
struct member *m;
@@ -783,7 +724,7 @@ add_member_decl (struct sym *cls, char *name, char *regexp, int pos, unsigned in
a bit set giving additional information about the member (see the
F_* defines). */
-void
+static void
add_member_defn (struct sym *cls, char *name, char *regexp, int pos, unsigned int hash, int var, int sc, int flags)
{
struct member *m;
@@ -825,7 +766,7 @@ add_member_defn (struct sym *cls, char *name, char *regexp, int pos, unsigned in
REGEXP is a regular expression matching the define in the source,
if it is non-null. POS is the position in the file. */
-void
+static void
add_define (char *name, char *regexp, int pos)
{
add_global_defn (name, regexp, pos, 0, 1, SC_FRIEND, F_DEFINE);
@@ -843,7 +784,7 @@ add_define (char *name, char *regexp, int pos)
a bit set giving additional information about the member (see the
F_* defines). */
-void
+static void
add_global_defn (char *name, char *regexp, int pos, unsigned int hash, int var, int sc, int flags)
{
int i;
@@ -874,7 +815,7 @@ add_global_defn (char *name, char *regexp, int pos, unsigned int hash, int var,
a bit set giving additional information about the member (see the
F_* defines). */
-void
+static void
add_global_decl (char *name, char *regexp, int pos, unsigned int hash, int var, int sc, int flags)
{
/* Add declaration only if not already declared. Header files must
@@ -913,7 +854,7 @@ add_global_decl (char *name, char *regexp, int pos, unsigned int hash, int var,
member. HASH is a hash code for the parameter types of a function.
Value is a pointer to the member's structure. */
-struct member *
+static struct member *
add_member (struct sym *cls, char *name, int var, int sc, unsigned int hash)
{
struct member *m = (struct member *) xmalloc (sizeof *m + strlen (name));
@@ -984,7 +925,7 @@ add_member (struct sym *cls, char *name, int var, int sc, unsigned int hash)
recursively, marking functions as virtual that are declared virtual
in base classes. */
-void
+static void
mark_virtual (struct sym *r)
{
struct link *p;
@@ -1008,7 +949,7 @@ mark_virtual (struct sym *r)
/* For all roots of the class tree, mark functions as virtual that
are virtual because of a virtual declaration in a base class. */
-void
+static void
mark_inherited_virtual (void)
{
struct sym *r;
@@ -1023,7 +964,7 @@ mark_inherited_virtual (void)
/* Create and return a symbol for a namespace with name NAME. */
-struct sym *
+static struct sym *
make_namespace (char *name, struct sym *context)
{
struct sym *s = (struct sym *) xmalloc (sizeof *s + strlen (name));
@@ -1036,9 +977,9 @@ make_namespace (char *name, struct sym *context)
}
-/* Find the symbol for namespace NAME. If not found, retrun NULL */
+/* Find the symbol for namespace NAME. If not found, return NULL */
-struct sym *
+static struct sym *
check_namespace (char *name, struct sym *context)
{
struct sym *p = NULL;
@@ -1055,7 +996,7 @@ check_namespace (char *name, struct sym *context)
/* Find the symbol for namespace NAME. If not found, add a new symbol
for NAME to all_namespaces. */
-struct sym *
+static struct sym *
find_namespace (char *name, struct sym *context)
{
struct sym *p = check_namespace (name, context);
@@ -1069,7 +1010,7 @@ find_namespace (char *name, struct sym *context)
/* Find namespace alias with name NAME. If not found return NULL. */
-struct link *
+static struct link *
check_namespace_alias (char *name)
{
struct link *p = NULL;
@@ -1093,7 +1034,7 @@ check_namespace_alias (char *name)
/* Register the name NEW_NAME as an alias for namespace list OLD_NAME. */
-void
+static void
register_namespace_alias (char *new_name, struct link *old_name)
{
unsigned h;
@@ -1121,7 +1062,7 @@ register_namespace_alias (char *new_name, struct link *old_name)
/* Enter namespace with name NAME. */
-void
+static void
enter_namespace (char *name)
{
struct sym *p = find_namespace (name, current_namespace);
@@ -1142,7 +1083,7 @@ enter_namespace (char *name)
/* Leave the current namespace. */
-void
+static void
leave_namespace (void)
{
assert (namespace_sp > 0);
@@ -1158,22 +1099,23 @@ leave_namespace (void)
/* Write string S to the output file FP in a Lisp-readable form.
If S is null, write out `()'. */
-#define PUTSTR(s, fp) \
- do { \
- if (!s) \
- { \
- putc ('(', fp); \
- putc (')', fp); \
- putc (' ', fp); \
- } \
- else \
- { \
- putc ('"', fp); \
- fputs (s, fp); \
- putc ('"', fp); \
- putc (' ', fp); \
- } \
- } while (0)
+static inline void
+putstr (const char *s, FILE *fp)
+{
+ if (!s)
+ {
+ putc ('(', fp);
+ putc (')', fp);
+ putc (' ', fp);
+ }
+ else
+ {
+ putc ('"', fp);
+ fputs (s, fp);
+ putc ('"', fp);
+ putc (' ', fp);
+ }
+}
/* A dynamically allocated buffer for constructing a scope name. */
@@ -1184,7 +1126,7 @@ int scope_buffer_len;
/* Make sure scope_buffer has enough room to add LEN chars to it. */
-void
+static void
ensure_scope_buffer_room (int len)
{
if (scope_buffer_len + len >= scope_buffer_size)
@@ -1200,7 +1142,7 @@ ensure_scope_buffer_room (int len)
namespaces to scope_buffer. Value is a pointer to the complete
scope name constructed. */
-char *
+static char *
sym_scope_1 (struct sym *p)
{
int len;
@@ -1234,7 +1176,7 @@ sym_scope_1 (struct sym *p)
/* Return the scope of symbol P in printed representation, i.e.
as it would appear in a C*+ source file. */
-char *
+static char *
sym_scope (struct sym *p)
{
if (!scope_buffer)
@@ -1256,7 +1198,7 @@ sym_scope (struct sym *p)
/* Dump the list of members M to file FP. Value is the length of the
list. */
-int
+static int
dump_members (FILE *fp, struct member *m)
{
int n;
@@ -1266,16 +1208,16 @@ dump_members (FILE *fp, struct member *m)
for (n = 0; m; m = m->next, ++n)
{
fputs (MEMBER_STRUCT, fp);
- PUTSTR (m->name, fp);
- PUTSTR (NULL, fp); /* FIXME? scope for globals */
+ putstr (m->name, fp);
+ putstr (NULL, fp); /* FIXME? scope for globals */
fprintf (fp, "%u ", (unsigned) m->flags);
- PUTSTR (m->filename, fp);
- PUTSTR (m->regexp, fp);
+ putstr (m->filename, fp);
+ putstr (m->regexp, fp);
fprintf (fp, "%u ", (unsigned) m->pos);
fprintf (fp, "%u ", (unsigned) m->vis);
putc (' ', fp);
- PUTSTR (m->def_filename, fp);
- PUTSTR (m->def_regexp, fp);
+ putstr (m->def_filename, fp);
+ putstr (m->def_regexp, fp);
fprintf (fp, "%u", (unsigned) m->def_pos);
putc (']', fp);
putc ('\n', fp);
@@ -1289,24 +1231,24 @@ dump_members (FILE *fp, struct member *m)
/* Dump class ROOT to stream FP. */
-void
+static void
dump_sym (FILE *fp, struct sym *root)
{
fputs (CLASS_STRUCT, fp);
- PUTSTR (root->name, fp);
+ putstr (root->name, fp);
/* Print scope, if any. */
if (root->namesp)
- PUTSTR (sym_scope (root), fp);
+ putstr (sym_scope (root), fp);
else
- PUTSTR (NULL, fp);
+ putstr (NULL, fp);
/* Print flags. */
fprintf (fp, "%u", root->flags);
- PUTSTR (root->filename, fp);
- PUTSTR (root->regexp, fp);
+ putstr (root->filename, fp);
+ putstr (root->regexp, fp);
fprintf (fp, "%u", (unsigned) root->pos);
- PUTSTR (root->sfilename, fp);
+ putstr (root->sfilename, fp);
putc (']', fp);
putc ('\n', fp);
}
@@ -1315,7 +1257,7 @@ dump_sym (FILE *fp, struct sym *root)
/* Dump class ROOT and its subclasses to file FP. Value is the
number of classes written. */
-int
+static int
dump_tree (FILE *fp, struct sym *root)
{
struct link *lk;
@@ -1362,7 +1304,7 @@ dump_tree (FILE *fp, struct sym *root)
/* Dump the entire class tree to file FP. */
-void
+static void
dump_roots (FILE *fp)
{
int i, n = 0;
@@ -1373,7 +1315,7 @@ dump_roots (FILE *fp)
if (!f_append)
{
fputs (TREE_HEADER_STRUCT, fp);
- PUTSTR (EBROWSE_FILE_VERSION, fp);
+ putstr (EBROWSE_FILE_VERSION, fp);
putc ('\"', fp);
if (!f_structs)
@@ -1436,7 +1378,7 @@ do { \
/* Process a preprocessor line. Value is the next character from the
input buffer not consumed. */
-int
+static int
process_pp_line (void)
{
int in_comment = 0, in_string = 0;
@@ -1507,7 +1449,7 @@ process_pp_line (void)
/* Value is the next token from the input buffer. */
-int
+static int
yylex (void)
{
int c;
@@ -1929,7 +1871,7 @@ static char *matching_regexp_buffer, *matching_regexp_end_buf;
position in the input buffer, or maybe a bit more if that string is
shorter than min_regexp. */
-char *
+static char *
matching_regexp (void)
{
char *p;
@@ -1980,7 +1922,7 @@ matching_regexp (void)
/* Return a printable representation of token T. */
-const char *
+static const char *
token_string (int t)
{
static char b[3];
@@ -2097,7 +2039,7 @@ token_string (int t)
/* Reinitialize the scanner for a new input file. */
-void
+static void
re_init_scanner (void)
{
in = inbuffer;
@@ -2112,11 +2054,11 @@ re_init_scanner (void)
}
-/* Insert a keyword NAME with token value TK into the keyword hash
+/* Insert a keyword NAME with token value TKV into the keyword hash
table. */
-void
-insert_keyword (const char *name, int tk)
+static void
+insert_keyword (const char *name, int tkv)
{
const char *s;
unsigned h = 0;
@@ -2127,7 +2069,7 @@ insert_keyword (const char *name, int tk)
h %= KEYWORD_TABLE_SIZE;
k->name = name;
- k->tk = tk;
+ k->tk = tkv;
k->next = keyword_table[h];
keyword_table[h] = k;
}
@@ -2136,7 +2078,7 @@ insert_keyword (const char *name, int tk)
/* Initialize the scanner for the first file. This sets up the
character class vectors and fills the keyword hash table. */
-void
+static void
init_scanner (void)
{
int i;
@@ -2280,7 +2222,7 @@ init_scanner (void)
/* Skip forward until a given token TOKEN or YYEOF is seen and return
the current lookahead token after skipping. */
-int
+static int
skip_to (int token)
{
while (!LOOKING_AT2 (YYEOF, token))
@@ -2291,7 +2233,7 @@ skip_to (int token)
/* Skip over pairs of tokens (parentheses, square brackets,
angle brackets, curly brackets) matching the current lookahead. */
-void
+static void
skip_matching (void)
{
int open, close, n;
@@ -2334,7 +2276,7 @@ skip_matching (void)
}
}
-void
+static void
skip_initializer (void)
{
for (;;)
@@ -2361,7 +2303,7 @@ skip_initializer (void)
/* Build qualified namespace alias (A::B::c) and return it. */
-struct link *
+static struct link *
match_qualified_namespace_alias (void)
{
struct link *head = NULL;
@@ -2398,7 +2340,7 @@ match_qualified_namespace_alias (void)
/* Re-initialize the parser by resetting the lookahead token. */
-void
+static void
re_init_parser (void)
{
tk = -1;
@@ -2411,7 +2353,7 @@ re_init_parser (void)
Returns a hash code for the parameter types. This value is used to
distinguish between overloaded functions. */
-unsigned
+static unsigned
parm_list (int *flags)
{
unsigned hash = 0;
@@ -2524,7 +2466,7 @@ parm_list (int *flags)
/* Print position info to stdout. */
-void
+static void
print_info (void)
{
if (info_position >= 0 && BUFFER_POS () <= info_position)
@@ -2539,7 +2481,7 @@ print_info (void)
the access specifier for the member (private, protected,
public). */
-void
+static void
member (struct sym *cls, int vis)
{
char *id = NULL;
@@ -2565,7 +2507,7 @@ member (struct sym *cls, int vis)
/* A function or class may follow. */
case TEMPLATE:
- MATCH();
+ MATCH ();
SET_FLAG (flags, F_TEMPLATE);
/* Skip over template argument list */
SKIP_MATCHING_IF ('<');
@@ -2748,7 +2690,7 @@ member (struct sym *cls, int vis)
/* Parse the body of class CLS. TAG is the tag of the class (struct,
union, class). */
-void
+static void
class_body (struct sym *cls, int tag)
{
int vis = tag == CLASS ? PRIVATE : PUBLIC;
@@ -2809,7 +2751,7 @@ class_body (struct sym *cls, int tag)
qualified ident has the form `X<..>::Y<...>::T<...>. Returns a
symbol for that class. */
-struct sym *
+static struct sym *
parse_classname (void)
{
struct sym *last_class = NULL;
@@ -2839,13 +2781,13 @@ parse_classname (void)
implicitly static operator has been parsed. Value is a pointer to
a static buffer holding the constructed operator name string. */
-char *
+static char *
operator_name (int *sc)
{
- static int id_size = 0;
+ static size_t id_size = 0;
static char *id = NULL;
const char *s;
- int len;
+ size_t len;
MATCH ();
@@ -2861,7 +2803,7 @@ operator_name (int *sc)
len = strlen (s) + 10;
if (len > id_size)
{
- int new_size = max (len, 2 * id_size);
+ size_t new_size = max (len, 2 * id_size);
id = (char *) xrealloc (id, new_size);
id_size = new_size;
}
@@ -2882,7 +2824,7 @@ operator_name (int *sc)
}
else
{
- int tokens_matched = 0;
+ size_t tokens_matched = 0;
len = 20;
if (len > id_size)
@@ -2903,7 +2845,7 @@ operator_name (int *sc)
len += strlen (s) + 2;
if (len > id_size)
{
- int new_size = max (len, 2 * id_size);
+ size_t new_size = max (len, 2 * id_size);
id = (char *) xrealloc (id, new_size);
id_size = new_size;
}
@@ -2929,7 +2871,7 @@ operator_name (int *sc)
`X::Y::z'. This IDENT is returned in LAST_ID. Value is the
symbol structure for the ident. */
-struct sym *
+static struct sym *
parse_qualified_ident_or_type (char **last_id)
{
struct sym *cls = NULL;
@@ -2984,7 +2926,7 @@ parse_qualified_ident_or_type (char **last_id)
}
while (enter--)
- leave_namespace();
+ leave_namespace ();
return cls;
}
@@ -2994,14 +2936,16 @@ parse_qualified_ident_or_type (char **last_id)
`X::Y::z'. This IDENT is returned in LAST_ID. Value is the
symbol structure for the ident. */
-void
+static void
parse_qualified_param_ident_or_type (char **last_id)
{
struct sym *cls = NULL;
static char *id = NULL;
static int id_size = 0;
- while (LOOKING_AT (IDENT))
+ assert (LOOKING_AT (IDENT));
+
+ do
{
int len = strlen (yytext) + 1;
if (len > id_size)
@@ -3024,6 +2968,7 @@ parse_qualified_param_ident_or_type (char **last_id)
else
break;
}
+ while (LOOKING_AT (IDENT));
}
@@ -3036,7 +2981,7 @@ parse_qualified_param_ident_or_type (char **last_id)
Current lookahead is the class name. */
-void
+static void
class_definition (struct sym *containing, int tag, int flags, int nested)
{
struct sym *current;
@@ -3133,7 +3078,7 @@ class_definition (struct sym *containing, int tag, int flags, int nested)
the storage class of *ID. FLAGS is a bit set giving additional
information about the member (see the F_* defines). */
-void
+static void
add_declarator (struct sym **cls, char **id, int flags, int sc)
{
if (LOOKING_AT2 (';', ','))
@@ -3176,7 +3121,7 @@ add_declarator (struct sym **cls, char **id, int flags, int sc)
/* Parse a declaration. */
-void
+static void
declaration (int flags)
{
char *id = NULL;
@@ -3330,7 +3275,7 @@ declaration (int flags)
parsing in an `extern "C"' block. Value is 1 if EOF is reached, 0
otherwise. */
-int
+static int
globals (int start_flags)
{
int anonymous;
@@ -3448,7 +3393,7 @@ globals (int start_flags)
/* Parse the current input file. */
-void
+static void
yyparse (void)
{
while (globals (0) == 0)
@@ -3464,7 +3409,7 @@ yyparse (void)
/* Add the list of paths PATH_LIST to the current search path for
input files. */
-void
+static void
add_search_path (char *path_list)
{
while (*path_list)
@@ -3499,7 +3444,7 @@ add_search_path (char *path_list)
opened. Try to find FILE in search_path first, then try the
unchanged file name. */
-FILE *
+static FILE *
open_file (char *file)
{
FILE *fp = NULL;
@@ -3558,7 +3503,7 @@ Usage: ebrowse [options] {files}\n\
--version display version info\n\
"
-void
+static _Noreturn void
usage (int error)
{
puts (USAGE);
@@ -3567,17 +3512,17 @@ usage (int error)
/* Display version and copyright info. The VERSION macro is set
- from the Makefile and contains the Emacs version. */
+ from config.h and contains the Emacs version. */
#ifndef VERSION
# define VERSION "21"
#endif
-void
+static _Noreturn void
version (void)
{
/* Makes it easier to update automatically. */
- char emacs_copyright[] = "Copyright (C) 2011 Free Software Foundation, Inc.";
+ char emacs_copyright[] = "Copyright (C) 2012 Free Software Foundation, Inc.";
printf ("ebrowse %s\n", VERSION);
puts (emacs_copyright);
@@ -3589,7 +3534,7 @@ version (void)
/* Parse one input file FILE, adding classes and members to the symbol
table. */
-void
+static void
process_file (char *file)
{
FILE *fp;
@@ -3597,7 +3542,7 @@ process_file (char *file)
fp = open_file (file);
if (fp)
{
- int nread, nbytes;
+ size_t nread, nbytes;
/* Give a progress indication if needed. */
if (f_very_verbose)
@@ -3621,12 +3566,10 @@ process_file (char *file)
}
nbytes = fread (inbuffer + nread, 1, READ_CHUNK_SIZE, fp);
- if (nbytes <= 0)
+ if (nbytes == 0)
break;
nread += nbytes;
}
- if (nread < 0)
- nread = 0;
inbuffer[nread] = '\0';
/* Reinitialize scanner and parser for the new input file. */
@@ -3644,7 +3587,7 @@ process_file (char *file)
containing its contents without the terminating newline. Value
is null when EOF is reached. */
-char *
+static char *
read_line (FILE *fp)
{
static char *buffer;
@@ -3814,7 +3757,7 @@ main (int argc, char **argv)
yyerror ("error getting size of file `%s'", out_filename);
exit (EXIT_FAILURE);
}
-
+
else if (rc == 0)
{
yyerror ("file `%s' is empty", out_filename);