X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Flogic.c;h=d7fb5c01326694e64f5977954078963fa51351dd;hb=e107b0011a295ccc61502d6e5ea79d9125a3fbb4;hp=625adc056f8eba6c57d949c87f856b218c6d437d;hpb=56a55ffd1562165febc1a2a66d0c2a95e966d540;p=pazpar2-moved-to-github.git diff --git a/src/logic.c b/src/logic.c index 625adc0..d7fb5c0 100644 --- a/src/logic.c +++ b/src/logic.c @@ -1,22 +1,20 @@ -/* $Id: logic.c,v 1.69 2007-10-02 12:11:14 adam Exp $ - Copyright (c) 2006-2007, Index Data. +/* This file is part of Pazpar2. + Copyright (C) 2006-2008 Index Data - This file is part of Pazpar2. +Pazpar2 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 +Software Foundation; either version 2, or (at your option) any later +version. - Pazpar2 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 - Software Foundation; either version 2, or (at your option) any later - version. +Pazpar2 is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. - Pazpar2 is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - You should have received a copy of the GNU General Public License - along with Pazpar2; see the file LICENSE. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ /** \file logic.c @@ -554,9 +552,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 */ @@ -1075,11 +1076,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; } @@ -1261,6 +1267,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