X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fcnid_dbd%2Fpack.c;h=dc61ddedede532df09531bf054d7f153c1c66251;hb=f254fd618b53e97cc5382b23709d4f3de1e70b41;hp=f37ac67d716d0366aeb376f5f19c244feef942c4;hpb=ad220cd96d55445846d30b951a188ec5f9b849b2;p=netatalk.git diff --git a/etc/cnid_dbd/pack.c b/etc/cnid_dbd/pack.c index f37ac67d..dc61dded 100644 --- a/etc/cnid_dbd/pack.c +++ b/etc/cnid_dbd/pack.c @@ -8,7 +8,7 @@ #include "config.h" #endif /* HAVE_CONFIG_H */ -#include +#include #include #include @@ -16,13 +16,12 @@ #include #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. */