/* get a database handle to the alarm db */ EXPORTED sqldb_t *caldav_alarm_open() { /* already running? Bonus */ if (refcount) { refcount++; return my_alarmdb; } /* we need exclusivity! */ int r = mboxname_lock("$CALDAVALARMDB", &my_alarmdb_lock, LOCK_EXCLUSIVE); if (r) { syslog(LOG_ERR, "DBERROR: failed to lock $CALDAVALARMDB"); return NULL; } char *dbfilename = strconcat(config_dir, "/caldav_alarm.sqlite3", NULL); my_alarmdb = sqldb_open(dbfilename, CMD_CREATE, DBVERSION, upgrade); if (!my_alarmdb) { syslog(LOG_ERR, "DBERROR: failed to open %s", dbfilename); mboxname_release(&my_alarmdb_lock); } free(dbfilename); refcount = 1; return my_alarmdb; }
EXPORTED sqldb_t *dav_open_mailbox(struct mailbox *mailbox) { sqldb_t *db = NULL; struct buf fname = BUF_INITIALIZER; dav_getpath(&fname, mailbox); if (in_reconstruct) buf_printf(&fname, ".NEW"); db = sqldb_open(buf_cstring(&fname), CMD_CREATE, DB_VERSION, davdb_upgrade); buf_free(&fname); return db; }
EXPORTED sqldb_t *dav_open_userid(const char *userid) { sqldb_t *db = NULL; struct buf fname = BUF_INITIALIZER; dav_getpath_byuserid(&fname, userid); if (in_reconstruct) buf_printf(&fname, ".NEW"); db = sqldb_open(buf_cstring(&fname), CMD_CREATE, DB_VERSION, davdb_upgrade); buf_free(&fname); return db; }