2 * $Id: cnid_mangle_add.c,v 1.3 2002-06-03 22:55:31 jmarcus Exp $
7 #endif /* HAVE_CONFIG_H */
12 #include <sys/param.h>
15 #include <atalk/logger.h>
19 #include <netatalk/endian.h>
20 #include <atalk/adouble.h>
21 #include <atalk/cnid.h>
23 #include "cnid_private.h"
25 /* Add a mangled filename. */
27 cnid_mangle_add(void *CNID, char *mfilename, char *filename)
39 memset(&key, 0, sizeof(key));
40 memset(&data, 0, sizeof(data));
43 key.size = strlen(mfilename);
45 data.size = strlen(filename) + 1;
48 if ((rc = txn_begin(db->dbenv, NULL, &tid, 0)) != 0) {
49 LOG(log_error, logtype_default, "cnid_mangle_add: Failed to begin transaction: %s", db_strerror(rc));
53 if ((rc = db->db_mangle->put(db->db_mangle, tid, &key, &data, 0))) {
54 if ((ret = txn_abort(tid)) != 0) {
55 LOG(log_error, logtype_default, "cnid_mangle_add: txn_abort: %s", db_strerror(ret));
59 case DB_LOCK_DEADLOCK:
62 LOG(log_error, logtype_default, "cnid_mangle_add: Failed to add mangled filename to the database: %s", db_strerror(rc));
67 if ((rc = txn_commit(tid, 0)) != 0) {
68 LOG(log_error, logtype_default, "cnid_mangle_add: Unable to commit transaction: %s", db_strerror(rc));
74 #endif /* FILE_MANGLING */