diff options
Diffstat (limited to 'sqmail-4.3.07/src/setmaillist.c')
-rw-r--r-- | sqmail-4.3.07/src/setmaillist.c | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/sqmail-4.3.07/src/setmaillist.c b/sqmail-4.3.07/src/setmaillist.c deleted file mode 100644 index f7ac89b..0000000 --- a/sqmail-4.3.07/src/setmaillist.c +++ /dev/null @@ -1,93 +0,0 @@ -#include <unistd.h> -#include <sys/stat.h> -#include "buffer.h" -#include "logmsg.h" -#include "stralloc.h" -#include "getln.h" -#include "open.h" -#include "byte.h" - -#define WHO "setmaillist" - -int rename(const char *,const char *); // stdio.h - -void usage() -{ - logmsg(WHO,100,USAGE,"setmaillist list.bin list.tmp"); -} - -stralloc line = {0}; -int match; - -char *fnbin; -char *fntmp; -int fd; -char buf[1024]; -buffer bo; - -void writeerr() -{ - logmsg(WHO,111,FATAL,B("unable to write to: ",fntmp)); -} - -static void out(char *s,int len) -{ - if (buffer_put(&bo,s,len) == -1) writeerr(); -} - -int main(int argc,char **argv) -{ - umask(033); - - fnbin = argv[1]; if (!fnbin) usage(); - fntmp = argv[2]; if (!fntmp) usage(); - - fd = open_trunc(fntmp); - if (fd == -1) - logmsg(WHO,111,FATAL,B("unable to create: ",fntmp)); - - buffer_init(&bo,write,fd,buf,sizeof(buf)); - - - do { - if (getln(buffer_0small,&line,&match,'\n') == -1) - logmsg(WHO,111,FATAL,"unable to read input: "); - - while (line.len) { - if (line.s[line.len - 1] != '\n') - if (line.s[line.len - 1] != ' ') - if (line.s[line.len - 1] != '\t') - break; - --line.len; - } - - if (byte_chr(line.s,line.len,'\0') != line.len) - logmsg(WHO,111,FATAL,"NUL in input"); - - if (line.len) - if (line.s[0] != '#') { - if ((line.s[0] == '.') || (line.s[0] == '/')) { - out(line.s,line.len); - out("",1); - } - else { - if (line.len > 800) - logmsg(WHO,111,FATAL,"addresses must be under 800 bytes"); - if (line.s[0] != '&') - out("&",1); - out(line.s,line.len); - out("",1); - } - } - - } while (match); - - if (buffer_flush(&bo) == -1) writeerr(); - if (fsync(fd) == -1) writeerr(); - if (close(fd) == -1) writeerr(); /* NFS stupidity */ - - if (rename(fntmp,fnbin) == -1) - logmsg(WHO,111,FATAL,B("unable to move ",fntmp," to: ",fnbin)); - - _exit(0); -} |