From e8da36445e38e4b6397eef0b158844f00dfe5983 Mon Sep 17 00:00:00 2001 From: didg Date: Fri, 20 Nov 2009 17:22:11 +0000 Subject: [PATCH] cdb don't device number in db save CNID_FLAG_NODEV is set --- libatalk/cnid/cdb/cnid_cdb_add.c | 8 ++++---- libatalk/cnid/cdb/cnid_cdb_lookup.c | 6 +++--- libatalk/cnid/cdb/cnid_cdb_private.h | 4 ++-- libatalk/cnid/cdb/cnid_cdb_rebuild_add.c | 4 ++-- libatalk/cnid/cdb/cnid_cdb_update.c | 8 ++++---- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/libatalk/cnid/cdb/cnid_cdb_add.c b/libatalk/cnid/cdb/cnid_cdb_add.c index 774273c2..418f68cd 100644 --- a/libatalk/cnid/cdb/cnid_cdb_add.c +++ b/libatalk/cnid/cdb/cnid_cdb_add.c @@ -1,5 +1,5 @@ /* - * $Id: cnid_cdb_add.c,v 1.7 2009-10-29 13:38:16 didg Exp $ + * $Id: cnid_cdb_add.c,v 1.8 2009-11-20 17:22:11 didg Exp $ * * Copyright (c) 1999. Adrian Sun (asun@zoology.washington.edu) * All Rights Reserved. See COPYRIGHT. @@ -43,7 +43,7 @@ static void make_devino_data(unsigned char *buf, dev_t dev, ino_t ino) buf[CNID_DEV_LEN + CNID_INO_LEN - 8] = ino; } -unsigned char *make_cnid_data(const struct stat *st,const cnid_t did, +unsigned char *make_cnid_data(u_int32_t flags, const struct stat *st, const cnid_t did, const char *name, const size_t len) { static unsigned char start[CNID_HEADER_LEN + MAXPATHLEN + 1]; @@ -53,7 +53,7 @@ unsigned char *make_cnid_data(const struct stat *st,const cnid_t did, if (len > MAXPATHLEN) return NULL; - make_devino_data(buf, st->st_dev, st->st_ino); + make_devino_data(buf, !(flags & CNID_FLAG_NODEV)?st->st_dev:0, st->st_ino); buf += CNID_DEVINO_LEN; i = S_ISDIR(st->st_mode)?1:0; @@ -195,7 +195,7 @@ cnid_t cnid_cdb_add(struct _cnid_db *cdb, const struct stat *st, memset(&key, 0, sizeof(key)); memset(&data, 0, sizeof(data)); - if ((data.data = make_cnid_data(st, did, name, len)) == NULL) { + if ((data.data = make_cnid_data(cdb->flags, st, did, name, len)) == NULL) { LOG(log_error, logtype_default, "cnid_add: Path name is too long"); errno = CNID_ERR_PATH; return CNID_INVALID; diff --git a/libatalk/cnid/cdb/cnid_cdb_lookup.c b/libatalk/cnid/cdb/cnid_cdb_lookup.c index c3365534..07de0910 100644 --- a/libatalk/cnid/cdb/cnid_cdb_lookup.c +++ b/libatalk/cnid/cdb/cnid_cdb_lookup.c @@ -1,5 +1,5 @@ /* - * $Id: cnid_cdb_lookup.c,v 1.5 2009-10-29 13:38:16 didg Exp $ + * $Id: cnid_cdb_lookup.c,v 1.6 2009-11-20 17:22:11 didg Exp $ */ #ifdef HAVE_CONFIG_H @@ -34,7 +34,7 @@ cnid_t cnid_cdb_lookup(struct _cnid_db *cdb, const struct stat *st, const cnid_t return 0; } - if ((buf = make_cnid_data(st, did, name, len)) == NULL) { + if ((buf = make_cnid_data(cdb->flags, st, did, name, len)) == NULL) { LOG(log_error, logtype_default, "cnid_lookup: Pathname is too long"); return 0; } @@ -67,7 +67,7 @@ cnid_t cnid_cdb_lookup(struct _cnid_db *cdb, const struct stat *st, const cnid_t type_devino = ntohl(type_devino); } - buf = make_cnid_data(st, did, name, len); + buf = make_cnid_data(cdb->flags, st, did, name, len); key.data = buf +CNID_DID_OFS; key.size = CNID_DID_LEN + len + 1; diff --git a/libatalk/cnid/cdb/cnid_cdb_private.h b/libatalk/cnid/cdb/cnid_cdb_private.h index 7d9142a7..1373f5cb 100644 --- a/libatalk/cnid/cdb/cnid_cdb_private.h +++ b/libatalk/cnid/cdb/cnid_cdb_private.h @@ -1,5 +1,5 @@ /* - * $Id: cnid_cdb_private.h,v 1.6 2009-11-19 01:17:31 didg Exp $ + * $Id: cnid_cdb_private.h,v 1.7 2009-11-20 17:22:11 didg Exp $ */ #ifndef LIBATALK_CDB_PRIVATE_H @@ -132,7 +132,7 @@ typedef struct CNID_private { */ /* construct db_cnid data. NOTE: this is not re-entrant. */ -extern unsigned char *make_cnid_data (const struct stat *,const cnid_t , +extern unsigned char *make_cnid_data (u_int32_t flags, const struct stat *,const cnid_t , const char *, const size_t ); #endif /* atalk/cnid/cnid_private.h */ diff --git a/libatalk/cnid/cdb/cnid_cdb_rebuild_add.c b/libatalk/cnid/cdb/cnid_cdb_rebuild_add.c index af7cbb87..351f3153 100644 --- a/libatalk/cnid/cdb/cnid_cdb_rebuild_add.c +++ b/libatalk/cnid/cdb/cnid_cdb_rebuild_add.c @@ -1,5 +1,5 @@ /* - * $Id: cnid_cdb_rebuild_add.c,v 1.5 2009-10-29 13:38:16 didg Exp $ + * $Id: cnid_cdb_rebuild_add.c,v 1.6 2009-11-20 17:22:11 didg Exp $ * * All Rights Reserved. See COPYRIGHT. * @@ -104,7 +104,7 @@ cnid_t cnid_cdb_rebuild_add(struct _cnid_db *cdb, const struct stat *st, memset(&key, 0, sizeof(key)); memset(&data, 0, sizeof(data)); - if ((data.data = make_cnid_data(st, did, name, len)) == NULL) { + if ((data.data = make_cnid_data(cdb->flags, st, did, name, len)) == NULL) { LOG(log_error, logtype_default, "cnid_add: Path name is too long"); errno = CNID_ERR_PATH; return CNID_INVALID; diff --git a/libatalk/cnid/cdb/cnid_cdb_update.c b/libatalk/cnid/cdb/cnid_cdb_update.c index 9f4e9c2f..f1a4a30d 100644 --- a/libatalk/cnid/cdb/cnid_cdb_update.c +++ b/libatalk/cnid/cdb/cnid_cdb_update.c @@ -1,5 +1,5 @@ /* - * $Id: cnid_cdb_update.c,v 1.3 2005-05-03 14:55:13 didg Exp $ + * $Id: cnid_cdb_update.c,v 1.4 2009-11-20 17:22:11 didg Exp $ */ #ifdef HAVE_CONFIG_H @@ -33,7 +33,7 @@ int cnid_cdb_update(struct _cnid_db *cdb, const cnid_t id, const struct stat *st memset(&pkey, 0, sizeof(pkey)); memset(&data, 0, sizeof(data)); - buf = make_cnid_data(st, did, name, len); + buf = make_cnid_data(cdb->flags, st, did, name, len); key.data = buf +CNID_DEVINO_OFS; key.size = CNID_DEVINO_LEN; @@ -59,7 +59,7 @@ int cnid_cdb_update(struct _cnid_db *cdb, const cnid_t id, const struct stat *st } memset(&pkey, 0, sizeof(pkey)); - buf = make_cnid_data(st, did, name, len); + buf = make_cnid_data(cdb->flags, st, did, name, len); key.data = buf + CNID_DID_OFS; key.size = CNID_DID_LEN + len + 1; @@ -88,7 +88,7 @@ int cnid_cdb_update(struct _cnid_db *cdb, const cnid_t id, const struct stat *st memset(&data, 0, sizeof(data)); /* Make a new entry. */ - buf = make_cnid_data(st, did, name, len); + buf = make_cnid_data(cdb->flags, st, did, name, len); data.data = buf; memcpy(data.data, &id, sizeof(id)); data.size = CNID_HEADER_LEN + len + 1; -- 2.39.2