X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fcnid_dbd%2Fpack.c;h=2e9a32eec6a62234ad6cee93f084794d9accd620;hb=321a0107c48da7b3fbf895a2b32244174c1ff39c;hp=69f5fa627e7125c157a273448bf948a374679566;hpb=30bdec7c3396de87144d5f6d45f11ffa6dad116b;p=netatalk.git diff --git a/etc/cnid_dbd/pack.c b/etc/cnid_dbd/pack.c index 69f5fa62..2e9a32ee 100644 --- a/etc/cnid_dbd/pack.c +++ b/etc/cnid_dbd/pack.c @@ -16,13 +16,12 @@ #include #include -#include #include #include +#include #include "pack.h" -/* in main.c for `cnid_dbd` or cmd_dbd.c for `dbd` */ -extern struct volinfo volinfo; +static const struct vol *volume; /* --------------- */ /* @@ -81,9 +80,9 @@ int idxname(DB *dbp _U_, const DBT *pkey _U_, const DBT *pdata, DBT *skey) uint16_t flags = CONV_TOLOWER; memset(skey, 0, sizeof(DBT)); - if (convert_charset(volinfo.v_volcharset, - volinfo.v_volcharset, - volinfo.v_maccharset, + if (convert_charset(volume->v_volcharset, + volume->v_volcharset, + volume->v_maccharset, (char *)pdata->data + CNID_NAME_OFS, strlen((char *)pdata->data + CNID_NAME_OFS), buffer, @@ -97,6 +96,11 @@ int idxname(DB *dbp _U_, const DBT *pkey _U_, const DBT *pdata, DBT *skey) return (0); } +void pack_setvol(const struct vol *vol) +{ + volume = vol; +} + /* The equivalent to make_cnid_data in the cnid library. Non re-entrant. We differ from make_cnid_data in that we never return NULL, rqst->name cannot ever cause start[] to overflow because name length is checked in libatalk. */