X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=recctrl%2Frecctrl.c;h=4c3a60544bf477b65233b8dc4a170975c78ccde0;hb=c8504e6a297055834322bd89b52e8410f549f337;hp=cd4359b4b39fd59755b08b4aa550a991a10ba7da;hpb=75049be3951292bbbbd53d83ca38ccbd191e4b08;p=idzebra-moved-to-github.git diff --git a/recctrl/recctrl.c b/recctrl/recctrl.c index cd4359b..4c3a605 100644 --- a/recctrl/recctrl.c +++ b/recctrl/recctrl.c @@ -1,37 +1,26 @@ -/* - * Copyright (C) 1994-1998, Index Data - * All rights reserved. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: recctrl.c,v $ - * Revision 1.3 1998-10-16 08:14:36 adam - * Updated record control system. - * - * Revision 1.2 1996/10/29 14:03:16 adam - * Include zebrautl.h instead of alexutil.h. - * - * Revision 1.1 1996/10/11 10:57:24 adam - * New module recctrl. Used to manage records (extract/retrieval). - * - * Revision 1.5 1996/06/04 10:18:59 adam - * Minor changes - removed include of ctype.h. - * - * Revision 1.4 1995/12/04 17:59:24 adam - * More work on regular expression conversion. - * - * Revision 1.3 1995/12/04 14:22:30 adam - * Extra arg to recType_byName. - * Started work on new regular expression parsed input to - * structured records. - * - * Revision 1.2 1995/11/15 14:46:19 adam - * Started work on better record management system. - * - * Revision 1.1 1995/09/27 12:22:28 adam - * More work on extract in record control. - * Field name is not in isam keys but in prefix in dictionary words. - * - */ +/* $Id: recctrl.c,v 1.6 2002-08-02 19:26:56 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 #include #include @@ -44,6 +33,7 @@ struct recTypeEntry { RecType recType; struct recTypeEntry *next; int init_flag; + void *clientData; }; struct recTypes { @@ -66,22 +56,25 @@ void recTypes_destroy (RecTypes rts) for (rte = rts->entries; rte; rte = rte->next) if (rte->init_flag) - (*(rte->recType)->destroy)(rte->recType); + (*(rte->recType)->destroy)(rte->clientData); } void recTypes_add_handler (RecTypes rts, RecType rt) { struct recTypeEntry *rte; - rte = nmem_malloc (data1_nmem_get (rts->dh), sizeof(*rte)); + rte = (struct recTypeEntry *) + nmem_malloc (data1_nmem_get (rts->dh), sizeof(*rte)); rte->recType = rt; rte->init_flag = 0; + rte->clientData = 0; rte->next = rts->entries; rts->entries = rte; } -RecType recType_byName (RecTypes rts, const char *name, char *subType) +RecType recType_byName (RecTypes rts, const char *name, char *subType, + void **clientDataP) { struct recTypeEntry *rte; char *p; @@ -101,8 +94,10 @@ RecType recType_byName (RecTypes rts, const char *name, char *subType) if (!rte->init_flag) { rte->init_flag = 1; - (*(rte->recType)->init)(rte->recType); + rte->clientData = + (*(rte->recType)->init)(rte->recType); } + *clientDataP = rte->clientData; return rte->recType; } return 0;