]> arthur.barton.de Git - netatalk.git/commitdiff
cdb don't device number in db save CNID_FLAG_NODEV is set
authordidg <didg>
Fri, 20 Nov 2009 17:22:11 +0000 (17:22 +0000)
committerdidg <didg>
Fri, 20 Nov 2009 17:22:11 +0000 (17:22 +0000)
libatalk/cnid/cdb/cnid_cdb_add.c
libatalk/cnid/cdb/cnid_cdb_lookup.c
libatalk/cnid/cdb/cnid_cdb_private.h
libatalk/cnid/cdb/cnid_cdb_rebuild_add.c
libatalk/cnid/cdb/cnid_cdb_update.c

index 774273c211d14b514d9afa410dd254ffc2c9ab99..418f68cd647cf1fabf777963ef95b71a96537ad5 100644 (file)
@@ -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;
index c336553486f9e4dc57eb5ba2a6ff4497c5c42de3..07de091067fb3b561925e4003f5f2d3831d353b1 100644 (file)
@@ -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;
     
index 7d9142a7bafdc53d06f7b52fd6e208a6663363ae..1373f5cb01d4f273b46e60d5c95e8922edbfbbc9 100644 (file)
@@ -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 */
index af7cbb870c90d05ecbd1b93f627576515c9b0f8e..351f31536073982a4b3f08be5e1b40f61fec8f21 100644 (file)
@@ -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;
index 9f4e9c2fa9ffe1a1f00bcffc4a6f34f64988d869..f1a4a30dc48b24f6bedbbca48d7d034f81d57615 100644 (file)
@@ -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;