X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=util%2Fres.c;h=952b900627f23e8c620c65d52f97f6dc6ac4c88c;hb=deff57cfa9d9b39c4a4f1c9b82a64c6e61d821a4;hp=90cf2d969d0228cfc98a99e89c3fc0bbc37d113f;hpb=c71dc4cafd880d69e6b14b308630fbc69a7d7b23;p=idzebra-moved-to-github.git diff --git a/util/res.c b/util/res.c index 90cf2d9..952b900 100644 --- a/util/res.c +++ b/util/res.c @@ -1,6 +1,6 @@ -/* $Id: res.c,v 1.35 2004-06-14 23:42:33 adam Exp $ - Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 - Index Data Aps +/* $Id: res.c,v 1.40 2005-03-30 09:25:25 adam Exp $ + Copyright (C) 1995-2005 + Index Data ApS This file is part of the Zebra server. @@ -20,7 +20,6 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include #include #include @@ -31,8 +30,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #endif -#include -#include +#include struct res_entry { char *name; @@ -80,16 +78,19 @@ static char *xstrdup_env(const char *src) char *env_val; int k = 0; i = i + 2; - while (k < 127 && src[i] && !strchr("}\n\r\f", src[i])) + while (k < 127 && src[i] && !strchr(":}\n\r\f", src[i])) envname[k++] = src[i++]; envname[k] = '\0'; - if (src[i] == '}') - i++; + env_val = getenv(envname); if (env_val) env_strlen += 1 + strlen(env_val); else env_strlen++; + while (src[i] && !strchr("}\n\r\f", src[i])) + i++; + if (src[i] == '}') + i++; } else i++; @@ -104,17 +105,25 @@ static char *xstrdup_env(const char *src) char *env_val; int k = 0; i = i + 2; - while(k < 127 && src[i] && !strchr("}\n\r\f", src[i])) + while(k < 127 && src[i] && !strchr(":}\n\r\f", src[i])) envname[k++] = src[i++]; envname[k] = '\0'; - if (src[i] == '}') - i++; env_val = getenv(envname); if (env_val) { strcpy(dst+j, env_val); j += strlen(env_val); } + else if (src[i] == ':' && src[i+1] == '-') + { + i = i + 2; + while (src[i] && !strchr("}\n\r\f", src[i])) + dst[j++] = src[i++]; + } + while (src[i] && !strchr("}\n\r\f", src[i])) + i++; + if (src[i] == '}') + i++; } else dst[j++] = src[i++]; @@ -135,17 +144,16 @@ static void reread (Res r) assert (r); r->init = 1; - val_buf = (char*) xmalloc (val_max); - if (!r->name) return; fr = fopen (r->name, "r"); if (!fr) { - logf (LOG_WARN|LOG_ERRNO, "Cannot open `%s'", r->name); + yaz_log (YLOG_WARN|YLOG_ERRNO, "Cannot open `%s'", r->name); return ; } + val_buf = (char*) xmalloc (val_max); while (1) { line = fgets (fr_buf, sizeof(fr_buf)-1, fr); @@ -198,7 +206,7 @@ static void reread (Res r) val_size--; val_buf[val_size] = '\0'; resp->value = xstrdup_env(val_buf); - logf (LOG_DEBUG, "(name=%s,value=%s)", + yaz_log (YLOG_DEBUG, "(name=%s,value=%s)", resp->name, resp->value); break; } @@ -245,7 +253,7 @@ Res res_open (const char *name, Res def_res, Res over_res) if (access (name, R_OK)) #endif { - logf (LOG_WARN|LOG_ERRNO, "Cannot open `%s'", name); + yaz_log (YLOG_WARN|YLOG_ERRNO, "Cannot open `%s'", name); return 0; } } @@ -331,7 +339,7 @@ const char *res_get_def (Res r, const char *name, const char *def) if (!(t = res_get (r, name))) { - logf (LOG_DEBUG, "CAUTION: Using default resource %s:%s", name, def); + yaz_log (YLOG_DEBUG, "CAUTION: Using default resource %s:%s", name, def); return def; } else @@ -407,7 +415,7 @@ int res_write (Res r) fr = fopen (r->name, "w"); if (!fr) { - logf (LOG_FATAL|LOG_ERRNO, "Cannot create `%s'", r->name); + yaz_log (YLOG_FATAL|YLOG_ERRNO, "Cannot create `%s'", r->name); exit (1); }