qsutil.c
changeset 0 068428edee47
equal deleted inserted replaced
-1:000000000000 0:068428edee47
       
     1 #include "stralloc.h"
       
     2 #include "readwrite.h"
       
     3 #include "substdio.h"
       
     4 #include "qsutil.h"
       
     5 
       
     6 static stralloc foo = {0};
       
     7 
       
     8 static char errbuf[1];
       
     9 static struct substdio sserr = SUBSTDIO_FDBUF(write,0,errbuf,1);
       
    10 
       
    11 void logsa(sa) stralloc *sa; {
       
    12  substdio_putflush(&sserr,sa->s,sa->len); }
       
    13 void log1(s1) char *s1; {
       
    14  substdio_putsflush(&sserr,s1); }
       
    15 void log2(s1,s2) char *s1; char *s2; {
       
    16  substdio_putsflush(&sserr,s1);
       
    17  substdio_putsflush(&sserr,s2); }
       
    18 void log3(s1,s2,s3) char *s1; char *s2; char *s3; {
       
    19  substdio_putsflush(&sserr,s1);
       
    20  substdio_putsflush(&sserr,s2);
       
    21  substdio_putsflush(&sserr,s3); }
       
    22 void nomem() { log1("alert: out of memory, sleeping...\n"); sleep(10); }
       
    23 
       
    24 void pausedir(dir) char *dir;
       
    25 { log3("alert: unable to opendir ",dir,", sleeping...\n"); sleep(10); }
       
    26 
       
    27 static int issafe(ch) char ch;
       
    28 {
       
    29  if (ch == '%') return 0; /* general principle: allman's code is crap */
       
    30  if (ch < 33) return 0;
       
    31  if (ch > 126) return 0;
       
    32  return 1;
       
    33 }
       
    34 
       
    35 void logsafe(s) char *s;
       
    36 {
       
    37  int i;
       
    38  while (!stralloc_copys(&foo,s)) nomem();
       
    39  for (i = 0;i < foo.len;++i)
       
    40    if (foo.s[i] == '\n')
       
    41      foo.s[i] = '/';
       
    42    else
       
    43      if (!issafe(foo.s[i]))
       
    44        foo.s[i] = '_';
       
    45  logsa(&foo);
       
    46 }