21#define WHO "qmail-pw2u"
25 buffer_putsflush(buffer_2,
"qmail-pw2u: fatal: unable to chdir\n");
31 buffer_putsflush(buffer_2,
"qmail-pw2u: fatal: out of memory\n");
37 buffer_putsflush(buffer_2,
"qmail-pw2u: fatal: unable to read input\n");
43 buffer_putsflush(buffer_2,
"qmail-pw2u: fatal: unable to write output\n");
49 buffer_putsflush(buffer_2,
"qmail-pw2u: fatal: unable to read controls\n");
55 buffer_puts(buffer_2,
"qmail-pw2u: fatal: unable to find ");
57 buffer_puts(buffer_2,
" user\n");
58 buffer_flush(buffer_2);
64 buffer_puts(buffer_2,
"qmail-pw2u: fatal: unable to stat ");
65 buffer_puts(buffer_2,
fn);
66 buffer_puts(buffer_2,
"\n");
67 buffer_flush(buffer_2);
73 buffer_puts(buffer_2,
"qmail-pw2u: fatal: unable to find ");
74 buffer_put(buffer_2,s,len);
75 buffer_puts(buffer_2,
" user for subuser\n");
76 buffer_flush(buffer_2);
113 x =
line.s; xlen =
line.len; i = byte_chr(x,xlen,
':');
if (i == xlen)
return;
116 ++i; x += i; xlen -= i; i = byte_chr(x,xlen,
':');
if (i == xlen)
return;
117 ++i; x += i; xlen -= i; i = byte_chr(x,xlen,
':');
if (i == xlen)
return;
121 ++i; x += i; xlen -= i; i = byte_chr(x,xlen,
':');
if (i == xlen)
return;
124 ++i; x += i; xlen -= i; i = byte_chr(x,xlen,
':');
if (i == xlen)
return;
125 ++i; x += i; xlen -= i; i = byte_chr(x,xlen,
':');
if (i == xlen)
return;
131 for (i = 0; i <
user.len; ++i)
132 if ((
user.s[i] >=
'A') && (
user.s[i] <=
'Z'))
141 if (stat(
home.s,&st) == -1) {
146 if (st.st_uid !=
uid)
return;
166 if (buffer_puts(buffer_1,
"+") == -1)
die_write();
169 if (buffer_puts(buffer_1,
":\n") == -1)
die_write();
180 while (*mailnames ==
':') ++mailnames;
181 if (!*mailnames)
break;
183 i = str_chr(mailnames,
':');
185 if (buffer_puts(buffer_1,
"=") == -1)
die_write();
186 if (buffer_put(buffer_1,mailnames,i) == -1)
die_write();
188 if (buffer_puts(buffer_1,
"::\n") == -1)
die_write();
191 if (buffer_puts(buffer_1,
"+") == -1)
die_write();
192 if (buffer_put(buffer_1,mailnames,i) == -1)
die_write();
196 if (buffer_puts(buffer_1,
":\n") == -1)
die_write();
212 x =
line.s; xlen =
line.len; i = byte_chr(x,xlen,
':');
if (i == xlen)
return;
214 ++i; x += i; xlen -= i; i = byte_chr(x,xlen,
':');
if (i == xlen)
return;
217 ++i; x += i; xlen -= i; i = byte_chr(x,xlen,
':');
if (i == xlen)
return;
219 if (buffer_puts(buffer_1,
"=") == -1)
die_write();
223 if (buffer_put(buffer_1,x,i) == -1)
die_write();
224 if (buffer_puts(buffer_1,
":\n") == -1)
die_write();
227 if (buffer_puts(buffer_1,
"+") == -1)
die_write();
232 if (buffer_put(buffer_1,x,i) == -1)
die_write();
233 if (buffer_puts(buffer_1,
"-:\n") == -1)
die_write();
246 while ((opt = getopt(argc,argv,
"/ohHuUc:C")) != opteof)
286 fd = open_read(
"users/subusers");
304 fd = open_read(
"users/append");
317 if (buffer_puts(buffer_1,
".\n") == -1)
die_write();
318 if (buffer_flush(buffer_1) == -1)
die_write();
int constmap_init(struct constmap *cm, char *s, int len, int flagcolon)
int control_readfile(stralloc *sa, char *fn, int flagme)
int stralloc_copys(stralloc *, char const *)
char inbuf[BUFFER_INSIZE]
void die_user(char *s, unsigned int len)