From 895982032e2b237e9810dd11b7c70a66e1a9c34c Mon Sep 17 00:00:00 2001 From: reinelt <> Date: Wed, 7 Jan 2004 10:15:41 +0000 Subject: [lcd4linux @ 2004-01-07 10:15:41 by reinelt] small glitch in evaluator fixed made config table sorted and access with bsearch(), which should be much faster --- cfg.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 19 deletions(-) (limited to 'cfg.c') diff --git a/cfg.c b/cfg.c index 1fc5830..7f73c77 100644 --- a/cfg.c +++ b/cfg.c @@ -1,4 +1,4 @@ -/* $Id: cfg.c,v 1.19 2003/12/19 05:35:14 reinelt Exp $^ +/* $Id: cfg.c,v 1.20 2004/01/07 10:15:41 reinelt Exp $^ * * config file stuff * @@ -22,6 +22,11 @@ * * * $Log: cfg.c,v $ + * Revision 1.20 2004/01/07 10:15:41 reinelt + * small glitch in evaluator fixed + * made config table sorted and access with bsearch(), + * which should be much faster + * * Revision 1.19 2003/12/19 05:35:14 reinelt * renamed 'client' to 'plugin' * @@ -159,6 +164,26 @@ static ENTRY *Config=NULL; static int nConfig=0; +// bsearch compare function for config entries +static int c_lookup (const void *a, const void *b) +{ + char *key=(char*)a; + ENTRY *entry=(ENTRY*)b; + + return strcasecmp(key, entry->key); +} + + +// qsort compare function for variables +static int c_sort (const void *a, const void *b) +{ + ENTRY *ea=(ENTRY*)a; + ENTRY *eb=(ENTRY*)b; + + return strcasecmp(ea->key, eb->key); +} + + static char *strip (char *s, int strip_comments) { char *p; @@ -196,21 +221,25 @@ static char *dequote (char *string) static void cfg_add (char *key, char *val, int lock) { - int i; - - for (i=0; ilock) return; - if (Config[i].val) free (Config[i].val); - Config[i].val=dequote(strdup(val)); - return; - } + ENTRY *entry; + + entry=bsearch(key, Config, nConfig, sizeof(ENTRY), c_lookup); + + if (entry!=NULL) { + if (entry->lock>lock) return; + if (entry->val) free (entry->val); + entry->val=dequote(strdup(val)); + return; } + nConfig++; Config=realloc(Config, nConfig*sizeof(ENTRY)); - Config[i].key=strdup(key); - Config[i].val=dequote(strdup(val)); - Config[i].lock=lock; + Config[nConfig-1].key=strdup(key); + Config[nConfig-1].val=dequote(strdup(val)); + Config[nConfig-1].lock=lock; + + qsort(Config, nConfig, sizeof(ENTRY), c_sort); + } @@ -235,13 +264,13 @@ int l4l_cfg_cmd (char *arg) char *l4l_cfg_get (char *key, char *defval) { - int i; + ENTRY *entry; + + entry=bsearch(key, Config, nConfig, sizeof(ENTRY), c_lookup); + + if (entry!=NULL) + return entry->val; - for (i=0; id/copyright: Change all urls to httpsJonathan McCrohan2-2/+3 2018-04-08d/{control,compat}: Bump debhelper version to 11Jonathan McCrohan3-2/+3 2018-04-08Add debian/watch file using new git modeJonathan McCrohan3-2/+6 2018-04-08d/control: update Standards Version to 4.1.4Jonathan McCrohan2-2/+4 2018-04-08d/changelog: remove whitespaceJonathan McCrohan1-5/+11 2018-04-07New upstream version 0+git20171226.07b18ecupstream/0+git20171226.07b18ecupstreamJonathan McCrohan1167-3460/+81016 2017-06-20Release 0+git20170425.fb5fe05-1debian/0+git20170425.fb5fe05-1Jonathan McCrohan2-3/+12 2017-06-19New upstream version 0+git20170425.fb5fe05upstream/0+git20170425.fb5fe05Jonathan McCrohan16-102/+786 2017-01-05Release 0+git20161227.ac7535a-1debian/0+git20161227.ac7535a-1Jonathan McCrohan1-0/+6 2017-01-05New upstream version 0+git20161227.ac7535aupstream/0+git20161227.ac7535aJonathan McCrohan39-1522/+4879 2016-06-11Release 0+git20160503.4f192bd-1debian/0+git20160503.4f192bd-1Jonathan McCrohan1-2/+2 2016-06-11d/control: update insecure Vcs-Git URLJonathan McCrohan2-1/+2 2016-06-11d/control: update Standards Version to 3.9.8Jonathan McCrohan2-1/+9 2016-06-11Imported Upstream version 0+git20160503.4f192bdupstream/0+git20160503.4f192bdJonathan McCrohan1307-2667/+38002 2016-01-18Release 0+git20151202.3864e0a-1debian/0+git20151202.3864e0a-1Jonathan McCrohan1-2/+3 2016-01-18Imported Upstream version 0+git20151202.3864e0aJonathan McCrohan840-4057/+18230 2016-01-18Update get-vcs-snapshot.sh to reflect gbp changesJonathan McCrohan2-1/+2 2016-01-18Imported Upstream version 0+git20151202.3864e0aupstream/0+git20151202.3864e0aJonathan McCrohan840-4057/+18230 2015-05-05d/control: various fixes found by libconfig-model-dpkg-perlJonathan McCrohan2-5/+13 2015-04-01Release 0+git20150208.f2053b3-1Jonathan McCrohan1-2/+2 2015-04-01Describe changes made in snapshotJonathan McCrohan1-0/+3 2015-04-01New Upstream Snapshot (commit f2053b3)Jonathan McCrohan1-0/+6 2015-04-01Imported Upstream version 0+git20150208.f2053b3upstream/0+git20150208.f2053b3Jonathan McCrohan32-333/+483 2014-12-28Release 0+git20141218.b46a22c-1debian/0+git20141218.b46a22c-1Jonathan McCrohan1-2/+2 2014-12-28Updated AU DVB-T files; Thanks Brian Burch! (Closes LP: #1393280)Jonathan McCrohan1-0/+1 2014-12-28New Upstream Snapshot (commit b46a22c)Jonathan McCrohan1-0/+6 2014-12-28Imported Upstream version 0+git20141218.b46a22cupstream/0+git20141218.b46a22cJonathan McCrohan535-639/+317 2014-10-20Release 0+git20141009.d26b627-1debian/0+git20141009.d26b627-1Jonathan McCrohan1-2/+2 2014-10-20Fix up packaging to account for move to DVBv5Jonathan McCrohan2-2/+6 2014-10-20delete d/dtv-scan-files.install; Upstream now supplies a MakefileJonathan McCrohan2-4/+1 2014-10-15d/control: update Standards Version to 3.9.6Jonathan McCrohan2-1/+3 2014-10-15d/control: add Build-Depends on dvb-toolsJonathan McCrohan2-1/+2 2014-10-15New Upstream Snapshot (commit d26b627)Jonathan McCrohan1-0/+10 2014-10-15Imported Upstream version 0+git20141009.d26b627upstream/0+git20141009.d26b627Jonathan McCrohan2010-11120/+159271 2014-07-23Release 0+git20140611.14bd6c7-1debian/0+git20140611.14bd6c7-1Jonathan McCrohan1-2/+2 2014-07-23New Upstream Snapshot (commit 14bd6c7)Jonathan McCrohan1-2/+3 2014-07-23Imported Upstream version 0+git20140611.14bd6c7upstream/0+git20140611.14bd6c7Jonathan McCrohan7-11/+60 2014-05-13New Upstream Snapshot (commit 1246b27)Jonathan McCrohan1-0/+6 2014-05-13Imported Upstream version 0+git20140512.1246b27upstream/0+git20140512.1246b27Jonathan McCrohan391-301/+3983 2014-04-05Release 0+git20140326.cfc2975-1debian/0+git20140326.cfc2975-1Jonathan McCrohan1-2/+2 2014-04-05d/control: update Homepage (upstream has moved from Gitweb to cgit)Jonathan McCrohan2-1/+2 2014-04-05New Upstream Snapshot (commit cfc2975)Jonathan McCrohan1-0/+6 2014-04-05Imported Upstream version 0+git20140326.cfc2975upstream/0+git20140326.cfc2975Jonathan McCrohan118-656/+877 2014-01-16Release 0+git20140107.1850cf8-1debian/0+git20140107.1850cf8-1Jonathan McCrohan1-2/+2 2014-01-16Update Standards Version to 3.9.5Jonathan McCrohan2-1/+9