More wrbuf_buf woes.
[yaz-moved-to-github.git] / client / fhistory.c
index 0020f76..7fb5f3f 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 1995-2007, Index Data ApS
  * See the file LICENSE for details.
  *
- * $Id: fhistory.c,v 1.1 2007-01-24 11:50:18 adam Exp $
+ * $Id: fhistory.c,v 1.3 2007-03-19 22:17:41 adam Exp $
  */
 /** \file fhistory.c
  *  \brief file history implementation
@@ -75,7 +75,10 @@ int file_history_save(file_history_t fh)
     char* homedir = getenv("HOME");
     char fname[1024];
     int ret = 0;
+    int sz = wrbuf_len(fh->wr);
 
+    if (!sz)
+        return 0;
     sprintf(fname, "%.500s%s%s", homedir ? homedir : "",
             homedir ? "/" : "", ".yazclient.history");
 
@@ -86,8 +89,8 @@ int file_history_save(file_history_t fh)
     }
     else
     {
-        size_t w = fwrite(wrbuf_buf(fh->wr), 1, wrbuf_len(fh->wr), f);
-        if (w != wrbuf_len(fh->wr))
+        size_t w = fwrite(wrbuf_buf(fh->wr), 1, sz, f);
+        if (w != sz)
             ret = -1;
         if (fclose(f))
             ret = -1;
@@ -108,7 +111,7 @@ int file_history_trav(file_history_t fh, void *client_data,
             if (wrbuf_buf(fh->wr)[i] == '\n')
             {
                 wrbuf_buf(fh->wr)[i] = '\0';
-                callback(client_data, wrbuf_buf(fh->wr) + off);
+                callback(client_data, wrbuf_cstr(fh->wr) + off);
                 wrbuf_buf(fh->wr)[i] = '\n';
                 i++;
                 break;