X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzinfo.c;h=17a20e48d7072abd05934725d78780a9d1201423;hb=42a51f164decd9a67018749836b40833b285162e;hp=b30a5705013feae21dd09106ae95f87bb1a63109;hpb=4e45c8e2e01c52e8d03dbd9a0873a9e2ff7e5f91;p=idzebra-moved-to-github.git diff --git a/index/zinfo.c b/index/zinfo.c index b30a570..17a20e4 100644 --- a/index/zinfo.c +++ b/index/zinfo.c @@ -1,10 +1,22 @@ /* - * Copyright (C) 1994-1996, Index Data I/S + * Copyright (C) 1994-1997, Index Data I/S * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * * $Log: zinfo.c,v $ - * Revision 1.2 1996-05-14 06:16:41 adam + * Revision 1.5 1997-10-27 14:33:05 adam + * Moved towards generic character mapping depending on "structure" + * field in abstract syntax file. Fixed a few memory leaks. Fixed + * bug with negative integers when doing searches with relational + * operators. + * + * Revision 1.4 1997/09/25 14:57:08 adam + * Added string.h. + * + * Revision 1.3 1996/05/22 08:21:59 adam + * Added public ZebDatabaseInfo structure. + * + * Revision 1.2 1996/05/14 06:16:41 adam * Compact use/set bytes used in search service. * * Revision 1.1 1996/05/13 14:23:07 adam @@ -14,6 +26,7 @@ #include #include +#include #include "zinfo.h" @@ -28,26 +41,27 @@ struct zebSUInfoB { struct zebSUInfoB *next; }; -struct zebDatabaseInfo { +struct zebDatabaseInfoB { struct zebSUInfoB *SUInfo; char *databaseName; int sysno; int readFlag; int dirty; - struct zebDatabaseInfo *next; + struct zebDatabaseInfo info; + struct zebDatabaseInfoB *next; }; struct zebTargetInfo { int dictNum; int dirty; Records records; - struct zebDatabaseInfo *databaseInfo; - struct zebDatabaseInfo *curDatabaseInfo; + struct zebDatabaseInfoB *databaseInfo; + struct zebDatabaseInfoB *curDatabaseInfo; }; void zebTargetInfo_close (ZebTargetInfo *zti, int writeFlag) { - struct zebDatabaseInfo *zdi, *zdi1; + struct zebDatabaseInfoB *zdi, *zdi1; if (writeFlag) { @@ -74,6 +88,8 @@ void zebTargetInfo_close (ZebTargetInfo *zti, int writeFlag) assert (drec); for (zsui = zdi->SUInfo; zsui; zsui=zsui->next) no++; + memcpy (q, &zdi->info, sizeof(zdi->info)); + q += sizeof(zdi->info); memcpy (q, &no, sizeof(no)); q += sizeof(no); for (zsui = zdi->SUInfo; zsui; zsui=zsui->next) @@ -125,7 +141,7 @@ ZebTargetInfo *zebTargetInfo_open (Records records, int writeFlag) { Record rec; ZebTargetInfo *zti; - struct zebDatabaseInfo **zdi; + struct zebDatabaseInfoB **zdi; zti = xmalloc (sizeof(*zti)); zti->dirty = 0; @@ -176,7 +192,7 @@ ZebTargetInfo *zebTargetInfo_open (Records records, int writeFlag) } static void zebTargetInfo_readDatabase (ZebTargetInfo *zti, - struct zebDatabaseInfo *zdi) + struct zebDatabaseInfoB *zdi) { const char *p; struct zebSUInfoB **zsuip = &zdi->SUInfo; @@ -186,6 +202,8 @@ static void zebTargetInfo_readDatabase (ZebTargetInfo *zti, rec = rec_get (zti->records, zdi->sysno); assert (rec); p = rec->info[0]; + memcpy (&zdi->info, p, sizeof(zdi->info)); + p += sizeof(zdi->info); memcpy (&no, p, sizeof(no)); p += sizeof(no); for (i = 0; icurDatabaseInfo && @@ -223,7 +241,7 @@ int zebTargetInfo_curDatabase (ZebTargetInfo *zti, const char *database) int zebTargetInfo_newDatabase (ZebTargetInfo *zti, const char *database) { - struct zebDatabaseInfo *zdi; + struct zebDatabaseInfoB *zdi; assert (zti); for (zdi = zti->databaseInfo; zdi; zdi=zdi->next) @@ -275,3 +293,19 @@ int zebTargetInfo_addSU (ZebTargetInfo *zti, int set, int use) zsui->info.ordinal = (zti->dictNum)++; return zsui->info.ordinal; } + +ZebDatabaseInfo *zebTargetInfo_getDB (ZebTargetInfo *zti) +{ + assert (zti->curDatabaseInfo); + + return &zti->curDatabaseInfo->info; +} + +void zebTargetInfo_setDB (ZebTargetInfo *zti, ZebDatabaseInfo *zdi) +{ + assert (zti->curDatabaseInfo); + + zti->curDatabaseInfo->dirty = 1; + memcpy (&zti->curDatabaseInfo->info, zdi, sizeof(*zdi)); +} +