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