13 #define FATAL "idedit: fatal: "
14 #define WARNING "idedit: warning: "
25 if (pos
[scan_ulong(pos
,&u
)]) return;
27 if (seek_set(fd
,(seek_pos
) u
) == -1)
28 strerr_die2sys(111,FATAL
,"unable to seek: ");
31 if (write(fd
,&ch
,1) != 1)
32 strerr_die2sys(111,FATAL
,"unable to write: ");
44 strerr_die2sys(111,FATAL
,"unable to fork: ");
48 strerr_die4sys(111,WARNING
,"unable to run ",*args
,": ");
51 if (wait_pid(&wstat
,pid
) != pid
)
52 strerr_die2sys(111,FATAL
,"waitpid surprise");
55 void u(account
,group
,home
,pos0
,pos1
,pos2
,pos3
)
67 pw
= getpwnam(account
);
70 args
[0] = "add-account";
76 pw
= getpwnam(account
);
80 strerr_die3x(111,FATAL
,"unable to find uid for ",account
);
83 byte(pos0
,value
); value
>>= 8;
84 byte(pos1
,value
); value
>>= 8;
85 byte(pos2
,value
); value
>>= 8;
86 byte(pos3
,value
); value
>>= 8;
88 strerr_die3x(111,FATAL
,"excessively large uid for ",account
);
91 void g(group
,pos0
,pos1
,pos2
,pos3
)
101 gr
= getgrnam(group
);
104 args
[0] = "add-group";
108 gr
= getgrnam(group
);
112 strerr_die3x(111,FATAL
,"unable to find gid for ",group
);
115 byte(pos0
,value
); value
>>= 8;
116 byte(pos1
,value
); value
>>= 8;
117 byte(pos2
,value
); value
>>= 8;
118 byte(pos3
,value
); value
>>= 8;
120 strerr_die3x(111,FATAL
,"excessively large gid for ",group
);
127 if (argc
< 42) _exit(100);
129 fd
= open_write(argv
[1]);
130 if (fd
== -1) strerr_die4sys(111,FATAL
,"unable to open ",argv
[1],": ");
132 g("qmail",argv
[34],argv
[35],argv
[36],argv
[37]);
133 g("nofiles",argv
[38],argv
[39],argv
[40],argv
[41]);
135 u("root",(char *) 0,"/",argv
[14],argv
[15],argv
[16],argv
[17]);
137 u("qmaild","nofiles","/var/qmail",argv
[6],argv
[7],argv
[8],argv
[9]);
138 u("qmaill","nofiles","/var/qmail",argv
[10],argv
[11],argv
[12],argv
[13]);
139 u("qmailp","nofiles","/var/qmail",argv
[18],argv
[19],argv
[20],argv
[21]);
140 u("alias","nofiles","/var/qmail/alias",argv
[2],argv
[3],argv
[4],argv
[5]);
142 u("qmailq","qmail","/var/qmail",argv
[22],argv
[23],argv
[24],argv
[25]);
143 u("qmailr","qmail","/var/qmail",argv
[26],argv
[27],argv
[28],argv
[29]);
144 u("qmails","qmail","/var/qmail",argv
[30],argv
[31],argv
[32],argv
[33]);