From 769c42132669a220afdd0410ac0c962eb63e03a0 Mon Sep 17 00:00:00 2001 From: Frank Lahm Date: Wed, 8 Dec 2010 16:42:27 +0100 Subject: [PATCH] Support for caseless search --- bin/ad/ad_find.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/bin/ad/ad_find.c b/bin/ad/ad_find.c index 9891b14c..8501500c 100644 --- a/bin/ad/ad_find.c +++ b/bin/ad/ad_find.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "ad.h" static volatile sig_atomic_t alarmed; @@ -114,9 +115,26 @@ int ad_find(int argc, char **argv) if (openvol(srchvol, &vol) != 0) ERROR("Cant open volume \"%s\"", srchvol); + uint16_t flags = CONV_TOLOWER; + char namebuf[MAXPATHLEN + 1]; + if (convert_charset(vol.volinfo.v_volcharset, + vol.volinfo.v_volcharset, + vol.volinfo.v_maccharset, + argv[optind], + strlen(argv[optind]), + namebuf, + MAXPATHLEN, + &flags) == (size_t)-1) { + ERROR("conversion error"); + } + int count; char resbuf[DBD_MAX_SRCH_RSLTS * sizeof(cnid_t)]; - if ((count = cnid_find(vol.volume.v_cdb, argv[optind], strlen(argv[optind]), resbuf, sizeof(resbuf))) < 1) { + if ((count = cnid_find(vol.volume.v_cdb, + namebuf, + strlen(namebuf), + resbuf, + sizeof(resbuf))) < 1) { ret = 1; } else { ret = 0; -- 2.39.2