diff options
Diffstat (limited to 'util/splitpasswd.c')
-rw-r--r-- | util/splitpasswd.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/util/splitpasswd.c b/util/splitpasswd.c new file mode 100644 index 00000000..1a800f6c --- /dev/null +++ b/util/splitpasswd.c @@ -0,0 +1,32 @@ +#include "bbs.h" +#include <err.h> + +int main(int argc, char **argv) +{ + userec_t xuser; + int fd, ufd; + char path[80], fn[80]; + + chdir(BBSHOME); + if( (fd = open(".PASSWDS", O_RDONLY)) < 0 ) + err(1, ".PASSWDS"); + + while( read(fd, &xuser, sizeof(xuser)) > 0 ){ + if( strcmp(xuser.userid, "in2") != 0 ) + continue; + sprintf(path, "home/%c/%s", xuser.userid[0], xuser.userid); + if( access(path, 0) < 0 ){ + printf("user home error (%s) (%s)\n", xuser.userid, path); + continue; + } + sprintf(fn, "%s/.passwd", path); + if( (ufd = open(fn, O_WRONLY | O_CREAT, 0600)) < 0 ){ + perror(path); + continue; + } + write(ufd, &xuser, sizeof(xuser)); + close(ufd); + } + + return 0; +} |