-/*
- * Copyright (C) 1994-2002, Index Data
- * All rights reserved.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Id: extract.c,v 1.119 2002-05-07 11:05:19 adam Exp $
- */
+/* $Id: extract.c,v 1.123 2002-08-29 10:00:15 adam Exp $
+ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
+ Index Data Aps
+
+This file is part of the Zebra server.
+
+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
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+Zebra 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 Zebra; see the file LICENSE.zebra. If not, write to the
+Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.
+*/
+
+
#include <stdio.h>
#include <assert.h>
#ifdef WIN32
#define PRINTF_OFF_T "%ld"
#endif
+#define USE_SHELLSORT 0
+
+#if USE_SHELLSORT
static void shellsort(void *ar, int r, size_t s,
int (*cmp)(const void *a, const void *b))
{
memcpy (a+s*j, v, s);
}
}
-
+#endif
static void logRecord (ZebraHandle zh)
{
struct recordGroup *rGroup;
};
-static void recordLogPreamble (int level, const char *msg, void *info)
-{
- struct recordLogInfo *p = (struct recordLogInfo *) info;
- FILE *outf = yaz_log_file ();
-
- if (level & LOG_LOG)
- return ;
- fprintf (outf, "File %s, offset %d, type %s\n",
- p->rGroup->recordType, p->recordOffset, p->fname);
- log_event_start (NULL, NULL);
-}
-
-
static int recordExtract (ZebraHandle zh,
SYSNO *sysno, const char *fname,
struct recordGroup *rGroup, int deleteFlag,
char *matchStr;
SYSNO sysnotmp;
Record rec;
- struct recordLogInfo logInfo;
off_t recordOffset = 0;
if (fi->fd != -1)
if (!rGroup->flagRw)
printf ("File: %s " PRINTF_OFF_T "\n", fname, recordOffset);
-
- logInfo.fname = fname;
- logInfo.recordOffset = recordOffset;
- logInfo.rGroup = rGroup;
- log_event_start (recordLogPreamble, &logInfo);
+ if (rGroup->flagRw)
+ {
+ char msg[512];
+ sprintf (msg, "%s:" PRINTF_OFF_T , fname, recordOffset);
+ yaz_log_init_prefix2 (msg);
+ }
r = (*recType->extract)(clientData, &extractCtrl);
- log_event_start (NULL, NULL);
-
+ yaz_log_init_prefix2 (0);
if (r == RECCTRL_EXTRACT_EOF)
return 0;
- else if (r == RECCTRL_EXTRACT_ERROR)
+ else if (r == RECCTRL_EXTRACT_ERROR_GENERIC)
{
/* error occured during extraction ... */
if (rGroup->flagRw &&
}
return 0;
}
+ else if (r == RECCTRL_EXTRACT_ERROR_NO_SUCH_FILTER)
+ {
+ /* error occured during extraction ... */
+ if (rGroup->flagRw &&
+ zh->records_processed < rGroup->fileVerboseLimit)
+ {
+ logf (LOG_WARN, "no filter for %s %s "
+ PRINTF_OFF_T, rGroup->recordType,
+ fname, recordOffset);
+ }
+ return 0;
+ }
if (zh->reg->keys.buf_used == 0)
{
/* the extraction process returned no information - the record
if (r == RECCTRL_EXTRACT_EOF)
return 0;
- else if (r == RECCTRL_EXTRACT_ERROR)
+ else if (r == RECCTRL_EXTRACT_ERROR_GENERIC)
{
/* error occured during extraction ... */
-#if 1
- yaz_log (LOG_WARN, "extract error");
-#else
- if (rGroup->flagRw &&
- zh->records_processed < rGroup->fileVerboseLimit)
- {
- logf (LOG_WARN, "fail %s %s %ld", rGroup->recordType,
- fname, (long) recordOffset);
- }
-#endif
+ yaz_log (LOG_WARN, "extract error: generic");
+ return 0;
+ }
+ else if (r == RECCTRL_EXTRACT_ERROR_NO_SUCH_FILTER)
+ {
+ /* error occured during extraction ... */
+ yaz_log (LOG_WARN, "extract error: no such filter");
return 0;
}
if (zh->reg->keys.buf_used == 0)