1 /* lcb_backupdb.c -- replication-based backup api database functions
2 *
3 * Copyright (c) 1994-2016 Carnegie Mellon University. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
15 * distribution.
16 *
17 * 3. The name "Carnegie Mellon University" must not be used to
18 * endorse or promote products derived from this software without
19 * prior written permission. For permission or any legal
20 * details, please contact
21 * Carnegie Mellon University
22 * Center for Technology Transfer and Enterprise Creation
23 * 4615 Forbes Avenue
24 * Suite 302
25 * Pittsburgh, PA 15213
26 * (412) 268-7393, fax: (412) 268-7395
27 * innovation@andrew.cmu.edu
28 *
29 * 4. Redistributions of any form whatsoever must retain the following
30 * acknowledgment:
31 * "This product includes software developed by Computing Services
32 * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
33 *
34 * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
35 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
36 * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
37 * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
38 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
39 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
40 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
41 *
42 */
43
44 #include <config.h>
45
46 #include "lib/cyrusdb.h"
47 #include "lib/libconfig.h"
48
49 #include "imap/global.h"
50
51 #include "backup/backup.h"
52
53 #define LIBCYRUS_BACKUP_SOURCE /* this file is part of libcyrus_backup */
54
backupdb_open(struct db ** backup_dbp,struct txn ** tidp)55 EXPORTED int backupdb_open(struct db **backup_dbp, struct txn **tidp)
56 {
57 char *fname = xstrdupnull(config_getstring(IMAPOPT_BACKUP_DB_PATH));
58 int flags = CYRUSDB_CREATE;
59
60 if (!fname)
61 fname = strconcat(config_dir, FNAME_BACKUPDB, NULL);
62
63 int r = cyrusdb_lockopen(config_backup_db, fname, flags, backup_dbp, tidp);
64
65 free(fname);
66 return r;
67 }
68