diff options
Diffstat (limited to 'contrib/sendmail/makemap/makemap.c')
-rw-r--r-- | contrib/sendmail/makemap/makemap.c | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/contrib/sendmail/makemap/makemap.c b/contrib/sendmail/makemap/makemap.c index cabb18a..0506dc4 100644 --- a/contrib/sendmail/makemap/makemap.c +++ b/contrib/sendmail/makemap/makemap.c @@ -21,9 +21,10 @@ static char copyright[] = #endif /* ! lint */ #ifndef lint -static char id[] = "@(#)$Id: makemap.c,v 8.135.4.13 2000/10/05 23:00:50 gshapiro Exp $"; +static char id[] = "@(#)$Id: makemap.c,v 8.135.4.11 2000/09/13 01:11:10 gshapiro Exp $"; #endif /* ! lint */ +/* $FreeBSD$ */ #include <sys/types.h> #ifndef ISC_UNIX @@ -356,6 +357,7 @@ main(argc, argv) exitstat = EX_OK; if (unmake) { + bool stop; errno = database->smdb_cursor(database, &cursor, 0); if (errno != SMDBE_OK) { @@ -369,18 +371,20 @@ main(argc, argv) memset(&db_key, '\0', sizeof db_key); memset(&db_val, '\0', sizeof db_val); - for (lineno = 0; ; lineno++) + for (stop = FALSE, lineno = 0; !stop; lineno++) { errno = cursor->smdbc_get(cursor, &db_key, &db_val, SMDB_CURSOR_GET_NEXT); if (errno != SMDBE_OK) - break; - - printf("%.*s\t%.*s\n", - (int) db_key.size, - (char *) db_key.data, - (int) db_val.size, - (char *)db_val.data); + { + stop = TRUE; + } + if (!stop) + printf("%.*s\t%.*s\n", + (int) db_key.data.size, + (char *) db_key.data.data, + (int) db_val.data.size, + (char *)db_val.data.data); } (void) cursor->smdbc_close(cursor); @@ -427,16 +431,16 @@ main(argc, argv) memset(&db_key, '\0', sizeof db_key); memset(&db_val, '\0', sizeof db_val); - db_key.data = ibuf; + db_key.data.data = ibuf; for (p = ibuf; *p != '\0' && !(ISSEP(*p)); p++) { if (foldcase && isascii(*p) && isupper(*p)) *p = tolower(*p); } - db_key.size = p - ibuf; + db_key.data.size = p - ibuf; if (inclnull) - db_key.size++; + db_key.data.size++; if (*p != '\0') *p++ = '\0'; @@ -447,15 +451,15 @@ main(argc, argv) fprintf(stderr, "%s: %s: line %d: no RHS for LHS %s\n", progname, mapname, lineno, - (char *) db_key.data); + (char *) db_key.data.data); exitstat = EX_DATAERR; continue; } - db_val.data = p; - db_val.size = strlen(p); + db_val.data.data = p; + db_val.data.size = strlen(p); if (inclnull) - db_val.size++; + db_val.data.size++; /* ** Do the database insert. @@ -464,8 +468,8 @@ main(argc, argv) if (verbose) { printf("key=`%s', val=`%s'\n", - (char *) db_key.data, - (char *) db_val.data); + (char *) db_key.data.data, + (char *) db_val.data.data); } errno = database->smdb_put(database, &db_key, &db_val, @@ -490,7 +494,7 @@ main(argc, argv) fprintf(stderr, "%s: %s: line %d: key %s: put error: %s\n", progname, mapname, lineno, - (char *) db_key.data, + (char *) db_key.data.data, errstring(errno)); exitstat = EX_IOERR; } @@ -499,7 +503,7 @@ main(argc, argv) fprintf(stderr, "%s: %s: line %d: key %s: duplicate key\n", progname, mapname, - lineno, (char *) db_key.data); + lineno, (char *) db_key.data.data); exitstat = EX_DATAERR; } } |