6 * Copyright (C) 1987 by the Massachusetts Institute of Technology
9 * Revision 1.9 1987-08-04 01:50:13 wesommer
10 * Rearranged messages.
12 * Revision 1.8 87/07/29 16:02:48 wesommer
13 * Use unsigned char rather than char to prevent sign extension
16 * Revision 1.7 87/07/14 00:39:47 wesommer
17 * Changed interface to log_args.
19 * Revision 1.6 87/07/06 16:09:07 wesommer
20 * Only print ... if the string is too long..
22 * Revision 1.5 87/06/30 20:05:52 wesommer
23 * Added range checking.
25 * Revision 1.4 87/06/21 16:42:19 wesommer
26 * Performance work, rearrangement of include files.
28 * Revision 1.3 87/06/04 01:35:28 wesommer
29 * Added better logging routines.
31 * Revision 1.2 87/06/03 16:08:07 wesommer
34 * Revision 1.1 87/06/02 20:07:32 wesommer
40 static char *rcsid_sms_util_c = "$Header$";
43 #include "sms_server.h"
55 register int count = 0;
56 register unsigned char c;
57 if (len <= 2) return buf;
58 *buf++ = '"'; count++; len--;
59 for(; (count < 40) && (len > 1) && (c = *cp);
60 cp++, --len, ++count) {
61 if (c == '\\' || c == '"') *buf++ = '\\';
62 if (isprint(c)) *buf++ = c;
64 sprintf(buf, "\\%03o", c);
65 buf = index(buf, '\0');
68 if (len > 1) { *buf++ = '"'; count++; len--; }
69 if (len > 3 && count >= 40) {
70 *buf++ = '.'; count++; len--;
71 *buf++ = '.'; count++; len--;
72 *buf++ = '.'; count++; len--;
74 if (len > 1) *buf = '\0';
78 log_args(tag, argc, argv)
85 register char *bp = buf;
93 for (i = 0; i < argc && ((buf - bp) + 1024) > 2; i++) {
98 bp = requote(bp, argv[i], (buf - bp) + 1024);
101 com_err(whoami, 0, buf);
104 void sms_com_err(whoami, code, fmt, pvar)
110 extern char *error_message();
111 extern client *cur_client;
113 struct iovec strings[7];
116 fputs(whoami, stderr);
117 if (cur_client) fprintf(stderr, "[#%d]", cur_client->id);
121 fputs(error_message(code), stderr);
124 _doprnt(fmt, pvar, stderr);