]> arthur.barton.de Git - netatalk.git/blob - etc/cnid_dbd/dbd_dbcheck.c
New MySQL CNID backend
[netatalk.git] / etc / cnid_dbd / dbd_dbcheck.c
1 /*
2  *
3  * Copyright (C) Joerg Lenneis 2003
4  * All Rights Reserved.  See COPYING.
5  */
6
7 #ifdef HAVE_CONFIG_H
8 #include "config.h"
9 #endif /* HAVE_CONFIG_H */
10
11 #include <stdio.h>
12 #include <string.h>
13 #include <sys/param.h>
14 #include <errno.h>
15 #include <arpa/inet.h>
16
17 #include <atalk/logger.h>
18 #include <atalk/cnid_bdb_private.h>
19
20 #include "pack.h"
21 #include "dbif.h"
22 #include "dbd.h"
23
24 int dbd_check_indexes(DBD *dbd, char *dbdir)
25 {
26     u_int32_t c_didname = 0, c_devino = 0, c_cnid = 0;
27
28     LOG(log_note, logtype_cnid, "CNID database at `%s' is being checked (quick)", dbdir);
29
30     if (dbif_count(dbd, DBIF_CNID, &c_cnid)) 
31         return -1;
32
33     if (dbif_count(dbd, DBIF_IDX_DEVINO, &c_devino))
34         return -1;
35
36     /* bailout after the first error */
37     if ( c_cnid != c_devino) {
38         LOG(log_error, logtype_cnid, "CNID database at `%s' corrupted (%u/%u)", dbdir, c_cnid, c_devino);
39         return 1;
40     }
41
42     if (dbif_count(dbd, DBIF_IDX_DIDNAME, &c_didname)) 
43         return -1;
44     
45     if ( c_cnid != c_didname) {
46         LOG(log_error, logtype_cnid, "CNID database at `%s' corrupted (%u/%u)", dbdir, c_cnid, c_didname);
47         return 1;
48     }
49
50     LOG(log_note, logtype_cnid, "CNID database at `%s' seems ok, %u entries.", dbdir, c_cnid);
51     return 0;  
52 }
53
54