bumped version number.
[pazpar2-moved-to-github.git] / src / logic.c
index 2316945..a004da3 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: logic.c,v 1.68 2007-10-02 10:08:39 adam Exp $
+/* $Id: logic.c,v 1.73 2007-12-22 17:10:37 adam Exp $
    Copyright (c) 2006-2007, Index Data.
 
    This file is part of Pazpar2.
@@ -525,7 +525,8 @@ static int prepare_session_database(struct session *se,
 }
 
 // called if watch should be removed because http_channel is to be destroyed
-static void session_watch_cancel(void *data, struct http_channel *c)
+static void session_watch_cancel(void *data, struct http_channel *c,
+                                 void *data2)
 {
     struct session_watchentry *ent = data;
 
@@ -553,9 +554,12 @@ void session_alert_watch(struct session *s, int what)
     if (s->watchlist[what].fun)
     {
         /* our watch is no longer associated with http_channel */
+        void *data;
+        session_watchfun fun;
+
         http_remove_observer(s->watchlist[what].obs);
-        session_watchfun fun = s->watchlist[what].fun;
-        void *data = s->watchlist[what].data;
+        fun = s->watchlist[what].fun;
+        data = s->watchlist[what].data;
 
         /* reset watch before fun is invoked - in case fun wants to set
            it again */
@@ -1074,11 +1078,16 @@ static struct record_metadata *record_metadata_init(
         rec_md->data.text.disp = nmem_strdup(nmem, p);
         rec_md->data.text.sort = 0;
     }
-    else if (type == Metadata_type_year)
+    else if (type == Metadata_type_year || type == Metadata_type_date)
     {
         int first, last;
-        if (extract7bit_years((char *) value, &first, &last) < 0)
+        int longdate = 0;
+
+        if (type == Metadata_type_date)
+            longdate = 1;
+        if (extract7bit_dates((char *) value, &first, &last, longdate) < 0)
             return 0;
+
         rec_md->data.number.min = first;
         rec_md->data.number.max = last;
     }
@@ -1260,6 +1269,12 @@ struct record *ingest_record(struct client *cl, Z_External *rec,
                          
                          cluster->sortkeys[sk_field_id]->text.disp = 
                              rec_md->data.text.disp;
+                         if (!sort_str)
+                         {
+                             sort_str = rec_md->data.text.disp;
+                             yaz_log(YLOG_WARN, 
+                                     "Could not make sortkey. Bug #1858");
+                         }
                          cluster->sortkeys[sk_field_id]->text.sort = 
                              nmem_strdup(se->nmem, sort_str);
 #if 0