diff options
Diffstat (limited to 'usr.sbin/sendmail/makemap/makemap.c')
-rw-r--r-- | usr.sbin/sendmail/makemap/makemap.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/usr.sbin/sendmail/makemap/makemap.c b/usr.sbin/sendmail/makemap/makemap.c index 371b229a2175..ac1fb1a61959 100644 --- a/usr.sbin/sendmail/makemap/makemap.c +++ b/usr.sbin/sendmail/makemap/makemap.c @@ -33,7 +33,7 @@ */ #ifndef lint -static char sccsid[] = "@(#)makemap.c 8.14 (Berkeley) 11/5/95"; +static char sccsid[] = "@(#)makemap.c 8.17 (Berkeley) 9/25/96"; #endif /* not lint */ #include <stdio.h> @@ -45,6 +45,7 @@ static char sccsid[] = "@(#)makemap.c 8.14 (Berkeley) 11/5/95"; #ifndef ISC_UNIX # include <sys/file.h> #endif +#define NOT_SENDMAIL #include "useful.h" #include "conf.h" @@ -95,6 +96,7 @@ main(argc, argv) int lineno; int st; int mode; + int putflags; enum type type; int fd; union @@ -211,20 +213,33 @@ main(argc, argv) bzero(&bti, sizeof bti); if (allowdups) bti.flags |= R_DUP; + if (allowdups || allowreplace) + putflags = 0; + else + putflags = R_NOOVERWRITE; break; case T_HASH: + if (allowreplace) + putflags = 0; + else + putflags = R_NOOVERWRITE; + break; #endif #ifdef NDBM case T_DBM: -#endif if (allowdups) { fprintf(stderr, "%s: Type %s does not support -d (allow dups)\n", progname, typename); exit(EX_UNAVAILABLE); } + if (allowreplace) + putflags = DBM_REPLACE; + else + putflags = DBM_INSERT; break; +#endif } /* @@ -386,16 +401,14 @@ main(argc, argv) { #ifdef NDBM case T_DBM: - st = dbm_store(dbp.dbm, key.dbm, val.dbm, - allowreplace ? DBM_REPLACE : DBM_INSERT); + st = dbm_store(dbp.dbm, key.dbm, val.dbm, putflags); break; #endif #ifdef NEWDB case T_BTREE: case T_HASH: - st = (*dbp.db->put)(dbp.db, &key.db, &val.db, - allowreplace ? 0 : R_NOOVERWRITE); + st = (*dbp.db->put)(dbp.db, &key.db, &val.db, putflags); break; #endif } |