]> arthur.barton.de Git - netatalk.git/blobdiff - etc/cnid_dbd/pack.c
New MySQL CNID backend
[netatalk.git] / etc / cnid_dbd / pack.c
index 69f5fa627e7125c157a273448bf948a374679566..dc61ddedede532df09531bf054d7f153c1c66251 100644 (file)
 #include <db.h>
 
 #include <atalk/unicode.h>
-#include <atalk/volinfo.h>
 #include <atalk/logger.h>
-#include <atalk/cnid_dbd_private.h>
+#include <atalk/cnid_bdb_private.h>
+#include <atalk/volume.h>
 #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. */