6 * Copyright (C) 1987 by the Massachusetts Institute of Technology
9 * Revision 1.10 1987-08-04 01:54:47 wesommer
12 * Revision 1.9 87/08/04 01:50:13 wesommer
13 * Rearranged messages.
15 * Revision 1.8 87/07/29 16:02:48 wesommer
16 * Use unsigned char rather than char to prevent sign extension
19 * Revision 1.7 87/07/14 00:39:47 wesommer
20 * Changed interface to log_args.
22 * Revision 1.6 87/07/06 16:09:07 wesommer
23 * Only print ... if the string is too long..
25 * Revision 1.5 87/06/30 20:05:52 wesommer
26 * Added range checking.
28 * Revision 1.4 87/06/21 16:42:19 wesommer
29 * Performance work, rearrangement of include files.
31 * Revision 1.3 87/06/04 01:35:28 wesommer
32 * Added better logging routines.
34 * Revision 1.2 87/06/03 16:08:07 wesommer
37 * Revision 1.1 87/06/02 20:07:32 wesommer
43 static char *rcsid_sms_util_c = "$Header$";
46 #include "sms_server.h"
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;
67 sprintf(buf, "\\%03o", c);
68 buf = index(buf, '\0');
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--;
77 if (len > 1) *buf = '\0';
81 log_args(tag, argc, argv)
88 register char *bp = buf;
96 for (i = 0; i < argc && ((buf - bp) + 1024) > 2; i++) {
101 bp = requote(bp, argv[i], (buf - bp) + 1024);
104 com_err(whoami, 0, "%s", buf);
107 void sms_com_err(whoami, code, fmt, pvar)
113 extern char *error_message();
114 extern client *cur_client;
116 struct iovec strings[7];
119 fputs(whoami, stderr);
120 if (cur_client) fprintf(stderr, "[#%d]", cur_client->id);
124 fputs(error_message(code), stderr);
127 _doprnt(fmt, pvar, stderr);