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