X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libiberty%2Fstrerror.c;h=83a5992b4dd91f665729248e01d9f45a45404b40;hb=caa0e9997e86a9aa9f70be6b1b7e9777fea5cfb0;hp=644cc75462aee8bcf7d07a6254955060ff0d839b;hpb=3c67ba63fe49eb98772c621befa986b0e8ec6bbc;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libiberty/strerror.c b/libiberty/strerror.c index 644cc75462a..83a5992b4dd 100644 --- a/libiberty/strerror.c +++ b/libiberty/strerror.c @@ -13,6 +13,7 @@ incompatible with our later declaration, perhaps by using const attributes. So we hide the declaration in errno.h (if any) using a macro. */ +#define sys_nerr sys_nerr__ #define sys_errlist sys_errlist__ #endif @@ -20,19 +21,23 @@ #include #ifdef HAVE_SYS_ERRLIST +#undef sys_nerr #undef sys_errlist #endif /* Routines imported from standard C runtime libraries. */ -#ifdef __STDC__ -#include -extern void *malloc (size_t size); /* 4.10.3.3 */ -extern void *memset (void *s, int c, size_t n); /* 4.11.6.1 */ -#else /* !__STDC__ */ -extern char *malloc (); /* Standard memory allocater */ -extern char *memset (); -#endif /* __STDC__ */ +#ifdef HAVE_STDLIB_H +#include +#else +extern PTR malloc (); +#endif + +#ifdef HAVE_STRING_H +#include +#else +extern PTR memset (); +#endif #ifndef MAX # define MAX(a,b) ((a) > (b) ? (a) : (b)) @@ -53,10 +58,10 @@ static void init_error_tables PARAMS ((void)); struct error_info { - int value; /* The numeric value from */ - const char *name; /* The equivalent symbolic value */ + const int value; /* The numeric value from */ + const char *const name; /* The equivalent symbolic value */ #ifndef HAVE_SYS_ERRLIST - const char *msg; /* Short message about this value */ + const char *const msg; /* Short message about this value */ #endif }; @@ -457,6 +462,8 @@ static int num_error_names = 0; #ifndef HAVE_SYS_ERRLIST +#define sys_nerr sys_nerr__ +#define sys_errlist sys_errlist__ static int sys_nerr; static const char **sys_errlist; @@ -467,7 +474,6 @@ extern char *sys_errlist[]; #endif - /* NAME @@ -557,28 +563,23 @@ init_error_tables () /* -NAME - - errno_max -- return the max errno value - -SYNOPSIS - int errno_max (); +@deftypefn Extension int errno_max (void) -DESCRIPTION +Returns the maximum @code{errno} value for which a corresponding +symbolic name or message is available. Note that in the case where we +use the @code{sys_errlist} supplied by the system, it is possible for +there to be more symbolic names than messages, or vice versa. In +fact, the manual page for @code{perror(3C)} explicitly warns that one +should check the size of the table (@code{sys_nerr}) before indexing +it, since new error codes may be added to the system before they are +added to the table. Thus @code{sys_nerr} might be smaller than value +implied by the largest @code{errno} value defined in @code{}. - Returns the maximum errno value for which a corresponding symbolic - name or message is available. Note that in the case where - we use the sys_errlist supplied by the system, it is possible for - there to be more symbolic names than messages, or vice versa. - In fact, the manual page for perror(3C) explicitly warns that one - should check the size of the table (sys_nerr) before indexing it, - since new error codes may be added to the system before they are - added to the table. Thus sys_nerr might be smaller than value - implied by the largest errno value defined in . +We return the maximum value that can be used to obtain a meaningful +symbolic name or message. - We return the maximum value that can be used to obtain a meaningful - symbolic name or message. +@end deftypefn */ @@ -599,31 +600,25 @@ errno_max () /* -NAME - - strerror -- map an error number to an error message string - -SYNOPSIS - - char *strerror (int errnoval) +@deftypefn Supplemental char* strerror (int @var{errnoval}) -DESCRIPTION +Maps an @code{errno} number to an error message string, the contents +of which are implementation defined. On systems which have the +external variables @code{sys_nerr} and @code{sys_errlist}, these +strings will be the same as the ones used by @code{perror}. - Maps an errno number to an error message string, the contents of - which are implementation defined. On systems which have the external - variables sys_nerr and sys_errlist, these strings will be the same - as the ones used by perror(). +If the supplied error number is within the valid range of indices for +the @code{sys_errlist}, but no message is available for the particular +error number, then returns the string @samp{Error @var{num}}, where +@var{num} is the error number. - If the supplied error number is within the valid range of indices - for the sys_errlist, but no message is available for the particular - error number, then returns the string "Error NUM", where NUM is the - error number. +If the supplied error number is not a valid index into +@code{sys_errlist}, returns @code{NULL}. - If the supplied error number is not a valid index into sys_errlist, - returns NULL. +The returned string is only guaranteed to be valid only until the +next call to @code{strerror}. - The returned string is only guaranteed to be valid only until the - next call to strerror. +@end deftypefn */ @@ -631,7 +626,7 @@ char * strerror (errnoval) int errnoval; { - char *msg; + const char *msg; static char buf[32]; #ifndef HAVE_SYS_ERRLIST @@ -673,32 +668,24 @@ strerror (errnoval) /* -NAME - - strerrno -- map an error number to a symbolic name string - -SYNOPSIS - - const char *strerrno (int errnoval) - -DESCRIPTION +@deftypefn Replacement {const char*} strerrno (int @var{errnum}) - Given an error number returned from a system call (typically - returned in errno), returns a pointer to a string containing the - symbolic name of that error number, as found in . +Given an error number returned from a system call (typically returned +in @code{errno}), returns a pointer to a string containing the +symbolic name of that error number, as found in @code{}. - If the supplied error number is within the valid range of indices - for symbolic names, but no name is available for the particular - error number, then returns the string "Error NUM", where NUM is - the error number. +If the supplied error number is within the valid range of indices for +symbolic names, but no name is available for the particular error +number, then returns the string @samp{Error @var{num}}, where @var{num} +is the error number. - If the supplied error number is not within the range of valid - indices, then returns NULL. +If the supplied error number is not within the range of valid +indices, then returns @code{NULL}. -BUGS +The contents of the location pointed to are only guaranteed to be +valid until the next call to @code{strerrno}. - The contents of the location pointed to are only guaranteed to be - valid until the next call to strerrno. +@end deftypefn */ @@ -741,18 +728,12 @@ strerrno (errnoval) /* -NAME - - strtoerrno -- map a symbolic errno name to a numeric value +@deftypefn Extension int strtoerrno (const char *@var{name}) -SYNOPSIS - - int strtoerrno (char *name) - -DESCRIPTION +Given the symbolic name of a error number (e.g., @code{EACCES}), map it +to an errno value. If no translation is found, returns 0. - Given the symbolic name of a error number, map it to an errno value. - If no translation is found, returns 0. +@end deftypefn */ @@ -803,7 +784,7 @@ main () int errn; int errnmax; const char *name; - char *msg; + const char *msg; char *strerror (); errnmax = errno_max ();