X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fnormalize7bit.c;h=d5464e6739e7482d5e58289c360be3c6ddea42c8;hb=b4e80d145253134b44614896ba7f0b1975d22afa;hp=d79026b41d1c3ce6e1524a8377892873ad181222;hpb=a8f5308820cd689f5b92601038cb5d24118d5f2b;p=pazpar2-moved-to-github.git diff --git a/src/normalize7bit.c b/src/normalize7bit.c index d79026b..d5464e6 100644 --- a/src/normalize7bit.c +++ b/src/normalize7bit.c @@ -1,23 +1,23 @@ -/* $Id: normalize7bit.c,v 1.1 2007-04-26 21:33:32 marc Exp $ +/* $Id: normalize7bit.c,v 1.5 2007-10-31 05:29:08 quinn Exp $ Copyright (c) 2006-2007, Index Data. -This file is part of Pazpar2. + 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 Pazpar2; see the file LICENSE. If not, write to the -Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, 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 normalize7bit.c \brief char and string normalization for 7bit ascii only @@ -34,15 +34,16 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "normalize7bit.h" -char * normalize7bit_generic(char* str, char* rm_chars) +/** \brief removes leading whitespace.. Removes suffix cahrs in rm_chars */ +char * normalize7bit_generic(char * str, const char * rm_chars) { char *p, *pe; - for (p = str; *p && isspace(*p); p++) - ; - for (pe = p + strlen(p) - 1; - pe > p && strchr(rm_chars, *pe); pe--) - *pe = '\0'; - return p; + for (p = str; *p && isspace(*p); p++) + ; + for (pe = p + strlen(p) - 1; + pe > p && strchr(rm_chars, *pe); pe--) + *pe = '\0'; + return p; } @@ -84,13 +85,14 @@ char * normalize7bit_mergekey(char *buf, int skiparticle) *(pout--) = '\0'; } while (pout > buf && *pout == ' '); - + return buf; } // Extract what appears to be years from buf, storing highest and // lowest values. -int extract_years(const char *buf, int *first, int *last) +// longdate==1, look for YYYYMMDD, longdate=0 look only for YYYY +int extract7bit_dates(const char *buf, int *first, int *last, int longdate) { *first = -1; *last = -1; @@ -104,9 +106,11 @@ int extract_years(const char *buf, int *first, int *last) len = 0; for (e = buf; *e && isdigit(*e); e++) len++; - if (len == 4) + if ((len == 4 && !longdate) || (longdate && len >= 4 && len <= 8)) { int value = atoi(buf); + if (longdate && len == 4) + value *= 10000; // should really suffix 0101? if (*first < 0 || value < *first) *first = value; if (*last < 0 || value > *last)