projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed zebra_close so that a NULL pointer is ignored.
[idzebra-moved-to-github.git]
/
index
/
extract.c
diff --git
a/index/extract.c
b/index/extract.c
index
c031719
..
d9c619b
100644
(file)
--- a/
index/extract.c
+++ b/
index/extract.c
@@
-1,10
+1,16
@@
/*
/*
- * Copyright (C) 1994-1998, Index Data
+ * Copyright (C) 1994-1999, Index Data
* All rights reserved.
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: extract.c,v $
* All rights reserved.
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: extract.c,v $
- * Revision 1.89 1998-10-28 10:54:38 adam
+ * Revision 1.91 1999-02-12 13:29:22 adam
+ * Implemented position-flag for registers.
+ *
+ * Revision 1.90 1999/02/02 14:50:52 adam
+ * Updated WIN32 code specific sections. Changed header.
+ *
+ * Revision 1.89 1998/10/28 10:54:38 adam
* SDRKit integration.
*
* Revision 1.88 1998/10/16 08:14:29 adam
* SDRKit integration.
*
* Revision 1.88 1998/10/16 08:14:29 adam
@@
-326,7
+332,7
@@
*/
#include <stdio.h>
#include <assert.h>
*/
#include <stdio.h>
#include <assert.h>
-#ifdef WINDOWS
+#ifdef WIN32
#include <io.h>
#else
#include <unistd.h>
#include <io.h>
#else
#include <unistd.h>
@@
-423,6
+429,7
@@
int key_open (struct recordGroup *rGroup, int mem)
struct encode_info {
int sysno;
int seqno;
struct encode_info {
int sysno;
int seqno;
+ int cmd;
char buf[768];
};
char buf[768];
};
@@
-430,6
+437,7
@@
void encode_key_init (struct encode_info *i)
{
i->sysno = 0;
i->seqno = 0;
{
i->sysno = 0;
i->seqno = 0;
+ i->cmd = -1;
}
char *encode_key_int (int d, char *bp)
}
char *encode_key_int (int d, char *bp)
@@
-471,8
+479,11
@@
void encode_key_write (char *k, struct encode_info *i, FILE *outf)
i->sysno = key.sysno;
i->seqno = 0;
}
i->sysno = key.sysno;
i->seqno = 0;
}
+ else if (!i->seqno && !key.seqno && i->cmd == *k)
+ return;
bp = encode_key_int (key.seqno - i->seqno, bp);
i->seqno = key.seqno;
bp = encode_key_int (key.seqno - i->seqno, bp);
i->seqno = key.seqno;
+ i->cmd = *k;
if (fwrite (i->buf, bp - i->buf, 1, outf) != 1)
{
logf (LOG_FATAL|LOG_ERRNO, "fwrite");
if (fwrite (i->buf, bp - i->buf, 1, outf) != 1)
{
logf (LOG_FATAL|LOG_ERRNO, "fwrite");
@@
-693,7
+704,8
@@
static void addIndexString (RecWord *p, const char *string, int length)
dst += sizeof(*pseqno);
}
reckeys.buf_used = dst - reckeys.buf;
dst += sizeof(*pseqno);
}
reckeys.buf_used = dst - reckeys.buf;
- (*pseqno)++;
+ if (*pseqno)
+ (*pseqno)++;
}
static void addSortString (RecWord *p, const char *string, int length)
}
static void addSortString (RecWord *p, const char *string, int length)
@@
-1255,7
+1267,12
@@
static int recordExtract (SYSNO *sysno, const char *fname,
extractCtrl.addSchema = addSchema;
extractCtrl.dh = rGroup->dh;
for (i = 0; i<256; i++)
extractCtrl.addSchema = addSchema;
extractCtrl.dh = rGroup->dh;
for (i = 0; i<256; i++)
- extractCtrl.seqno[i] = 0;
+ {
+ if (zebra_maps_is_positioned(rGroup->zebra_maps, i))
+ extractCtrl.seqno[i] = 1;
+ else
+ extractCtrl.seqno[i] = 0;
+ }
extractCtrl.zebra_maps = rGroup->zebra_maps;
extractCtrl.flagShowRecords = !rGroup->flagRw;
extractCtrl.zebra_maps = rGroup->zebra_maps;
extractCtrl.flagShowRecords = !rGroup->flagRw;