s/qmail 4.2.29a
Next generation secure email transport
Loading...
Searching...
No Matches
qsutil.c
Go to the documentation of this file.
1#include <unistd.h>
2#include "stralloc.h"
3#include "buffer.h"
4#include "qsutil.h"
5
6static stralloc foo = {0};
7
8static char errbuf[1];
9static struct buffer be = BUFFER_INIT(write,0,errbuf,1);
10
11
12void logsa(stralloc *sa)
13{
14 buffer_putflush(&be,sa->s,sa->len);
15}
16
17void log1s(char *s1)
18{
19 buffer_putsflush(&be,s1);
20}
21
22void log2s(char *s1,char *s2)
23{
24 buffer_putsflush(&be,s1);
25 buffer_putsflush(&be,s2);
26}
27
28void log3s(char *s1,char *s2,char *s3)
29{
30 buffer_putsflush(&be,s1);
31 buffer_putsflush(&be,s2);
32 buffer_putsflush(&be,s3);
33}
34
35void log4s(char *s1,char *s2,char *s3,char *s4)
36{
37 buffer_putsflush(&be,s1);
38 buffer_putsflush(&be,s2);
39 buffer_putsflush(&be,s3);
40 buffer_putsflush(&be,s4);
41}
42
43void log5s(char *s1,char *s2,char *s3,char *s4,char *s5)
44{
45 buffer_putsflush(&be,s1);
46 buffer_putsflush(&be,s2);
47 buffer_putsflush(&be,s3);
48 buffer_putsflush(&be,s4);
49 buffer_putsflush(&be,s5);
50}
51
52void nomem()
53{
54 log1s("alert: out of memory, sleeping...\n");
55 sleep(10);
56}
57
58void pausedir(char *dir)
59{
60 log3s("alert: unable to opendir ",dir,", sleeping...\n");
61 sleep(10);
62}
63
64int issafe(char ch)
65{
66 if (ch == '%') return 0; /* general principle: allman's code is crap */
67 if (ch < 33) return 0;
68 if (ch > 126) return 0;
69 return 1;
70}
71
72void logsafe(char *s)
73{
74 int i;
75
76 while (!stralloc_copys(&foo,s)) nomem();
77 for (i = 0; i < foo.len; ++i)
78 if (foo.s[i] == '\n')
79 foo.s[i] = '/';
80 else
81 if (!issafe(foo.s[i]))
82 foo.s[i] = '_';
83
84 logsa(&foo);
85}
int stralloc_copys(stralloc *, char const *)
stralloc sa
Definition: dnscname.c:11
stralloc foo
Definition: qmail-local.c:74
buffer be
Definition: qmail-qmqpc.c:58
void logsa(stralloc *sa)
Definition: qsutil.c:12
void logsafe(char *s)
Definition: qsutil.c:72
int issafe(char ch)
Definition: qsutil.c:64
void log2s(char *s1, char *s2)
Definition: qsutil.c:22
void pausedir(char *dir)
Definition: qsutil.c:58
void log3s(char *s1, char *s2, char *s3)
Definition: qsutil.c:28
void nomem()
Definition: qsutil.c:52
void log4s(char *s1, char *s2, char *s3, char *s4)
Definition: qsutil.c:35
void log5s(char *s1, char *s2, char *s3, char *s4, char *s5)
Definition: qsutil.c:43
void log1s(char *s1)
Definition: qsutil.c:17
void write()