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");