/*
- * $Id: cnid.c,v 1.11 2009-11-28 13:09:26 didg Exp $
- *
* Copyright (c) 2003 the Netatalk Team
* Copyright (c) 2003 Rafal Lewczuk <rlewczuk@pronet.pl>
*
}
/* Opens CNID database using particular back-end */
-struct _cnid_db *cnid_open(const char *volpath, mode_t mask, char *type, int flags)
+struct _cnid_db *cnid_open(const char *volpath, mode_t mask, char *type, int flags,
+ const char *cnidsrv, const char *cnidport)
{
struct _cnid_db *db;
cnid_module *mod = NULL;
struct list_head *ptr;
uid_t uid = -1;
gid_t gid = -1;
-
+
list_for_each(ptr, &modules) {
if (0 == strcmp(list_entry(ptr, cnid_module, db_list)->name, type)) {
mod = list_entry(ptr, cnid_module, db_list);
}
}
- db = mod->cnid_open(volpath, mask, flags);
+ struct cnid_open_args args = {volpath, mask, flags, cnidsrv, cnidport};
+ db = mod->cnid_open(&args);
if ((mod->flags & CNID_FLAG_SETUID) && !(flags & CNID_FLAG_MEMORY)) {
seteuid(0);
static void block_signal( u_int32_t flags)
{
if ((flags & CNID_FLAG_BLOCK)) {
- sigprocmask(SIG_BLOCK, &sigblockset, NULL);
+ pthread_sigmask(SIG_BLOCK, &sigblockset, NULL);
}
}
static void unblock_signal(u_int32_t flags)
{
if ((flags & CNID_FLAG_BLOCK)) {
- sigprocmask(SIG_UNBLOCK, &sigblockset, NULL);
+ pthread_sigmask(SIG_UNBLOCK, &sigblockset, NULL);
}
}
*/
static cnid_t valide(cnid_t id)
{
+ if (id == CNID_INVALID)
+ return id;
+
if (id < CNID_START) {
static int err = 0;
if (!err) {
/* --------------- */
cnid_t cnid_add(struct _cnid_db *cdb, const struct stat *st, const cnid_t did,
- char *name, const size_t len, cnid_t hint)
+ const char *name, const size_t len, cnid_t hint)
{
cnid_t ret;