X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=blobdiff_plain;f=libatalk%2Fcnid%2Fcnid.c;h=021cecfbfa35ac6425ef9afbde9b61273458fe6f;hp=68136f9f196594325119d762eae8ec1154f06397;hb=939eb9da6116bd502cdae97f84541993848071b4;hpb=ff3b4646472add7902b0d36dd1a941ec1a54e999 diff --git a/libatalk/cnid/cnid.c b/libatalk/cnid/cnid.c index 68136f9f..021cecfb 100644 --- a/libatalk/cnid/cnid.c +++ b/libatalk/cnid/cnid.c @@ -29,6 +29,7 @@ #include #include #include +#include /* List of all registered modules. */ static struct list_head modules = ATALK_LIST_HEAD_INIT(modules); @@ -46,7 +47,7 @@ void cnid_register(struct _cnid_module *module) /* Check if our module is already registered. */ list_for_each(ptr, &modules) if (0 == strcmp(list_entry(ptr, cnid_module, db_list)->name, module->name)) { - LOG(log_error, logtype_afpd, "Module with name [%s] is already registered !", module->name); + LOG(log_error, logtype_afpd, "Module with name [%s] is already registered!", module->name); return; } @@ -161,7 +162,7 @@ struct _cnid_db *cnid_open(const char *volpath, mode_t mask, char *type, int fla } /* ------------------- */ -static void block_signal( u_int32_t flags) +static void block_signal(uint32_t flags) { if ((flags & CNID_FLAG_BLOCK)) { pthread_sigmask(SIG_BLOCK, &sigblockset, NULL); @@ -169,7 +170,7 @@ static void block_signal( u_int32_t flags) } /* ------------------- */ -static void unblock_signal(u_int32_t flags) +static void unblock_signal(uint32_t flags) { if ((flags & CNID_FLAG_BLOCK)) { pthread_sigmask(SIG_UNBLOCK, &sigblockset, NULL); @@ -199,10 +200,10 @@ static cnid_t valide(cnid_t id) /* Closes CNID database. Currently it's just a wrapper around db->cnid_close(). */ void cnid_close(struct _cnid_db *db) { -u_int32_t flags; + uint32_t flags; if (NULL == db) { - LOG(log_error, logtype_afpd, "Error: cnid_close called with NULL argument !"); + LOG(log_error, logtype_afpd, "Error: cnid_close called with NULL argument!"); return; } /* cnid_close free db */ @@ -216,7 +217,10 @@ u_int32_t flags; cnid_t cnid_add(struct _cnid_db *cdb, const struct stat *st, const cnid_t did, const char *name, const size_t len, cnid_t hint) { -cnid_t ret; + cnid_t ret; + + if (len == 0) + return CNID_INVALID; block_signal(cdb->flags); ret = valide(cdb->cnid_add(cdb, st, did, name, len, hint)); @@ -334,3 +338,15 @@ cnid_t ret; unblock_signal(cdb->flags); return ret; } + +/* --------------- */ +int cnid_wipe(struct _cnid_db *cdb) +{ + int ret = 0; + + block_signal(cdb->flags); + if (cdb->cnid_wipe) + ret = cdb->cnid_wipe(cdb); + unblock_signal(cdb->flags); + return ret; +}