X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzebraapi.c;h=ec6a6608d595bf27c3b3562d2de11908b93ce4ed;hb=404739981f08f588c670e3fc272c547bde5ac5ae;hp=343c89d55d062b122e2b1ed7c6f1523112c8800a;hpb=ce0c8ffd1c3471504b638f6b47a0e85bf1b6f24f;p=idzebra-moved-to-github.git diff --git a/index/zebraapi.c b/index/zebraapi.c index 343c89d..ec6a660 100644 --- a/index/zebraapi.c +++ b/index/zebraapi.c @@ -69,7 +69,7 @@ static int zebra_chdir(ZebraService zs) yaz_log(log_level, "zebra_chdir"); dir = res_get(zs->global_res, "chdir"); if (!dir) - return; + return 0; yaz_log(YLOG_DEBUG, "chdir %s", dir); #ifdef WIN32 r = _chdir(dir); @@ -334,7 +334,7 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name, { struct zebra_register *reg; int record_compression = REC_COMPRESS_NONE; - const char *recordCompression = 0; + const char *compression_str = 0; const char *profilePath; int sort_type = ZEBRA_SORT_TYPE_FLAT; ZEBRA_RES ret = ZEBRA_OK; @@ -420,11 +420,25 @@ struct zebra_register *zebra_register_open(ZebraService zs, const char *name, zebraRankInstall(reg, rank_similarity_class); zebraRankInstall(reg, rank_static_class); - recordCompression = res_get_def(res, "recordCompression", "none"); - if (!strcmp(recordCompression, "none")) + compression_str = res_get_def(res, "recordCompression", "none"); + if (!strcmp(compression_str, "none")) record_compression = REC_COMPRESS_NONE; - if (!strcmp(recordCompression, "bzip2")) + else if (!strcmp(compression_str, "bzip2")) record_compression = REC_COMPRESS_BZIP2; + else if (!strcmp(compression_str, "zlib")) + record_compression = REC_COMPRESS_ZLIB; + else + { + yaz_log(YLOG_FATAL, "invalid recordCompression: %s", compression_str); + ret = ZEBRA_FAIL; + } + + if (!rec_check_compression_method(record_compression)) + { + yaz_log(YLOG_FATAL, "unsupported recordCompression: %s", + compression_str); + ret = ZEBRA_FAIL; + } { const char *index_fname = res_get_def(res, "index", "default.idx"); @@ -1985,16 +1999,18 @@ ZEBRA_RES zebra_end_transaction(ZebraHandle zh, ZebraTransactionStatus *status) ZEBRA_RES zebra_repository_update(ZebraHandle zh, const char *path) { - return zebra_repository_index(zh, path, action_update); + /* Both of these probably need to be thought out better */ + return zebra_repository_index(zh, path, action_update, NULL); } ZEBRA_RES zebra_repository_delete(ZebraHandle zh, const char *path) { - return zebra_repository_index(zh, path, action_delete); + /* Both of these probably need to be thought out better */ + return zebra_repository_index(zh, path, action_delete, NULL); } ZEBRA_RES zebra_repository_index(ZebraHandle zh, const char *path, - enum zebra_recctrl_action_t action) + enum zebra_recctrl_action_t action, char *useIndexDriver) { ASSERTZH; assert(path); @@ -2008,10 +2024,20 @@ ZEBRA_RES zebra_repository_index(ZebraHandle zh, const char *path, else yaz_log(log_level, "update action=%d", (int) action); - if (zh->m_record_id && !strcmp(zh->m_record_id, "file")) - return zebra_update_file_match(zh, path); + if(!useIndexDriver) + { + if (zh->m_record_id && !strcmp(zh->m_record_id, "file")) + return zebra_update_file_match(zh, path); + else + return zebra_update_from_path(zh, path, action); + } else - return zebra_update_from_path(zh, path, action); + { + /* This is used if we indicate we'll be indexing from the plugin + rather than any of the file input systems */ + zebra_update_from_driver(zh, path, action, useIndexDriver); + } + } ZEBRA_RES zebra_repository_show(ZebraHandle zh, const char *path)