X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Futil.cpp;h=da9eb539ee20f8afecd3d2614df5c8c0b5eac33d;hb=63dda9fef8b647d491dd2baef8ec4f4f88ee1b11;hp=fc304cab46691ec10536e9ddce14943106b8a9a3;hpb=df8db6d8a539fa6d793aeb541f7c64d625c91d42;p=metaproxy-moved-to-github.git diff --git a/src/util.cpp b/src/util.cpp index fc304ca..da9eb53 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,4 +1,4 @@ -/* $Id: util.cpp,v 1.4 2006-01-13 15:09:35 adam Exp $ +/* $Id: util.cpp,v 1.5 2006-01-16 15:51:56 adam Exp $ Copyright (c) 2005, Index Data. %LICENSE% @@ -10,6 +10,7 @@ #include #include "util.hpp" + bool yp2::util::pqf(ODR odr, Z_APDU *apdu, const std::string &q) { YAZ_PQF_Parser pqf_parser = yaz_pqf_create(); @@ -28,6 +29,45 @@ bool yp2::util::pqf(ODR odr, Z_APDU *apdu, const std::string &q) { return true; } + +bool yp2::util::set_databases_from_zurl(ODR odr, std::string zurl, + int *db_num, char ***db_strings) +{ + const char *sep = strchr(zurl.c_str(), '/'); + if (!sep) + return false; + + int num = 0; + const char *cp1 = sep+1; + while(1) + { + const char *cp2 = strchr(cp1, '+'); + if (!cp2) + break; + cp1 = cp2+1; + num++; + } + *db_num = num+1; + *db_strings = (char **) odr_malloc(odr, sizeof(char*) * (*db_num)); + + num = 0; + cp1 = sep+1; + while(1) + { + const char *cp2 = strchr(cp1, '+'); + if (cp2) + (*db_strings)[num] = odr_strdupn(odr, cp1, cp2-cp1-1); + else + { + (*db_strings)[num] = odr_strdup(odr, cp1); + break; + } + cp1 = cp2+1; + num++; + } + return true; +} + yp2::odr::odr(int type) { m_odr = odr_createmem(type);