]> andersk Git - moira.git/blame - server/mr_util.c
Added three error codes.
[moira.git] / server / mr_util.c
CommitLineData
a3cf6921 1/*
2 * $Source$
3 * $Author$
4 * $Header$
5 *
6 * Copyright (C) 1987 by the Massachusetts Institute of Technology
7 *
8 * $Log$
c27b3454 9 * Revision 1.4 1987-06-21 16:42:19 wesommer
10 * Performance work, rearrangement of include files.
a3cf6921 11 *
c27b3454 12 * Revision 1.3 87/06/04 01:35:28 wesommer
13 * Added better logging routines.
14 *
229feb8a 15 * Revision 1.2 87/06/03 16:08:07 wesommer
16 * Fixes for lint.
17 *
5dbd09a0 18 * Revision 1.1 87/06/02 20:07:32 wesommer
19 * Initial revision
20 *
a3cf6921 21 */
22
23#ifndef lint
24static char *rcsid_sms_util_c = "$Header$";
25#endif lint
26
a3cf6921 27#include "sms_server.h"
a3cf6921 28
29#include <ctype.h>
229feb8a 30#include <strings.h>
31
32extern char *whoami;
33
34/*
35 * XXX WARNING! THIS DOES NO RANGE CHECKING!!!
36 * This is a temporary hack...
37 */
38char *
39requote(buf, cp)
40 char *buf;
a3cf6921 41 register char *cp;
42{
43 register char c;
229feb8a 44 *buf++ = '"';
45 for( ; c= *cp; cp++){
46 if (c == '\\' || c == '"') *buf++ = '\\';
47 if (isprint(c)) *buf++ = c;
48 else {
49 sprintf(buf, "\\%03o", c);
50 buf = index(buf, '\0');
51 }
a3cf6921 52 }
229feb8a 53 *buf++ = '"';
54 *buf = '\0';
55 return buf;
a3cf6921 56}
229feb8a 57/*
58 * XXX WARNING! THIS DOES NO RANGE CHECKING!!!
59 * This is a temporary hack...
60 */
61log_args(argc, argv)
62 int argc;
63 char **argv;
64{
65 char buf[BUFSIZ];
66 register int i;
67 register char *bp = buf;
68
69 for (i = 0; i < argc; i++) {
70 if (i != 0) {
71 *bp++ = ',';
72 *bp++ = ' ';
73 }
74 bp = requote(bp, argv[i]);
75 }
76 *bp = '\0';
77 com_err(whoami, 0, buf);
78}
79
a3cf6921 80void sms_com_err(whoami, code, message)
81 char *whoami;
82 int code;
83 char *message;
84{
85 extern char *error_message();
86 extern client *cur_client;
87
88 struct iovec strings[7];
89 char buf[32];
90 if (cur_client)
91 (void) sprintf(buf, "[#%d]", cur_client->id);
92 else buf[0]='\0';
93
94 strings[1].iov_base = buf;
95 strings[1].iov_len = strlen(buf);
96
97 strings[0].iov_base = whoami;
98 if (whoami) {
99 strings[0].iov_len = strlen(whoami);
100 strings[2].iov_base = ": ";
101 strings[2].iov_len = 2;
102 } else {
103 strings[0].iov_len = 0;
104 strings[2].iov_base = " ";
105 strings[2].iov_len = 1;
106 }
107 if (code) {
108 register char *errmsg = error_message(code);
109 strings[3].iov_base = errmsg;
110 strings[3].iov_len = strlen(errmsg);
111 strings[4].iov_base = " ";
112 strings[4].iov_len = 1;
113 } else {
114 strings[3].iov_len = 0;
115 strings[4].iov_len = 0;
116 }
117 strings[5].iov_base = message;
118 strings[5].iov_len = strlen(message);
119 strings[6].iov_base = "\n";
120 strings[6].iov_len = 1;
121 (void) writev(2, strings, 7);
122}
This page took 0.085661 seconds and 5 git commands to generate.