15void h(
char *
home,
char *queue,
int uid,
int gid,
int mode)
17 if (mkdir(
home,0700) == -1)
19 logmsg(
WHO,111,FATAL,B(
"unable to mkdir: ",
home));
21 logmsg(
WHO,111,FATAL,B(
"unable to chown: ",
home));
22 if (chmod(
home,mode) == -1)
23 logmsg(
WHO,111,FATAL,B(
"unable to chmod: ",
home));
25 if (mkdir(queue,0700) == -1) {
27 logmsg(
WHO,111,FATAL,B(
"unable to mkdir: ",queue));
29 if (chown(queue,
uid,gid) == -1)
30 logmsg(
WHO,111,FATAL,B(
"unable to chown: ",queue));
31 if (chmod(queue,mode) == -1)
32 logmsg(
WHO,111,FATAL,B(
"unable to chmod: ",queue));
36void d(
char *
home,
char *subdir,
int uid,
int gid,
int mode)
38 if (chdir(
home) == -1)
39 logmsg(
WHO,110,FATAL,B(
"unable to switch to: ",
home));
40 if (mkdir(subdir,0700) == -1)
42 logmsg(
WHO,111,FATAL,B(
"unable to mkdir: ",
home,
"/",subdir));
43 if (chown(subdir,
uid,gid) == -1)
44 logmsg(
WHO,111,FATAL,B(
"unable to chown: ",
home,
"/",subdir));
45 if (chmod(subdir,mode) == -1)
46 logmsg(
WHO,111,FATAL,B(
"unable to chmod: ",
home,
"/",subdir));
49void p(
char *queue,
char *fifo,
int uid,
int gid,
int mode)
51 if (chdir(queue) == -1)
52 logmsg(
WHO,110,FATAL,B(
"unable to switch to: ",queue,
"/queue"));
55 logmsg(
WHO,111,FATAL,B(
"unable to mkfifo: ",queue,
"/queue/",fifo));
56 if (chown(fifo,
uid,gid) == -1)
57 logmsg(
WHO,111,FATAL,B(
"unable to chown: ",queue,
"/queue/",fifo));
58 if (chmod(fifo,mode) == -1)
59 logmsg(
WHO,111,FATAL,B(
"unable to chmod: ",queue,
"/queue/",fifo));
73 logmsg(
WHO,110,FATAL,
"unable to switch back to source directory: ");
77 logmsg(
WHO,111,FATAL,B(
"unable to read: ",
file));
80 if (chdir(
home) == -1)
81 logmsg(
WHO,110,FATAL,B(
"unable to switch to: ",
home));
82 if (chdir(subdir) == -1)
83 logmsg(
WHO,110,FATAL,B(
"unable to switch to: ",
home,
"/",subdir));
87 logmsg(
WHO,111,FATAL,B(
"unable to write .../",subdir,
"/",
file));
90 switch (buffer_copy(&
bo,&
bi)) {
92 logmsg(
WHO,111,FATAL,B(
"unable to read: ",
file));
94 logmsg(
WHO,111,FATAL,B(
"unable to write .../",subdir,
"/",
file));
98 if (buffer_flush(&
bo) == -1)
99 logmsg(
WHO,111,FATAL,B(
"unable to write .../",subdir,
"/",
file));
100 if (fsync(
fdout) == -1)
101 logmsg(
WHO,111,FATAL,B(
"unable to write .../",subdir,
"/",
file));
102 if (close(
fdout) == -1)
103 logmsg(
WHO,111,FATAL,B(
"unable to write .../",subdir,
"/",
file));
106 logmsg(
WHO,111,FATAL,B(
"unable to chown .../",subdir,
"/",
file));
107 if (chmod(
file,mode) == -1)
108 logmsg(
WHO,111,FATAL,B(
"unable to chmod .../",subdir,
"/",
file));
115 if (chdir(
home) == -1)
116 logmsg(
WHO,110,FATAL,B(
"unable to switch to: ",
home));
120 logmsg(
WHO,111,FATAL,B(
"unable to write: ",
home,
"/",
file));
124 if (buffer_put(&
bo,
"",1) == -1)
125 logmsg(
WHO,111,FATAL,B(
"unable to write: ",
home,
"/",
file));
127 if (buffer_flush(&
bo) == -1)
128 logmsg(
WHO,111,FATAL,B(
"unable to write: ",
home,
"/",
file));
129 if (fsync(
fdout) == -1)
130 logmsg(
WHO,111,FATAL,B(
"unable to write: ",
home,
"/",
file));
131 if (close(
fdout) == -1)
132 logmsg(
WHO,111,FATAL,B(
"unable to write: ",
home,
"/",
file));
135 logmsg(
WHO,111,FATAL,B(
"unable to chown: ",
home,
"/",
file));
136 if (chmod(
file,mode) == -1)
137 logmsg(
WHO,111,FATAL,B(
"unable to chmod: ",
home,
"/",
file));
144 logmsg(
WHO,110,FATAL,
"unable to open current directory: ");
int fifo_make(char *fn, int mode)
void c(char *, char *, char *, int, int, int)
char inbuf[BUFFER_INSIZE]
void p(char *queue, char *fifo, int uid, int gid, int mode)
void z(char *home, char *file, int len, int uid, int gid, int mode)
char outbuf[BUFFER_OUTSIZE]
void h(char *home, char *queue, int uid, int gid, int mode)