20static void die(
int n) { buffer_flush(buffer_1);
_exit(n); }
22static void warn(
char *s1,
char *s2)
26 buffer_puts(buffer_1,s1);
27 buffer_puts(buffer_1,s2);
28 buffer_puts(buffer_1,
": ");
29 buffer_puts(buffer_1,x);
30 buffer_puts(buffer_1,
"\n");
33static void die_nomem() { buffer_puts(buffer_1,
"fatal: out of memory\n");
die(111); }
34static void die_chdir() { warn(
"fatal: unable to chdir",
"");
die(110); }
35static void die_opendir(
fn)
char *
fn; { warn(
"fatal: unable to opendir ",
fn);
die(110); }
37static void err(
unsigned long id)
40 foo[fmt_ulong(
foo,
id)] = 0;
41 warn(
"warning: trouble with #",
foo);
58static unsigned int fmtstats(
char *s)
67 i = fmt_str(s,
" GMT #"); len += i;
if (s) s += i;
68 i = fmt_ulong(s,
id); len += i;
if (s) s += i;
69 i = fmt_str(s,
" "); len += i;
if (s) s += i;
70 i = fmt_ulong(s,
size); len += i;
if (s) s += i;
71 i = fmt_str(s,
" <"); len += i;
if (s) s += i;
72 i = fmt_str(s,
sender.s + 1); len += i;
if (s) s += i;
73 i = fmt_str(s,
"> "); len += i;
if (s) s += i;
75 i = fmt_str(s,
" bouncing"); len += i;
if (s) s += i;
83static void out(
char *s,
unsigned int n)
86 buffer_put(buffer_1,((*s >= 32) && (*s <= 126)) ? s :
"_",1);
91static void outs(
char *s) {
out(s,str_len(s)); }
92static void outok(
char *s) { buffer_puts(buffer_1,s); }
114 if (chdir(
"queue") == -1) die_chdir();
125 if (stat(
fnmess,&st) == -1) { err(
id);
continue; }
130 if (
fd == -1) { err(
id);
continue; }
133 if (fstat(
fd,&st) == -1) { close(
fd); err(
id);
continue; }
139 for (channel = 0; channel < 2; ++channel) {
142 if (errno != ENOENT) err(
id);
151 outok(channel ?
"\tremote\t" :
"\tlocal\t");
unsigned int date822fmt(char *s, struct datetime *dt)
void datetime_tai(struct datetime *dt, datetime_sec t)
unsigned int fmtqfn(char *s, char *dirslash, unsigned long id, int flagsplit)
void readsubdir_init(readsubdir *, char *, void(*)())
int readsubdir_next(readsubdir *, unsigned long *)