X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=index%2Fupdate_path.c;h=6e4585c85dbdaf2db403b533aaa787af94f73c79;hp=93d6b7fd199bfba751335a30f572e32407614d19;hb=c97718edd01f7d1813edbf94c58b93a747143311;hpb=d82c0efad7971d102220a8824e1ea674db5b7fe2 diff --git a/index/update_path.c b/index/update_path.c index 93d6b7f..6e4585c 100644 --- a/index/update_path.c +++ b/index/update_path.c @@ -1,8 +1,5 @@ -/* $Id: update_path.c,v 1.4 2007-10-29 09:25:41 adam Exp $ - Copyright (C) 1995-2007 - Index Data ApS - -This file is part of the Zebra server. +/* This file is part of the Zebra server. + Copyright (C) 1994-2011 Index Data Zebra is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -20,6 +17,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#if HAVE_CONFIG_H +#include +#endif #include #include #include @@ -37,8 +37,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "index.h" -static void repositoryExtractR(ZebraHandle zh, int deleteFlag, char *rep, - int level) +static void repositoryExtractR(ZebraHandle zh, char *rep, int level, + enum zebra_recctrl_action_t action) { struct dir_entry *e; int i; @@ -63,10 +63,10 @@ static void repositoryExtractR(ZebraHandle zh, int deleteFlag, char *rep, switch (e[i].kind) { case dirs_file: - zebra_extract_file(zh, NULL, rep, deleteFlag); + zebra_extract_file(zh, NULL, rep, action); break; case dirs_dir: - repositoryExtractR(zh, deleteFlag, rep, level+1); + repositoryExtractR(zh, rep, level+1, action); break; } } @@ -107,7 +107,9 @@ void repositoryShow(ZebraHandle zh, const char *path) } static void repositoryExtract(ZebraHandle zh, - int deleteFlag, const char *path) + const char *path, + enum zebra_recctrl_action_t action) + { struct stat sbuf; char src[1024]; @@ -130,44 +132,33 @@ static void repositoryExtract(ZebraHandle zh, if (ret == -1) yaz_log(YLOG_WARN|YLOG_ERRNO, "Cannot access path %s", src); else if (S_ISREG(sbuf.st_mode)) - zebra_extract_file(zh, NULL, src, deleteFlag); + zebra_extract_file(zh, NULL, src, action); else if (S_ISDIR(sbuf.st_mode)) - repositoryExtractR(zh, deleteFlag, src, 0); + repositoryExtractR(zh, src, 0, action); else yaz_log(YLOG_WARN, "Skipping path %s", src); } -static void repositoryExtractG(ZebraHandle zh, const char *path, - int deleteFlag) + +ZEBRA_RES zebra_update_from_path(ZebraHandle zh, const char *path, + enum zebra_recctrl_action_t action) { if (!strcmp(path, "") || !strcmp(path, "-")) { char src[1024]; while (scanf("%1020s", src) == 1) - repositoryExtract(zh, deleteFlag, src); + repositoryExtract(zh, src, action); } else - repositoryExtract(zh, deleteFlag, path); -} - -ZEBRA_RES zebra_update_from_path(ZebraHandle zh, const char *path) -{ - assert(path); - repositoryExtractG(zh, path, 0); - return ZEBRA_OK; -} - -ZEBRA_RES zebra_delete_from_path(ZebraHandle zh, const char *path) -{ - assert(path); - repositoryExtractG(zh, path, 1); + repositoryExtract(zh, path, action); return ZEBRA_OK; } /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab