40 lines
1.0 KiB
C
40 lines
1.0 KiB
C
/* p e r r o r */
|
|
|
|
#include "stdiolib.h"
|
|
|
|
/*LINTLIBRARY*/
|
|
|
|
void perror F1(register CONST char *, s)
|
|
|
|
{
|
|
#define MAXDIGS 11 /* maximum digits in unknown */
|
|
static char unknown[] = {'U','n','k','n','o','w','n',' ',
|
|
'e','r','r','o','r',' ',
|
|
'0','0','0','0','0','0','0','0','0','0','0',0};
|
|
int errnum; /* error number */
|
|
char *errdesc; /* error description */
|
|
|
|
errnum = errno;
|
|
|
|
if (__Zerr != NULL)
|
|
(void) FFLUSH(__Zerr);
|
|
|
|
if (s != NULL && *s != 0) {
|
|
(void) __iowrite(STDERR_FILENO, (char *) s, strlen(s));
|
|
(void) __iowrite(STDERR_FILENO, ": ", 2);
|
|
}
|
|
if (errnum > 0 && errnum < sys_nerr)
|
|
errdesc = sys_errlist[errnum];
|
|
else {
|
|
errdesc = &unknown[sizeof(unknown)-MAXDIGS-1];
|
|
if (errnum < 0) {
|
|
*errdesc++ = '-';
|
|
errnum = -errnum;
|
|
}
|
|
*__utoa(errdesc, (unsigned) errnum, 1) = 0;
|
|
errdesc = &unknown[0];
|
|
}
|
|
(void) __iowrite(STDERR_FILENO, errdesc, strlen(errdesc));
|
|
(void) __iowrite(STDERR_FILENO, "\n", 1);
|
|
}
|