diff -r -u3 fastforward-0.51_orig/newaliases.c fastforward-0.51/newaliases.c --- fastforward-0.51_orig/newaliases.c Tue May 19 12:25:42 1998 +++ fastforward-0.51/newaliases.c Fri Jan 1 15:15:50 1999 @@ -270,18 +270,43 @@ if (cdbmss_add(&cdbmss,key.s,key.len,instr.s,instr.len) == -1) writeerr(); } -void main() +void main(argc,argv) +int argc; +int **argv; { int fd; + stralloc aliases = {0}; + stralloc tmp = {0}; + stralloc bin = {0}; + umask(033); readcontrols(); - fd = open_read("/etc/aliases"); + if ( argc < 1 ) + { + if (!stralloc_copys(&aliases, "/etc/aliases")) nomem(); + } + else + { + if (!stralloc_copys(&aliases, argv[1])) nomem(); + } + + if (!stralloc_copy(&tmp, &aliases)) nomem(); + if (!stralloc_cats(&tmp, ".tmp")) nomem(); + if (!stralloc_0(&tmp)) nomem(); + + if (!stralloc_copy(&bin, &aliases)) nomem(); + if (!stralloc_cats(&bin, ".cdb")) nomem(); + if (!stralloc_0(&bin)) nomem(); + + if (!stralloc_0(&aliases)) nomem(); + + fd = open_read(aliases.s); if (fd == -1) readerr(); substdio_fdbuf(&ssin,read,fd,inbuf,sizeof inbuf); - fd = open_trunc("/etc/aliases.tmp"); + fd = open_trunc(tmp.s); if (fd == -1) strerr_die2sys(111,FATAL,"unable to create /etc/aliases.tmp: "); if (cdbmss_start(&cdbmss,fd) == -1) writeerr(); @@ -314,7 +339,7 @@ if (fsync(fd) == -1) writeerr(); if (close(fd) == -1) writeerr(); /* NFS stupidity */ - if (rename("/etc/aliases.tmp","/etc/aliases.cdb") == -1) + if (rename(tmp.s,bin.s) == -1) strerr_die2sys(111,FATAL,"unable to move /etc/aliases.tmp to /etc/aliases.cdb: "); _exit(0);