]> andersk Git - moira.git/blame_incremental - server/mr_util.c
Linted.
[moira.git] / server / mr_util.c
... / ...
CommitLineData
1/*
2 * $Source$
3 * $Author$
4 * $Header$
5 *
6 * Copyright (C) 1987 by the Massachusetts Institute of Technology
7 *
8 * $Log$
9 * Revision 1.10 1987-08-04 01:54:47 wesommer
10 * Changed messages.
11 *
12 * Revision 1.9 87/08/04 01:50:13 wesommer
13 * Rearranged messages.
14 *
15 * Revision 1.8 87/07/29 16:02:48 wesommer
16 * Use unsigned char rather than char to prevent sign extension
17 * problem.
18 *
19 * Revision 1.7 87/07/14 00:39:47 wesommer
20 * Changed interface to log_args.
21 *
22 * Revision 1.6 87/07/06 16:09:07 wesommer
23 * Only print ... if the string is too long..
24 *
25 * Revision 1.5 87/06/30 20:05:52 wesommer
26 * Added range checking.
27 *
28 * Revision 1.4 87/06/21 16:42:19 wesommer
29 * Performance work, rearrangement of include files.
30 *
31 * Revision 1.3 87/06/04 01:35:28 wesommer
32 * Added better logging routines.
33 *
34 * Revision 1.2 87/06/03 16:08:07 wesommer
35 * Fixes for lint.
36 *
37 * Revision 1.1 87/06/02 20:07:32 wesommer
38 * Initial revision
39 *
40 */
41
42#ifndef lint
43static char *rcsid_sms_util_c = "$Header$";
44#endif lint
45
46#include "sms_server.h"
47
48#include <ctype.h>
49#include <strings.h>
50
51extern char *whoami;
52
53char *
54requote(buf, cp, len)
55 char *buf;
56 register char *cp;
57{
58 register int count = 0;
59 register unsigned char c;
60 if (len <= 2) return buf;
61 *buf++ = '"'; count++; len--;
62 for(; (count < 40) && (len > 1) && (c = *cp);
63 cp++, --len, ++count) {
64 if (c == '\\' || c == '"') *buf++ = '\\';
65 if (isprint(c)) *buf++ = c;
66 else {
67 sprintf(buf, "\\%03o", c);
68 buf = index(buf, '\0');
69 }
70 }
71 if (len > 1) { *buf++ = '"'; count++; len--; }
72 if (len > 3 && count >= 40) {
73 *buf++ = '.'; count++; len--;
74 *buf++ = '.'; count++; len--;
75 *buf++ = '.'; count++; len--;
76 }
77 if (len > 1) *buf = '\0';
78 return buf;
79}
80
81log_args(tag, argc, argv)
82 char *tag;
83 int argc;
84 char **argv;
85{
86 char buf[BUFSIZ];
87 register int i;
88 register char *bp = buf;
89
90 i = strlen(tag);
91 bcopy(tag, bp, i+1);
92 bp += i;
93 *bp++ =':';
94 *bp++ =' ';
95
96 for (i = 0; i < argc && ((buf - bp) + 1024) > 2; i++) {
97 if (i != 0) {
98 *bp++ = ',';
99 *bp++ = ' ';
100 }
101 bp = requote(bp, argv[i], (buf - bp) + 1024);
102 }
103 *bp = '\0';
104 com_err(whoami, 0, "%s", buf);
105}
106
107void sms_com_err(whoami, code, fmt, pvar)
108 char *whoami;
109 int code;
110 char *fmt;
111 caddr_t pvar;
112{
113 extern char *error_message();
114 extern client *cur_client;
115
116 struct iovec strings[7];
117
118 if (whoami) {
119 fputs(whoami, stderr);
120 if (cur_client) fprintf(stderr, "[#%d]", cur_client->id);
121 fputs(": ", stderr);
122 }
123 if (code) {
124 fputs(error_message(code), stderr);
125 }
126 if (fmt) {
127 _doprnt(fmt, pvar, stderr);
128 }
129 putc('\n', stderr);
130}
This page took 0.026528 seconds and 5 git commands to generate.