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