7 #include "generic-conf.h"
9 static const char *fatal
;
10 static const char *dir
;
11 static const char *fn
;
14 static char buf
[1024];
17 void init(const char *d
,const char *f
)
22 if (mkdir(dir
,0700) == -1)
23 strerr_die4sys(111,fatal
,"unable to create ",dir
,": ");
24 if (chmod(dir
,03755) == -1)
25 strerr_die4sys(111,fatal
,"unable to set mode of ",dir
,": ");
27 strerr_die4sys(111,fatal
,"unable to switch to ",dir
,": ");
32 strerr_die6sys(111,fatal
,"unable to create ",dir
,"/",fn
,": ");
35 void makedir(const char *s
)
38 if (mkdir(fn
,0700) == -1) fail();
41 void start(const char *s
)
46 buffer_init(&ss
,buffer_unixwrite
,fd
,buf
,sizeof buf
);
49 void outs(const char *s
)
51 if (buffer_puts(&ss
,s
) == -1) fail();
54 void out(const char *s
,unsigned int len
)
56 if (buffer_put(&ss
,s
,len
) == -1) fail();
59 void copyfrom(buffer
*b
)
61 if (buffer_copy(&ss
,b
) < 0) fail();
66 if (buffer_flush(&ss
) == -1) fail();
67 if (fsync(fd
) == -1) fail();
73 if (chmod(fn
,mode
) == -1) fail();
76 void owner(int uid
,int gid
)
78 if (chown(fn
,uid
,gid
) == -1) fail();
81 void makelog(const char *user
,int uid
,int gid
)
94 outs("#!/bin/sh\nexec");
95 outs(" setuidgid "); outs(user
);
96 outs(" multilog t ./main\n");