|
|
1.1 ! root 1: /* ! 2: char id_perror[] = "@(#)perror_.c 1.2"; ! 3: * ! 4: * write a standard error message to the standard error output ! 5: * ! 6: * calling sequence: ! 7: * call perror(string) ! 8: * where: ! 9: * string will be written preceeding the standard error message ! 10: */ ! 11: ! 12: #include <stdio.h> ! 13: #include "../libI77/fiodefs.h" ! 14: #include "../libI77/f_errno.h" ! 15: ! 16: extern char *sys_errlist[]; ! 17: extern int sys_nerr; ! 18: extern char *f_errlist[]; ! 19: extern int f_nerr; ! 20: extern unit units[]; ! 21: ! 22: perror_(s, len) ! 23: char *s; long len; ! 24: { ! 25: unit *lu; ! 26: char buf[40]; ! 27: char *mesg = s + len; ! 28: ! 29: while (len > 0 && *--mesg == ' ') ! 30: len--; ! 31: if (errno >=0 && errno < sys_nerr) ! 32: mesg = sys_errlist[errno]; ! 33: else if (errno >= F_ER && errno < (F_ER + f_nerr)) ! 34: mesg = f_errlist[errno - F_ER]; ! 35: else ! 36: { ! 37: sprintf(buf, "%d: unknown error number", errno); ! 38: mesg = buf; ! 39: } ! 40: lu = &units[STDERR]; ! 41: if (!lu->uwrt) ! 42: nowwriting(lu); ! 43: while (len-- > 0) ! 44: putc(*s++, lu->ufd); ! 45: fprintf(lu->ufd, ": %s\n", mesg); ! 46: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.