|
|
1.1 root 1: /*
2: * Copyright 1987 by MIT Student Information Processing Board
3: *
4: * For copyright info, see mit-sipb-copyright.h.
5: */
6:
7: #include <stdio.h>
8: #include <sys/types.h>
9: #include <sys/uio.h>
10: #include "error_table.h"
11: #include "mit-sipb-copyright.h"
12:
13: typedef int (*int_func)();
14:
15: #if defined(mips) && defined(ultrix)
16: int errno; /* this is needed to keep the loader from complaining */
17: #endif
18:
19: int_func com_err_hook = (int_func) NULL;
20: char *error_message();
21:
22: void
23: com_err(whoami, code, message)
24: char *whoami;
25: int code;
26: char *message;
27: {
28: struct iovec strings[6];
29:
30: if (com_err_hook) {
31: (*com_err_hook)(whoami, code, message);
32: return;
33: }
34:
35: strings[0].iov_base = whoami;
36: strings[0].iov_len = strlen(whoami);
37: if (whoami) {
38: strings[1].iov_base = ": ";
39: strings[1].iov_len = 2;
40: } else
41: strings[1].iov_len = 0;
42: if (code) {
43: register char *errmsg = error_message(code);
44: strings[2].iov_base = errmsg;
45: strings[2].iov_len = strlen(errmsg);
46: } else
47: strings[2].iov_len = 0;
48: strings[3].iov_base = " ";
49: strings[3].iov_len = 1;
50: strings[4].iov_base = message;
51: strings[4].iov_len = strlen(message);
52: strings[5].iov_base = "\n";
53: strings[5].iov_len = 1;
54: (void) writev(2, strings, 6);
55: }
56:
57: int_func
58: set_com_err_hook(new_proc)
59: int_func new_proc;
60: {
61: register int_func x = com_err_hook;
62: com_err_hook = new_proc;
63: return (x);
64: }
65:
66: reset_com_err_hook()
67: {
68: com_err_hook = (int_func) NULL;
69: }
70:
71: void
72: perror(msg)
73: register char *msg;
74: {
75: com_err(msg, errno, (char *)NULL);
76: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.