Hello,

On Fri, Aug 10, 2007 at 01:29:26PM -0400, Ken Murchison wrote:
> If there are any outstanding issues that you believe still need to be 
> addressed in 2.3.9, please let me know.

The glibc upstream has recently defined open as macro to check for incorrect
usage of the third parameter. This is correct, the POSIX standard says that it
may be declared in such a way. The attached patch redefines all those
> db->open(...)
calls to
> (db->open)(...)
. I also replaced the close calls, since close may be declared as macro too.

(a similar fix is on its way to db4 upstream, I think)

Regards,
-- 
Tomas Janousek, SW Engineer, Red Hat, Inc.
--- cyrus-imapd-2.3.9/imap/quota_db.c.openmacro 2007-08-14 16:21:29.000000000 
+0200
+++ cyrus-imapd-2.3.9/imap/quota_db.c   2007-08-14 16:31:48.000000000 +0200
@@ -251,7 +251,7 @@
        strlcat(fname, FNAME_QUOTADB, fname_len);
     }
 
-    ret = QDB->open(fname, CYRUSDB_CREATE, &qdb);
+    ret = (QDB->open)(fname, CYRUSDB_CREATE, &qdb);
     if (ret != 0) {
        syslog(LOG_ERR, "DBERROR: opening %s: %s", fname,
               cyrusdb_strerror(ret));
@@ -270,7 +270,7 @@
     int r;
 
     if (quota_dbopen) {
-       r = QDB->close(qdb);
+       r = (QDB->close)(qdb);
        if (r) {
            syslog(LOG_ERR, "DBERROR: error closing quotas: %s",
                   cyrusdb_strerror(r));
--- cyrus-imapd-2.3.9/imap/seen_bigdb.c.openmacro       2007-08-14 
16:21:29.000000000 +0200
+++ cyrus-imapd-2.3.9/imap/seen_bigdb.c 2007-08-14 16:32:03.000000000 +0200
@@ -104,7 +104,7 @@
     strcpy(fname, config_dir);
     strcat(fname, FNAME_SEENDB);
 
-    r = DB->open(fname, CYRUSDB_CREATE, &bigdb);
+    r = (DB->open)(fname, CYRUSDB_CREATE, &bigdb);
     if (r != 0) {
        syslog(LOG_ERR, "DBERROR: opening %s: %s", fname,
               cyrusdb_strerror(r));
@@ -385,7 +385,7 @@
     int r;
 
     if (seen_inited) {
-       r = DB->close(bigdb);
+       r = (DB->close)(bigdb);
        if (r != 0) {
            syslog(LOG_ERR, "DBERROR: closing seen database: %s",
                   cyrusdb_strerror(r));
--- cyrus-imapd-2.3.9/imap/mboxkey.c.openmacro  2007-08-14 16:21:29.000000000 
+0200
+++ cyrus-imapd-2.3.9/imap/mboxkey.c    2007-08-14 16:31:01.000000000 +0200
@@ -150,7 +150,7 @@
     /* otherwise, close the existing database */
     if (mboxkeydb) {
        abortcurrent(mboxkeydb);
-       r = DB->close(mboxkeydb->db);
+       r = (DB->close)(mboxkeydb->db);
        if (r) {
            syslog(LOG_ERR, "DBERROR: error closing mboxkeydb: %s", 
                   cyrusdb_strerror(r));
@@ -164,7 +164,7 @@
 
     /* open the mboxkeydb corresponding to user */
     fname = mboxkey_getpath(user);
-    r = DB->open(fname, (flags & MBOXKEY_CREATE) ? CYRUSDB_CREATE : 0,
+    r = (DB->open)(fname, (flags & MBOXKEY_CREATE) ? CYRUSDB_CREATE : 0,
                 &mboxkeydb->db);
     if (r != 0) {
        int level = (flags & MBOXKEY_CREATE) ? LOG_ERR : LOG_DEBUG;
@@ -325,7 +325,7 @@
 
        /* free the old database hanging around */
        abortcurrent(lastmboxkey);
-       r = DB->close(lastmboxkey->db);
+       r = (DB->close)(lastmboxkey->db);
        if (r != CYRUSDB_OK) {
            syslog(LOG_ERR, "DBERROR: error closing lastmboxkey: %s",
                   cyrusdb_strerror(r));
@@ -409,7 +409,7 @@
 
     if (lastmboxkey) {
        abortcurrent(lastmboxkey);
-       r = DB->close(lastmboxkey->db);
+       r = (DB->close)(lastmboxkey->db);
        if (r) {
            syslog(LOG_ERR, "DBERROR: error closing lastmboxkey: %s",
                   cyrusdb_strerror(r));
@@ -482,10 +482,10 @@
     struct mboxkey_merge_rock rock;
 
     /* xxx does this need to be CYRUSDB_CREATE? */
-    r = DB->open(tmpfile, CYRUSDB_CREATE, &tmp);
+    r = (DB->open)(tmpfile, CYRUSDB_CREATE, &tmp);
     if(r) goto done;
            
-    r = DB->open(tgtfile, CYRUSDB_CREATE, &tgt);
+    r = (DB->open)(tgtfile, CYRUSDB_CREATE, &tgt);
     if(r) goto done;
 
     rock.db = tgt;
@@ -498,8 +498,8 @@
 
  done:
 
-    if(tgt) DB->close(tgt);
-    if(tmp) DB->close(tmp);
+    if(tgt) (DB->close)(tgt);
+    if(tmp) (DB->close)(tmp);
     
     return r;
 }
--- cyrus-imapd-2.3.9/imap/tls.c.openmacro      2007-08-14 16:21:29.000000000 
+0200
+++ cyrus-imapd-2.3.9/imap/tls.c        2007-08-14 16:33:15.000000000 +0200
@@ -650,7 +650,7 @@
        strlcpy(dbdir, config_dir, sizeof(dbdir));
        strlcat(dbdir, FNAME_TLSSESSIONS, sizeof(dbdir));
 
-       r = DB->open(dbdir, CYRUSDB_CREATE, &sessdb);
+       r = (DB->open)(dbdir, CYRUSDB_CREATE, &sessdb);
        if (r != 0) {
            syslog(LOG_ERR, "DBERROR: opening %s: %s",
                   dbdir, cyrusdb_strerror(ret));
@@ -931,7 +931,7 @@
     int r;
 
     if (tls_serverengine && sess_dbopen) {
-       r = DB->close(sessdb);
+       r = (DB->close)(sessdb);
        if (r) {
            syslog(LOG_ERR, "DBERROR: error closing tlsdb: %s",
                   cyrusdb_strerror(r));
@@ -1008,7 +1008,7 @@
     strlcpy(dbdir, config_dir, sizeof(dbdir));
     strlcat(dbdir, FNAME_TLSSESSIONS, sizeof(dbdir));
 
-    ret = DB->open(dbdir, CYRUSDB_CREATE, &sessdb);
+    ret = (DB->open)(dbdir, CYRUSDB_CREATE, &sessdb);
     if (ret != CYRUSDB_OK) {
        syslog(LOG_ERR, "DBERROR: opening %s: %s",
               dbdir, cyrusdb_strerror(ret));
@@ -1019,7 +1019,7 @@
        sess_dbopen = 1;
        prock.count = prock.deletions = 0;
        DB->foreach(sessdb, "", 0, &prune_p, &prune_cb, &prock, NULL);
-       DB->close(sessdb);
+       (DB->close)(sessdb);
        sessdb = NULL;
        sess_dbopen = 0;
 
--- cyrus-imapd-2.3.9/imap/duplicate.c.openmacro        2007-08-14 
16:21:29.000000000 +0200
+++ cyrus-imapd-2.3.9/imap/duplicate.c  2007-08-14 16:30:03.000000000 +0200
@@ -105,7 +105,7 @@
            strcat(fname, FNAME_DELIVERDB);
        }
 
-       r = DB->open(fname, CYRUSDB_CREATE, &dupdb);
+       r = (DB->open)(fname, CYRUSDB_CREATE, &dupdb);
        if (r != 0)
            syslog(LOG_ERR, "DBERROR: opening %s: %s", fname,
                   cyrusdb_strerror(r));
@@ -395,7 +395,7 @@
     int r = 0;
 
     if (duplicate_dbopen) {
-       r = DB->close(dupdb);
+       r = (DB->close)(dupdb);
        if (r) {
            syslog(LOG_ERR, "DBERROR: error closing deliverdb: %s",
                   cyrusdb_strerror(r));
--- cyrus-imapd-2.3.9/imap/cvt_cyrusdb.c.openmacro      2007-08-14 
16:21:29.000000000 +0200
+++ cyrus-imapd-2.3.9/imap/cvt_cyrusdb.c        2007-08-14 16:29:32.000000000 
+0200
@@ -157,10 +157,10 @@
     printf("Converting from %s (%s) to %s (%s)\n", old_db, DB_OLD->name,
           new_db, DB_NEW->name);
 
-    r = DB_OLD->open(old_db, 0, &odb);
+    r = (DB_OLD->open)(old_db, 0, &odb);
     if(r != CYRUSDB_OK)
        fatal("can't open old database", EC_TEMPFAIL);
-    r = DB_NEW->open(new_db, CYRUSDB_CREATE, &ndb);
+    r = (DB_NEW->open)(new_db, CYRUSDB_CREATE, &ndb);
     if(r != CYRUSDB_OK)
        fatal("can't open new database", EC_TEMPFAIL);
 
@@ -173,8 +173,8 @@
        fprintf(stderr, "Warning: apparently empty database converted.\n");
     
 
-    DB_OLD->close(odb);
-    DB_NEW->close(ndb);
+    (DB_OLD->close)(odb);
+    (DB_NEW->close)(ndb);
     
     cyrus_done();
 
--- cyrus-imapd-2.3.9/imap/annotate.c.openmacro 2007-08-14 16:21:29.000000000 
+0200
+++ cyrus-imapd-2.3.9/imap/annotate.c   2007-08-14 16:28:42.000000000 +0200
@@ -253,7 +253,7 @@
        strcat(fname, FNAME_ANNOTATIONS);
     }
 
-    ret = DB->open(fname, CYRUSDB_CREATE, &anndb);
+    ret = (DB->open)(fname, CYRUSDB_CREATE, &anndb);
     if (ret != 0) {
        syslog(LOG_ERR, "DBERROR: opening %s: %s", fname,
               cyrusdb_strerror(ret));
@@ -270,7 +270,7 @@
     int r;
 
     if (annotate_dbopen) {
-       r = DB->close(anndb);
+       r = (DB->close)(anndb);
        if (r) {
            syslog(LOG_ERR, "DBERROR: error closing annotations: %s",
                   cyrusdb_strerror(r));
--- cyrus-imapd-2.3.9/imap/arbitron.c.openmacro 2007-08-14 16:21:29.000000000 
+0200
+++ cyrus-imapd-2.3.9/imap/arbitron.c   2007-08-14 16:29:11.000000000 +0200
@@ -419,14 +419,14 @@
     int r;    
     struct db *tmp = NULL;
 
-    r = DB->open(path, 0, &tmp);
+    r = (DB->open)(path, 0, &tmp);
     if(r) goto done;
     
     DB->foreach(tmp, "", 0, process_user_p, process_user_cb,
                (void *) user, NULL);
 
  done:
-    if(tmp) DB->close(tmp);
+    if(tmp) (DB->close)(tmp);
 }
 
 static int process_subs_cb(void *rockp __attribute__((unused)),
@@ -475,14 +475,14 @@
     int r;    
     struct db *tmp = NULL;
 
-    r = SUBDB->open(path, 0, &tmp);
+    r = (SUBDB->open)(path, 0, &tmp);
     if(r) goto done;
     
     SUBDB->foreach(tmp, "", 0, process_subs_p, process_subs_cb,
                   (void *) user, NULL);
 
  done:
-    if(tmp) SUBDB->close(tmp);
+    if(tmp) (SUBDB->close)(tmp);
 }
 
 void report_users(struct user_list *u)
--- cyrus-imapd-2.3.9/imap/mboxlist.c.openmacro 2007-08-14 16:21:29.000000000 
+0200
+++ cyrus-imapd-2.3.9/imap/mboxlist.c   2007-08-14 16:31:28.000000000 +0200
@@ -2746,7 +2746,7 @@
        flags |= CYRUSDB_MBOXSORT;
     }
 
-    ret = DB->open(fname, flags, &mbdb);
+    ret = (DB->open)(fname, flags, &mbdb);
     if (ret != 0) {
        syslog(LOG_ERR, "DBERROR: opening %s: %s", fname,
               cyrusdb_strerror(ret));
@@ -2765,7 +2765,7 @@
     int r;
 
     if (mboxlist_dbopen) {
-       r = DB->close(mbdb);
+       r = (DB->close)(mbdb);
        if (r) {
            syslog(LOG_ERR, "DBERROR: error closing mailboxes: %s",
                   cyrusdb_strerror(r));
@@ -2825,7 +2825,7 @@
        flags |= CYRUSDB_MBOXSORT;
     }
 
-    r = SUBDB->open(subsfname, flags, ret);
+    r = (SUBDB->open)(subsfname, flags, ret);
     if (r != CYRUSDB_OK) {
        r = IMAP_IOERROR;
     }
@@ -2839,7 +2839,7 @@
  */
 static void mboxlist_closesubs(struct db *sub)
 {
-    SUBDB->close(sub);
+    (SUBDB->close)(sub);
 }
 
 /*
--- cyrus-imapd-2.3.9/imap/cyr_dbtool.c.openmacro       2007-08-14 
16:21:29.000000000 +0200
+++ cyrus-imapd-2.3.9/imap/cyr_dbtool.c 2007-08-14 16:29:52.000000000 +0200
@@ -203,7 +203,7 @@
     cyrus_init(alt_config, "cyr_dbtool", 0);
 
 
-    r = DB_OLD->open(old_db, db_flags, &odb);
+    r = (DB_OLD->open)(old_db, db_flags, &odb);
     if(r != CYRUSDB_OK)
        fatal("can't open database", EC_TEMPFAIL);
 
@@ -250,7 +250,7 @@
         printf("Unknown action %s\n", action);
     }
 
-    DB_OLD->close(odb);
+    (DB_OLD->close)(odb);
     
     cyrus_done();
 
--- cyrus-imapd-2.3.9/imap/seen_db.c.openmacro  2007-08-14 16:21:29.000000000 
+0200
+++ cyrus-imapd-2.3.9/imap/seen_db.c    2007-08-14 16:32:46.000000000 +0200
@@ -157,7 +157,7 @@
     /* otherwise, close the existing database */
     if (seendb) {
        abortcurrent(seendb);
-       r = DB->close(seendb->db);
+       r = (DB->close)(seendb->db);
        if (r) {
            syslog(LOG_ERR, "DBERROR: error closing seendb: %s", 
                   cyrusdb_strerror(r));
@@ -170,7 +170,7 @@
 
     /* open the seendb corresponding to user */
     fname = seen_getpath(user);
-    r = DB->open(fname, (flags & SEEN_CREATE) ? CYRUSDB_CREATE : 0,
+    r = (DB->open)(fname, (flags & SEEN_CREATE) ? CYRUSDB_CREATE : 0,
                 &seendb->db);
     if (r != 0) {
        int level = (flags & SEEN_CREATE) ? LOG_ERR : LOG_DEBUG;
@@ -416,7 +416,7 @@
 
        /* free the old database hanging around */
        abortcurrent(lastseen);
-       r = DB->close(lastseen->db);
+       r = (DB->close)(lastseen->db);
        if (r != CYRUSDB_OK) {
            syslog(LOG_ERR, "DBERROR: error closing lastseen: %s",
                   cyrusdb_strerror(r));
@@ -555,7 +555,7 @@
 
     if (lastseen) {
        abortcurrent(lastseen);
-       r = DB->close(lastseen->db);
+       r = (DB->close)(lastseen->db);
        if (r) {
            syslog(LOG_ERR, "DBERROR: error closing lastseen: %s",
                   cyrusdb_strerror(r));
@@ -653,10 +653,10 @@
     struct seen_merge_rock rock;
 
     /* xxx does this need to be CYRUSDB_CREATE? */
-    r = DB->open(tmpfile, CYRUSDB_CREATE, &tmp);
+    r = (DB->open)(tmpfile, CYRUSDB_CREATE, &tmp);
     if(r) goto done;
            
-    r = DB->open(tgtfile, CYRUSDB_CREATE, &tgt);
+    r = (DB->open)(tgtfile, CYRUSDB_CREATE, &tgt);
     if(r) goto done;
 
     rock.db = tgt;
@@ -669,8 +669,8 @@
 
  done:
 
-    if(tgt) DB->close(tgt);
-    if(tmp) DB->close(tmp);
+    if(tgt) (DB->close)(tgt);
+    if(tmp) (DB->close)(tmp);
     
     return r;
 }
--- cyrus-imapd-2.3.9/imap/fetchnews.c.openmacro        2007-08-14 
16:21:29.000000000 +0200
+++ cyrus-imapd-2.3.9/imap/fetchnews.c  2007-08-14 16:30:14.000000000 +0200
@@ -94,7 +94,7 @@
            strcat(fname, FNAME_NEWSRCDB);
        }
 
-       r = DB->open(fname, CYRUSDB_CREATE, &newsrc_db);
+       r = (DB->open)(fname, CYRUSDB_CREATE, &newsrc_db);
        if (r != 0)
            syslog(LOG_ERR, "DBERROR: opening %s: %s", fname,
                   cyrusdb_strerror(r));
@@ -112,7 +112,7 @@
     int r = 0;
 
     if (newsrc_dbopen) {
-       r = DB->close(newsrc_db);
+       r = (DB->close)(newsrc_db);
        if (r) {
            syslog(LOG_ERR, "DBERROR: error closing fetchnews.db: %s",
                   cyrusdb_strerror(r));
--- cyrus-imapd-2.3.9/lib/auth_pts.c.openmacro  2007-08-14 16:21:29.000000000 
+0200
+++ cyrus-imapd-2.3.9/lib/auth_pts.c    2007-08-14 16:33:28.000000000 +0200
@@ -359,7 +359,7 @@
     
     strcpy(fnamebuf, config_dir);
     strcat(fnamebuf, PTS_DBFIL);
-    r = the_ptscache_db->open(fnamebuf, CYRUSDB_CREATE, &ptdb);
+    r = (the_ptscache_db->open)(fnamebuf, CYRUSDB_CREATE, &ptdb);
     if (r != 0) {
        syslog(LOG_ERR, "DBERROR: opening %s: %s", fnamebuf,
               cyrusdb_strerror(ret));
@@ -501,7 +501,7 @@
     }
 
     /* close and unlock the database */
-    the_ptscache_db->close(ptdb);
+    (the_ptscache_db->close)(ptdb);
 
     return rc;
 }
--- cyrus-imapd-2.3.9/lib/test/rnddb.c.openmacro        2007-08-14 
16:21:29.000000000 +0200
+++ cyrus-imapd-2.3.9/lib/test/rnddb.c  2007-08-14 16:34:50.000000000 +0200
@@ -133,7 +133,7 @@
        srand(atoi(argv[2]));
     }
 
-    TRY(DB->open("scratch", &db));
+    TRY((DB->open)("scratch", &db));
 
     if (DB->consistent) {
        TRY(DB->consistent(db));
@@ -291,7 +291,7 @@
 #endif
     }
 
-    TRY(DB->close(db));
+    TRY((DB->close)(db));
     TRY(DB->done());
 
     do_report();
--- cyrus-imapd-2.3.9/lib/test/cyrusdb.c.openmacro      2007-08-14 
16:21:29.000000000 +0200
+++ cyrus-imapd-2.3.9/lib/test/cyrusdb.c        2007-08-14 16:34:37.000000000 
+0200
@@ -70,15 +70,15 @@
            char *fname = buf + 5;
 
            if (db) { /* close it */
-               TRY(DB->close(db));
+               TRY((DB->close)(db));
            }
-           TRY(DB->open(fname, 1, &db));
+           TRY((DB->open)(fname, 1, &db));
 
            printf("ok\n");
        } else if (!db) {
            TRY(db == NULL);
        } else if (!strncasecmp(buf, "close", 5)) {
-           TRY(DB->close(db));
+           TRY((DB->close)(db));
            db = NULL;
            printf("ok\n");
        } else if (!strncasecmp(buf, "put ", 4)) {
--- cyrus-imapd-2.3.9/lib/cyrusdb_berkeley.c.openmacro  2007-08-14 
16:21:29.000000000 +0200
+++ cyrus-imapd-2.3.9/lib/cyrusdb_berkeley.c    2007-08-14 16:34:19.000000000 
+0200
@@ -212,7 +212,7 @@
        r = dbenv->set_cachesize(dbenv, 0, opt * 1024, 0);
        if (r) {
            dbenv->err(dbenv, r, "set_cachesize");
-           dbenv->close(dbenv, 0);
+           (dbenv->close)(dbenv, 0);
            syslog(LOG_ERR, "DBERROR: set_cachesize(): %s", db_strerror(r));
            return CYRUSDB_IOERROR;
        }
@@ -223,9 +223,9 @@
     flags |= DB_INIT_LOCK | DB_INIT_MPOOL | 
             DB_INIT_LOG | DB_INIT_TXN;
 #if (DB_VERSION_MAJOR > 3) || ((DB_VERSION_MAJOR == 3) && (DB_VERSION_MINOR > 
0))
-    r = dbenv->open(dbenv, dbdir, flags, 0644); 
+    r = (dbenv->open)(dbenv, dbdir, flags, 0644); 
 #else
-    r = dbenv->open(dbenv, dbdir, NULL, flags, 0644); 
+    r = (dbenv->open)(dbenv, dbdir, NULL, flags, 0644); 
 #endif
     if (r) {
         if (do_retry && (r == ENOENT)) {
@@ -264,7 +264,7 @@
 
     if (--dbinit) return 0;
 
-    r = dbenv->close(dbenv, 0);
+    r = (dbenv->close)(dbenv, 0);
     dbinit = 0;
     if (r) {
        syslog(LOG_ERR, "DBERROR: error exiting application: %s",
@@ -412,15 +412,15 @@
     if (flags & CYRUSDB_MBOXSORT) db->set_bt_compare(db, mbox_compar);
 
 #if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1
-    r = db->open(db, NULL, fname, NULL, type, dbflags | DB_AUTO_COMMIT, 0664);
+    r = (db->open)(db, NULL, fname, NULL, type, dbflags | DB_AUTO_COMMIT, 
0664);
 #else
-    r = db->open(db, fname, NULL, type, dbflags, 0664);
+    r = (db->open)(db, fname, NULL, type, dbflags, 0664);
 #endif
 
     if (r != 0) {
        int level = (flags & CYRUSDB_CREATE) ? LOG_ERR : LOG_DEBUG;
        syslog(level, "DBERROR: opening %s: %s", fname, db_strerror(r));
-       r = db->close(db, DB_NOSYNC);
+       r = (db->close)(db, DB_NOSYNC);
         if (r != 0) {
             syslog(level, "DBERROR: closing %s: %s", fname, db_strerror(r));
         }
@@ -450,7 +450,7 @@
     assert(dbinit && db);
 
     /* since we're using txns, we can supply DB_NOSYNC */
-    r = a->close(a, DB_NOSYNC);
+    r = (a->close)(a, DB_NOSYNC);
     if (r != 0) {
        syslog(LOG_ERR, "DBERROR: error closing: %s", db_strerror(r));
        r = CYRUSDB_IOERROR;
--- cyrus-imapd-2.3.9/ptclient/ptloader.c.openmacro     2007-08-14 
16:21:29.000000000 +0200
+++ cyrus-imapd-2.3.9/ptclient/ptloader.c       2007-08-14 16:35:25.000000000 
+0200
@@ -167,7 +167,7 @@
 
     strcpy(fnamebuf, config_dir);
     strcat(fnamebuf, PTS_DBFIL);
-    r = DB->open(fnamebuf, CYRUSDB_CREATE, &ptsdb);
+    r = (DB->open)(fnamebuf, CYRUSDB_CREATE, &ptsdb);
     if (r != 0) {
        syslog(LOG_ERR, "DBERROR: opening %s: %s", fnamebuf,
               cyrusdb_strerror(ret));
@@ -184,7 +184,7 @@
 {
     int r;
 
-    r = DB->close(ptsdb);
+    r = (DB->close)(ptsdb);
     if (r) {
        syslog(LOG_ERR, "DBERROR: error closing ptsdb: %s",
               cyrusdb_strerror(r));
--- cyrus-imapd-2.3.9/ptclient/ptdump.c.openmacro       2007-08-14 
16:21:29.000000000 +0200
+++ cyrus-imapd-2.3.9/ptclient/ptdump.c 2007-08-14 16:35:02.000000000 +0200
@@ -100,7 +100,7 @@
     /* open database */
     strcpy(fnamebuf, config_dir);
     strcat(fnamebuf, PTS_DBFIL);
-    r = config_ptscache_db->open(fnamebuf, CYRUSDB_CREATE, &ptdb);
+    r = (config_ptscache_db->open)(fnamebuf, CYRUSDB_CREATE, &ptdb);
     if(r != CYRUSDB_OK) {
        fprintf(stderr,"error opening %s (%s)", fnamebuf,
               cyrusdb_strerror(r));
@@ -110,7 +110,7 @@
     /* iterate through db, wiping expired entries */
     config_ptscache_db->foreach(ptdb, "", 0, NULL, dump_cb, ptdb, NULL);
 
-    config_ptscache_db->close(ptdb);
+    (config_ptscache_db->close)(ptdb);
 
     cyrus_done();
 
--- cyrus-imapd-2.3.9/ptclient/ptexpire.c.openmacro     2007-08-14 
16:21:29.000000000 +0200
+++ cyrus-imapd-2.3.9/ptclient/ptexpire.c       2007-08-14 16:35:14.000000000 
+0200
@@ -148,7 +148,7 @@
     /* open database */
     strcpy(fnamebuf, config_dir);
     strcat(fnamebuf, PTS_DBFIL);
-    r = config_ptscache_db->open(fnamebuf, CYRUSDB_CREATE, &ptdb);
+    r = (config_ptscache_db->open)(fnamebuf, CYRUSDB_CREATE, &ptdb);
     if(r != CYRUSDB_OK) {
        syslog(LOG_ERR, "error opening %s (%s)", fnamebuf,
               cyrusdb_strerror(r));
@@ -158,7 +158,7 @@
     /* iterate through db, wiping expired entries */
     config_ptscache_db->foreach(ptdb, "", 0, expire_p, expire_cb, ptdb, NULL);
 
-    config_ptscache_db->close(ptdb);
+    (config_ptscache_db->close)(ptdb);
 
     cyrus_done();
 

Reply via email to