/*
- * $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.
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];
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;
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;
/*
- * $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
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;
}
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;
/*
- * $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
*/
/* 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 */
/*
- * $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.
*
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;
/*
- * $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
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;
}
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;
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;