| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- diff -Naur sendmail-8.12.6.orig/libsmdb/smdb2.c sendmail-8.12.6/libsmdb/smdb2.c
- --- sendmail-8.12.6.orig/libsmdb/smdb2.c Wed Dec 4 17:24:48 2002
- +++ sendmail-8.12.6/libsmdb/smdb2.c Tue Dec 10 14:05:09 2002
- @@ -523,7 +523,11 @@
- }
- }
-
- +#if (DB_VERSION_MAJOR >=4 && DB_VERSION_MINOR >= 1)
- + result = (*db)->open(*db, NULL, db_name, NULL, db_type, db_flags, DBMMODE);
- +#else
- result = (*db)->open(*db, db_name, NULL, db_type, db_flags, DBMMODE);
- +#endif
- if (result != 0)
- {
- (void) (*db)->close(*db, 0);
- @@ -571,7 +575,10 @@
- SMDB_USER_INFO *user_info;
- SMDB_DBPARAMS *db_params;
- {
- - bool lockcreated = false;
- +#if (DB_VERSION_MAJOR >=4 && DB_VERSION_MINOR >= 1)
- +#else
- + bool lockcreated = false;
- +#endif
- int result;
- int db_flags;
- int lock_fd;
- @@ -580,7 +587,6 @@
- SMDB_DB2_DATABASE *db2;
- DB *db;
- DBTYPE db_type;
- - struct stat stat_info;
- char db_file_name[MAXPATHLEN];
-
- *database = NULL;
- @@ -590,27 +596,33 @@
- if (result != SMDBE_OK)
- return result;
-
- - result = smdb_setup_file(db_name, SMDB2_FILE_EXTENSION,
- - mode_mask, sff, user_info, &stat_info);
- - if (result != SMDBE_OK)
- - return result;
- -
- - lock_fd = -1;
- -
- - if (stat_info.st_mode == ST_MODE_NOFILE &&
- - bitset(mode, O_CREAT))
- - lockcreated = true;
- -
- - result = smdb_lock_file(&lock_fd, db_name, mode, sff,
- - SMDB2_FILE_EXTENSION);
- - if (result != SMDBE_OK)
- - return result;
- -
- - if (lockcreated)
- - {
- - mode |= O_TRUNC;
- - mode &= ~(O_CREAT|O_EXCL);
- - }
- +#if (DB_VERSION_MAJOR >=4 && DB_VERSION_MINOR >= 1)
- +#else
- + result = smdb_setup_file(db_name, SMDB2_FILE_EXTENSION,
- + mode_mask, sff, user_info, &stat_info);
- + if (result != SMDBE_OK)
- + return result;
- +#endif
- +
- + lock_fd = -1;
- +
- +#if (DB_VERSION_MAJOR >=4 && DB_VERSION_MINOR >= 1)
- +#else
- + if (stat_info.st_mode == ST_MODE_NOFILE &&
- + bitset(mode, O_CREAT))
- + lockcreated = true;
- +
- + result = smdb_lock_file(&lock_fd, db_name, mode, sff,
- + SMDB2_FILE_EXTENSION);
- + if (result != SMDBE_OK)
- + return result;
- +
- + if (lockcreated)
- + {
- + mode |= O_TRUNC;
- + mode &= ~(O_CREAT|O_EXCL);
- + }
- +#endif
-
- smdb_db = smdb_malloc_database();
- if (smdb_db == NULL)
- @@ -620,8 +632,6 @@
- if (db2 == NULL)
- return SMDBE_MALLOC;
-
- - db2->smdb2_lock_fd = lock_fd;
- -
- db_type = smdb_type_to_db2_type(type);
-
- db = NULL;
- @@ -634,7 +644,7 @@
- if (mode == O_RDONLY)
- db_flags |= DB_RDONLY;
- # if !HASFLOCK && defined(DB_FCNTL_LOCKING)
- - db_flags |= DB_FCNTL_LOCKING;
- + db_flags |= DB_FCNTL_LOCKING;
- # endif /* !HASFLOCK && defined(DB_FCNTL_LOCKING) */
-
- result = smdb_db_open_internal(db_file_name, db_type,
- @@ -645,6 +655,8 @@
- result = db->fd(db, &db_fd);
- if (result == 0)
- result = SMDBE_OK;
- + else
- + result = SMDBE_BAD_OPEN;
- }
- else
- {
- @@ -655,12 +667,25 @@
- result = SMDBE_BAD_OPEN;
- }
-
- - if (result == SMDBE_OK)
- - result = smdb_filechanged(db_name, SMDB2_FILE_EXTENSION, db_fd,
- - &stat_info);
- +#if (DB_VERSION_MAJOR >=4 && DB_VERSION_MINOR >= 1)
- + if (result == SMDBE_OK) {
- + result = smdb_lock_file(&lock_fd, db_name, mode, sff,
- + SMDB2_FILE_EXTENSION);
- + if (result != SMDBE_OK)
- + lock_fd = -1; /* paranoia */
- + }
- +#else
- + if (result == SMDBE_OK)
- + result = smdb_filechanged(db_name, SMDB2_FILE_EXTENSION, db_fd,
- + &stat_info);
- +#endif
-
- if (result == SMDBE_OK)
- {
- +#if (DB_VERSION_MAJOR >=4 && DB_VERSION_MINOR >= 1)
- + db2->smdb2_lock_fd = lock_fd;
- +#endif
- +
- /* Everything is ok. Setup driver */
- db2->smdb2_db = db;
-
- @@ -680,10 +705,18 @@
- return SMDBE_OK;
- }
-
- +#if (DB_VERSION_MAJOR >=4 && DB_VERSION_MINOR >= 1)
- + if (lock_fd != -1)
- + smdb_unlock_file(lock_fd);
- +#endif
- +
- if (db != NULL)
- db->close(db, 0);
-
- - smdb_unlock_file(db2->smdb2_lock_fd);
- +#if (DB_VERSION_MAJOR >=4 && DB_VERSION_MINOR >= 1)
- +#else
- + smdb_unlock_file(db2->smdb2_lock_fd);
- +#endif
- free(db2);
- smdb_free_database(smdb_db);
-
- diff -Naur sendmail-8.12.6.orig/sendmail/map.c sendmail-8.12.6/sendmail/map.c
- --- sendmail-8.12.6.orig/sendmail/map.c Sat Aug 10 00:23:13 2002
- +++ sendmail-8.12.6/sendmail/map.c Mon Oct 14 22:37:35 2002
- @@ -2115,7 +2115,11 @@
- # endif /* DB_HASH_NELEM */
- if (ret == 0 && db != NULL)
- {
- +#if (DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1)
- + ret = db->open(db, NULL, buf, NULL, dbtype, flags, DBMMODE);
- +#else
- ret = db->open(db, buf, NULL, dbtype, flags, DBMMODE);
- +#endif
- if (ret != 0)
- {
- #ifdef DB_OLD_VERSION
- diff -Naur sendmail-8.12.6.orig/sendmail/udb.c sendmail-8.12.6/sendmail/udb.c
- --- sendmail-8.12.6.orig/sendmail/udb.c Tue Sep 11 06:05:17 2001
- +++ sendmail-8.12.6/sendmail/udb.c Mon Oct 14 22:44:32 2002
- @@ -1012,12 +1012,22 @@
- }
- else
- {
- +#if (DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1)
- + ret = up->udb_dbp->open(up->udb_dbp,
- + NULL,
- + up->udb_dbname,
- + NULL,
- + DB_BTREE,
- + flags,
- + 0644);
- +#else
- ret = up->udb_dbp->open(up->udb_dbp,
- up->udb_dbname,
- NULL,
- DB_BTREE,
- flags,
- 0644);
- +#endif
- if (ret != 0)
- {
- #ifdef DB_OLD_VERSION
|