From: Richard Kenner Date: Sun, 31 Jul 1994 10:56:29 +0000 (-0400) Subject: (my_strerror): New function. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=02cc38b5eeb613c6139bf03885a806270254b645;p=gcc.git (my_strerror): New function. (error_from_errno, perror_with_name): Use it. From-SVN: r7841 --- diff --git a/gcc/cccp.c b/gcc/cccp.c index 01f1c665531..a35336d7610 100644 --- a/gcc/cccp.c +++ b/gcc/cccp.c @@ -93,7 +93,6 @@ typedef unsigned char U_CHAR; /* VMS-specific definitions */ #ifdef VMS #include -#include /* This defines sys_errlist/sys_nerr properly */ #include #define O_RDONLY 0 /* Open arg for Read/Only */ #define O_WRONLY 1 /* Open arg for Write/Only */ @@ -186,12 +185,20 @@ extern char *getenv (); extern FILE *fdopen (); extern char *version_string; extern struct tm *localtime (); +#ifndef VMS +#ifndef HAVE_STRERROR extern int sys_nerr; #if defined(bsd4_4) || defined(__NetBSD__) extern const char *const sys_errlist[]; #else extern char *sys_errlist[]; #endif +#else /* HAVE_STERRROR */ +char *strerror (); +#endif +#else /* VMS */ +char *strerror (int,...); +#endif extern int parse_escape (); #ifndef errno @@ -8386,6 +8393,39 @@ change_newlines (start, length) return obp - start; } +/* + * my_strerror - return the descriptive text associated with an `errno' code. + */ + +char * +my_strerror (errnum) + int errnum; +{ + char *result; + +#ifndef VMS +#ifndef HAVE_STRERROR + result = (char *) ((errnum < sys_nerr) ? sys_errlist[errnum] : 0); +#else + result = strerror (errnum); +#endif +#else /* VMS */ + /* VAXCRTL's strerror() takes an optional second argument, which only + matters when the first argument is EVMSERR. However, it's simplest + just to pass it unconditionally. `vaxc$errno' is declared in + , and maintained by the library in parallel with `errno'. + We assume that caller's `errnum' either matches the last setting of + `errno' by the library or else does not have the value `EVMSERR'. */ + + result = strerror (errnum, vaxc$errno); +#endif + + if (!result) + result = "undocumented I/O error"; + + return result; +} + /* * error - print error message and increment count of errors. */ @@ -8433,10 +8473,7 @@ error_from_errno (name) if (ip != NULL) fprintf (stderr, "%s:%d: ", ip->nominal_fname, ip->lineno); - if (errno < sys_nerr) - fprintf (stderr, "%s: %s\n", name, sys_errlist[errno]); - else - fprintf (stderr, "%s: undocumented I/O error\n", name); + fprintf (stderr, "%s: %s\n", name, my_strerror (errno)); errors++; } @@ -9395,10 +9432,7 @@ perror_with_name (name) char *name; { fprintf (stderr, "%s: ", progname); - if (errno < sys_nerr) - fprintf (stderr, "%s: %s\n", name, sys_errlist[errno]); - else - fprintf (stderr, "%s: undocumented I/O error\n", name); + fprintf (stderr, "%s: %s\n", name, my_strerror (errno)); errors++; }