• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/ap/gpl/timemachine/netatalk-2.2.5/etc/cnid_dbd/
1
2/*
3 * $Id: dbd_getstamp.c,v 1.4 2009-05-06 11:54:24 franklahm Exp $
4 *
5 * Copyright (C) Joerg Lenneis 2003
6 * All Rights Reserved.  See COPYING.
7 */
8
9#ifdef HAVE_CONFIG_H
10#include "config.h"
11#endif /* HAVE_CONFIG_H */
12
13#include <string.h>
14#include <atalk/logger.h>
15#include <errno.h>
16#include <netatalk/endian.h>
17#include <atalk/cnid_dbd_private.h>
18
19#include "dbif.h"
20#include "dbd.h"
21#include "pack.h"
22
23/* Return the unique stamp associated with this database */
24
25int dbd_getstamp(DBD *dbd, struct cnid_dbd_rqst *rqst _U_, struct cnid_dbd_rply *rply)
26{
27    DBT key, data;
28    int rc;
29
30
31    memset(&key, 0, sizeof(key));
32    memset(&data, 0, sizeof(data));
33
34    rply->namelen = 0;
35
36    key.data = ROOTINFO_KEY;
37    key.size = ROOTINFO_KEYLEN;
38
39    if ((rc = dbif_get(dbd, DBIF_CNID, &key, &data, 0)) < 0) {
40        LOG(log_error, logtype_cnid, "dbd_getstamp: Error getting rootinfo record");
41        rply->result = CNID_DBD_RES_ERR_DB;
42        return -1;
43    }
44
45    if (rc == 0) {
46	LOG(log_error, logtype_cnid, "dbd_getstamp: No rootinfo record found");
47        rply->result = CNID_DBD_RES_NOTFOUND;
48        return 1;
49    }
50
51    rply->namelen = CNID_DEV_LEN;
52    rply->name = (char *)data.data + CNID_DEV_OFS;
53
54
55    LOG(log_debug, logtype_cnid, "cnid_getstamp: Returning stamp '%08x'", *(uint32_t *)rply->name);
56
57    rply->result = CNID_DBD_RES_OK;
58    return 1;
59}
60