/* 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; }
/* close this handle */ EXPORTED int caldav_alarm_close(sqldb_t *alarmdb) { assert(my_alarmdb == alarmdb); if (--refcount) return 0; sqldb_close(&my_alarmdb); mboxname_release(&my_alarmdb_lock); return 0; }
EXPORTED void quota_changelockrelease() { mboxname_release(&qchangelock); }