X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=util%2Fres.c;h=743d5e884added9ec48003b13d0a534a4ceadcd1;hb=ddfc9499c27bb4b90797bab12868f629afee34e3;hp=f98b2d5e4e539c22d1089eb8354824a44d5a9dc0;hpb=5ea84896a9b5edc8675f3646762e8ef906d6a307;p=idzebra-moved-to-github.git diff --git a/util/res.c b/util/res.c index f98b2d5..743d5e8 100644 --- a/util/res.c +++ b/util/res.c @@ -4,7 +4,20 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: res.c,v $ - * Revision 1.5 1994-08-18 11:02:28 adam + * Revision 1.9 1994-09-16 14:41:12 quinn + * Added log warning to res_get_def + * + * Revision 1.8 1994/09/16 14:37:12 quinn + * added res_get_def + * + * Revision 1.7 1994/09/06 13:01:03 quinn + * Removed const from declaration of res_get + * + * Revision 1.6 1994/09/01 17:45:14 adam + * Work on resource manager. + * CVS ---------------------------------------------------------------------- + * + * Revision 1.5 1994/08/18 11:02:28 adam * Implementation of res_write. * * Revision 1.4 1994/08/18 10:02:01 adam @@ -24,6 +37,7 @@ #include #include #include +#include #include static struct res_entry *add_entry (Res r) @@ -52,6 +66,7 @@ static void reread (Res r) char fr_buf[1024]; FILE *fr; + assert (r); r->init = 1; val_buf = xmalloc (val_max); @@ -150,7 +165,13 @@ static void reread (Res r) Res res_open (const char *name) { - Res r = xmalloc (sizeof(*r)); + Res r; + if (access (name, R_OK)) + { + log (LOG_LOG|LOG_ERRNO, "cannot access `%s'", name); + xfree (r); + } + r = xmalloc (sizeof(*r)); r->init = 0; r->name = xstrdup (name); return r; @@ -158,6 +179,7 @@ Res res_open (const char *name) void res_close (Res r) { + assert (r); if (r->init) { struct res_entry *re, *re1; @@ -174,21 +196,36 @@ void res_close (Res r) xfree (r); } -const char *res_get (Res r, const char *name) +char *res_get (Res r, const char *name) { struct res_entry *re; + + assert (r); if (!r->init) reread (r); - for (re = r->first; re; re=re->next) if (re->value && !strcmp (re->name, name)) return re->value; return NULL; } +char *res_get_def (Res r, const char *name, char *def) +{ + char *t; + + if (!(t = res_get (r, name))) + { + log(LOG_DEBUG, "CAUTION: Using default resource %s:%s", name, def); + return def; + } + else + return t; +} + void res_put (Res r, const char *name, const char *value) { struct res_entry *re; + assert (r); if (!r->init) reread (r); @@ -210,6 +247,7 @@ void res_trav (Res r, const char *prefix, struct res_entry *re; int l = 0; + assert (r); if (prefix) l = strlen(prefix); if (!r->init) @@ -226,9 +264,10 @@ int res_write (Res r) struct res_entry *re; char path[256]; FILE *fr; + + assert (r); if (!r->init) reread (r); - strcpy (path, alex_path(r->name)); fr = fopen (path, "w");