]> andersk Git - moira.git/blobdiff - server/mr_util.c
Added "now" variable.
[moira.git] / server / mr_util.c
index c1bae1fd01d52e71f0e6423a9cca9ac9a4aeb09e..7ce0ff9f48645cf4abd44561643f482bf5112855 100644 (file)
@@ -6,9 +6,28 @@
  *     Copyright (C) 1987 by the Massachusetts Institute of Technology
  *
  *     $Log$
- *     Revision 1.2  1987-06-03 16:08:07  wesommer
- *     Fixes for lint.
+ *     Revision 1.8  1987-07-29 16:02:48  wesommer
+ *     Use unsigned char rather than char to prevent sign extension
+ *     problem.
  *
+ * Revision 1.7  87/07/14  00:39:47  wesommer
+ * Changed interface to log_args.
+ * 
+ * Revision 1.6  87/07/06  16:09:07  wesommer
+ * Only print ... if the string is too long..
+ * 
+ * Revision 1.5  87/06/30  20:05:52  wesommer
+ * Added range checking.
+ * 
+ * Revision 1.4  87/06/21  16:42:19  wesommer
+ * Performance work, rearrangement of include files.
+ * 
+ * Revision 1.3  87/06/04  01:35:28  wesommer
+ * Added better logging routines.
+ * 
+ * Revision 1.2  87/06/03  16:08:07  wesommer
+ * Fixes for lint.
+ * 
  * Revision 1.1  87/06/02  20:07:32  wesommer
  * Initial revision
  * 
 static char *rcsid_sms_util_c = "$Header$";
 #endif lint
 
-#include "sms_private.h"
 #include "sms_server.h"
 
 #include <ctype.h>
-#ifdef notdef
-frequote(f, cp)
-       FILE *f;
+#include <strings.h>
+
+extern char *whoami;
+
+char *
+requote(buf, cp, len)
+       char *buf;
        register char *cp;
 {
-       register char c;
-       putc('"', f);
-       for( ; c= *cp; *cp++){
-               if (c == '\\' || c == '"') putc('\\', f);
-               if (isprint(c)) putc(c, f);
-               else fprintf(f, "\\%03o", c);
+       register int count = 0;
+       register unsigned char c;
+       if (len <= 2) return buf;
+       *buf++ = '"'; count++; len--;
+       for(; (count < 40) && (len > 1) && (c = *cp);
+           cp++, --len, ++count) {
+               if (c == '\\' || c == '"') *buf++ = '\\';
+               if (isprint(c)) *buf++ = c;
+               else {
+                       sprintf(buf, "\\%03o", c);
+                       buf = index(buf, '\0');
+               }
+       }
+       if (len > 1) { *buf++ = '"'; count++; len--; }
+       if (len > 3 && count >= 40) {
+               *buf++ = '.'; count++; len--;
+               *buf++ = '.'; count++; len--;
+               *buf++ = '.'; count++; len--;
        }
-       putc('"', f);
+       if (len > 1) *buf = '\0';
+       return buf;
 }
-#endif notdef
 
+log_args(tag, argc, argv)
+       char *tag;
+       int argc;
+       char **argv;
+{
+       char buf[BUFSIZ];
+       register int i;
+       register char *bp = buf;
+       
+       i = strlen(tag);
+       bcopy(tag, bp, i+1);
+       bp += i;
+       *bp++ =':';
+       *bp++ =' ';
+       
+       for (i = 0; i < argc && ((buf - bp) + 1024) > 2; i++) {
+               if (i != 0) {
+                       *bp++ = ',';
+                       *bp++ = ' '; 
+               }
+               bp = requote(bp, argv[i], (buf - bp) + 1024);
+       }
+       *bp = '\0';
+       com_err(whoami, 0, buf);
+}
+       
 void sms_com_err(whoami, code, message)
        char *whoami;
        int code;
This page took 0.09587 seconds and 4 git commands to generate.