Added "tagsysno" and "tagrank" directives to zebra.cfg.
[idzebra-moved-to-github.git] / index / zebraapi.c
index eaf6987..16e5b06 100644 (file)
@@ -1,10 +1,19 @@
 /*
- * Copyright (C) 1995-1998, Index Data
+ * Copyright (C) 1995-1999, Index Data
  * All rights reserved.
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: zebraapi.c,v $
- * Revision 1.13  1998-12-16 12:23:30  adam
+ * Revision 1.16  1999-02-19 10:38:30  adam
+ * Implemented chdir-setting.
+ *
+ * Revision 1.15  1999/02/17 12:18:12  adam
+ * Fixed zebra_close so that a NULL pointer is ignored.
+ *
+ * Revision 1.14  1999/02/02 14:51:11  adam
+ * Updated WIN32 code specific sections. Changed header.
+ *
+ * Revision 1.13  1998/12/16 12:23:30  adam
  * Added facility for database name mapping using resource mapdb.
  *
  * Revision 1.12  1998/11/16 10:18:10  adam
  */
 
 #include <stdio.h>
-#ifdef WINDOWS
+#ifdef WIN32
 #include <io.h>
 #include <process.h>
+#include <direct.h>
 #else
 #include <unistd.h>
 #endif
 #include <diagbib1.h>
 #include "zserver.h"
 
+static void zebra_chdir (ZebraHandle zh)
+{
+    const char *dir = res_get (zh->res, "chdir");
+    if (!dir)
+       return;
+    logf (LOG_DEBUG, "chdir %s", dir);
+#ifdef WIN32
+    _chdir(dir);
+#else
+    chdir (dir);
+#endif
+}
 static int zebra_register_lock (ZebraHandle zh)
 {
     time_t lastChange;
-    int state = zebra_server_lock_get_state(zh, &lastChange);
+    int state;
+
+    zebra_chdir (zh);
+
+    state = zebra_server_lock_get_state(zh, &lastChange);
 
     switch (state)
     {
@@ -161,7 +187,7 @@ static void zebra_register_unlock (ZebraHandle zh)
         else
             waitSec = 0;
     }
-#ifdef WINDOWS
+#ifdef WIN32
 #else
     if (waitSec > 0)
         sleep (waitSec);
@@ -179,6 +205,7 @@ ZebraHandle zebra_open (const char *configName)
        logf (LOG_WARN, "Failed to read resources `%s'", configName);
        return NULL;
     }
+    zebra_chdir (zh);
     zebra_server_lock_init (zh);
     zh->dh = data1_create ();
     zh->bfs = bfs_create (res_get (zh->res, "register"));
@@ -213,6 +240,9 @@ ZebraHandle zebra_open (const char *configName)
 
 void zebra_close (ZebraHandle zh)
 {
+    if (!zh)
+       return;
+    zebra_chdir (zh);
     if (zh->records)
     {
         resultSetDestroy (zh);