Happy new year
[idzebra-moved-to-github.git] / index / update_path.c
index f2a9cea..9cc6632 100644 (file)
@@ -1,8 +1,5 @@
-/* $Id: update_path.c,v 1.3 2007-01-15 15:10:17 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-2009 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
@@ -37,17 +34,17 @@ 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;
-    size_t rep_len = strlen (rep);
+    size_t rep_len = strlen(rep);
 
-    e = dir_open (rep, zh->path_reg, zh->m_follow_links);
+    e = dir_open(rep, zh->path_reg, zh->m_follow_links);
     if (!e)
         return;
-    yaz_log (YLOG_LOG, "dir %s", rep);
+    yaz_log(YLOG_LOG, "dir %s", rep);
     if (rep[rep_len-1] != '/')
         rep[rep_len] = '/';
     else
@@ -56,21 +53,21 @@ static void repositoryExtractR(ZebraHandle zh, int deleteFlag, char *rep,
     for (i=0; e[i].name; i++)
     {
        char *ecp;
-        strcpy (rep +rep_len+1, e[i].name);
-       if ((ecp = strrchr (e[i].name, '/')))
+        strcpy(rep +rep_len+1, e[i].name);
+       if ((ecp = strrchr(e[i].name, '/')))
            *ecp = '\0';
 
         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;
         }
     }
-    dir_free (&e);
+    dir_free(&e);
 
 }
 
@@ -82,15 +79,15 @@ void repositoryShow(ZebraHandle zh, const char *path)
     Dict dict;
     struct dirs_info *di;
 
-    if (!(dict = dict_open_res (zh->reg->bfs, FMATCH_DICT, 50, 0, 0, zh->res)))
+    if (!(dict = dict_open_res(zh->reg->bfs, FMATCH_DICT, 50, 0, 0, zh->res)))
     {
-        yaz_log (YLOG_FATAL, "dict_open fail of %s", FMATCH_DICT);
+        yaz_log(YLOG_FATAL, "dict_open fail of %s", FMATCH_DICT);
        return;
     }
     
     strncpy(src, path, sizeof(src)-1);
     src[sizeof(src)-1]='\0';
-    src_len = strlen (src);
+    src_len = strlen(src);
     
     if (src_len && src[src_len-1] != '/')
     {
@@ -98,16 +95,18 @@ void repositoryShow(ZebraHandle zh, const char *path)
         src[++src_len] = '\0';
     }
     
-    di = dirs_open (dict, src, zh->m_flag_rw);
+    di = dirs_open(dict, src, zh->m_flag_rw);
     
-    while ( (dst = dirs_read (di)) )
-        yaz_log (YLOG_LOG, "%s", dst->path);
-    dirs_free (&di);
-    dict_close (dict);
+    while ((dst = dirs_read(di)))
+        yaz_log(YLOG_LOG, "%s", dst->path);
+    dirs_free(&di);
+    dict_close(dict);
 }
 
 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];
@@ -117,51 +116,39 @@ static void repositoryExtract(ZebraHandle zh,
 
     if (zh->path_reg && !yaz_is_abspath(path))
     {
-        strcpy (src, zh->path_reg);
-        strcat (src, "/");
+        strcpy(src, zh->path_reg);
+        strcat(src, "/");
     }
     else
         *src = '\0';
-    strcat (src, path);
-    ret = zebra_file_stat (src, &sbuf, zh->m_follow_links);
+    strcat(src, path);
+    ret = zebra_file_stat(src, &sbuf, zh->m_follow_links);
 
-    strcpy (src, path);
+    strcpy(src, path);
 
     if (ret == -1)
-        yaz_log (YLOG_WARN|YLOG_ERRNO, "Cannot access path %s", src);
+        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);
+        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;
 }