|
|
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.