+
+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;
+}
+