From: hadaq Date: Mon, 10 May 2004 11:20:30 +0000 (+0000) Subject: BUGFIXES, first version running 'in principal' X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=9eeb42913056493d5e8d5db4f419c1af58944db0;p=daqdata.git BUGFIXES, first version running 'in principal' --- diff --git a/allParam/rpc/pcache.c b/allParam/rpc/pcache.c index 36ac7f4..b684376 100644 --- a/allParam/rpc/pcache.c +++ b/allParam/rpc/pcache.c @@ -1,20 +1,34 @@ +#include +#include #include #include #include "pcache.h" +int PData_invariant(const PData *my) { + int retVal; + + retVal = my != NULL + && my->name != NULL + && my->idx != NULL + && (my->type == PInt || my->type == PString || my->type == PIntArray || my->type == PStringArray); + + return retVal; +} + PData *newPInt(const char *name, const char *idx, unsigned long int value) { PData *my = malloc(sizeof(PData)); - my->name = malloc(strlen(name)); + my->name = malloc(strlen(name)+1); strcpy(my->name, name); - my->idx = malloc(strlen(idx)); + my->idx = malloc(strlen(idx)+1); strcpy(my->idx, idx); my->type = PInt; my->value.PInt = value; + assert(PData_invariant(my)); return my; } @@ -33,15 +47,20 @@ void delPData(PData *my) { static int keyCompare(const PData *my, const PData *data) { int retVal; + assert(PData_invariant(my)); + assert(PData_invariant(data)); + retVal = strcmp(my->name, data->name); if (retVal == 0) { retVal = strcmp(my->idx, data->idx); } - return retVal; + return retVal < 0 ? -1 : retVal > 0 ? 1 : 0; } PCache *insert(PCache *my, PData *data) { + assert(PData_invariant(data)); + if (my == NULL) { my = malloc(sizeof(PCache)); my->r = NULL; @@ -67,6 +86,8 @@ PCache *insert(PCache *my, PData *data) { PData *find(const PCache *my, const PData *data) { PData *retVal; + assert(PData_invariant(data)); + if (my == NULL) { retVal = NULL; } else { @@ -86,7 +107,10 @@ PData *find(const PCache *my, const PData *data) { } int PCache_storeInt(PCache **my, const char *name, const char *idx, unsigned long int value) { + *my = insert(*my, newPInt(name, idx, value)); + + return 0; } int PCache_getInt(const PCache *my, const char *name, const char *idx, unsigned long int *value) { diff --git a/allParam/rpc/rpcParam.c b/allParam/rpc/rpcParam.c index c0dfbea..109fff7 100644 --- a/allParam/rpc/rpcParam.c +++ b/allParam/rpc/rpcParam.c @@ -1,4 +1,4 @@ -static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/rpc/rpcParam.c,v 1.7 2004-05-07 11:55:29 muench Exp $"; +static const char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/allParam/rpc/rpcParam.c,v 1.8 2004-05-10 11:20:30 hadaq Exp $"; #define _POSIX_C_SOURCE 199509L #if HAVE_CONFIG_H @@ -108,9 +108,8 @@ int Param_getInt(const Param * my, const char *name, const char *idx, int *row, retVal = res.ret; PCache_storeInt(&rpcParam->cache, name, idx, *val); - puts("no cache"); } else { - puts("cache"); + *row = 1; } return retVal; }