Version 2.0.58
[idzebra-moved-to-github.git] / bfile / mfile.c
index 86ae6e7..f05a0fc 100644 (file)
@@ -1,8 +1,5 @@
-/* $Id: mfile.c,v 1.73 2006-12-19 13:17:34 adam Exp $
-   Copyright (C) 1995-2006
-   Index Data ApS
-
-This file is part of the Zebra server.
+/* This file is part of the Zebra server.
+   Copyright (C) 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 <config.h>
+#endif
 #include <sys/types.h>
 #include <fcntl.h>
 #ifdef WIN32
@@ -45,7 +45,7 @@ static int scan_areadef(MFile_area ma, const char *ad, const char *base)
     /*
      * If no definition is given, use current directory, unlimited.
      */
-    char dirname[FILENAME_MAX+1]; 
+    char dirname[FILENAME_MAX+1];
     mf_dir **dp = &ma->dirs, *dir = *dp;
 
     if (!ad)
@@ -134,7 +134,7 @@ static int scan_areadef(MFile_area ma, const char *ad, const char *base)
     \retval -1 ERROR
     \retval -2 OK, but file does not created (read-only)
 */
-   
+
 static zint file_position(MFile mf, zint pos, int offset)
 {
     zint off = 0, ps;
@@ -203,7 +203,7 @@ MFile_area mf_init(const char *name, const char *spec, const char *base,
     struct dirent *dent;
     int fd, number;
     char metaname[FILENAME_MAX+1], tmpnam[FILENAME_MAX+1];
-    
+
     yaz_log(YLOG_DEBUG, "mf_init(%s)", name);
     strcpy(ma->name, name);
     ma->mfiles = 0;
@@ -366,6 +366,7 @@ MFile mf_open(MFile_area ma, const char *name, int block_size, int wflag)
                 yaz_log(YLOG_WARN, "metafile %s already open", name);
                 return 0;
             }
+            break;
        }
     if (!mnew)
     {
@@ -542,6 +543,13 @@ int mf_write(MFile mf, zint no, int offset, int nbytes, const void *buf)
            {
                yaz_log(YLOG_FATAL, "mf_write: %s error (4) no more space",
                         mf->name);
+               for (dp = mf->ma->dirs; dp ; dp = dp->next) {
+                    yaz_log(YLOG_FATAL,"%s: max=" ZINT_FORMAT
+                           " used=" ZINT_FORMAT " available=" ZINT_FORMAT,
+                        dp->name, (zint)dp->max_bytes,
+                        (zint)(dp->max_bytes - dp->avail_bytes), (zint)dp->avail_bytes );
+                }
+                yaz_log(YLOG_FATAL,"Adjust the limits in your zebra.cfg");
                 ret = -1;
                 goto out;
            }
@@ -565,7 +573,7 @@ int mf_write(MFile mf, zint no, int offset, int nbytes, const void *buf)
                 yaz_log(YLOG_FATAL, "mf_write: %s error (5)", mf->name);
                 ret = -1;
                 goto out;
-            }  
+            }
        }
        else
        {
@@ -589,7 +597,7 @@ int mf_write(MFile mf, zint no, int offset, int nbytes, const void *buf)
     return ret;
 }
 
-/** \brief metafile area statistics 
+/** \brief metafile area statistics
     \param ma metafile area handle
     \param no area number (0=first, 1=second, ..)
     \param directory holds directory upon completion (if non-NULL)
@@ -624,6 +632,7 @@ int mf_area_directory_stat(MFile_area ma, int no, const char **directory,
 /*
  * Local variables:
  * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
  * indent-tabs-mode: nil
  * End:
  * vim: shiftwidth=4 tabstop=8 expandtab