From f98c88c51c0ae14786dac06b93be2e6a0aea8b88 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Wed, 4 Jul 2007 21:56:29 +0000 Subject: [PATCH] * don't use strlen; use memmove instead of strcpy. --- webcit/subst.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/webcit/subst.c b/webcit/subst.c index 435930698..2cccbc147 100644 --- a/webcit/subst.c +++ b/webcit/subst.c @@ -222,30 +222,36 @@ void do_template(void *templatename) { strcpy(inbuf, ""); while (fgets(inbuf, sizeof inbuf, fp) != NULL) { - strcpy(outbuf, ""); + int len; - while (strlen(inbuf) > 0) { + strcpy(outbuf, ""); + len = strlen(inbuf); + while (len > 0) { pos = (-1); - for (i=strlen(inbuf); i>=0; --i) { + for (i=len; i>=0; --i) { if ((inbuf[i]=='<')&&(inbuf[i+1]=='?')) pos = i; } if (pos < 0) { wprintf("%s", inbuf); strcpy(inbuf, ""); + len = 0; } else { strncpy(outbuf, inbuf, pos); outbuf[pos] = 0; wprintf("%s", outbuf); - strcpy(inbuf, &inbuf[pos]); + memmove(inbuf, &inbuf[pos], len - pos +1); + len -= pos; pos = 1; - for (i=strlen(inbuf); i>=0; --i) { + for (i=len; i>=0; --i) { if (inbuf[i]=='>') pos = i; } strncpy(key, &inbuf[2], pos-2); key[pos-2] = 0; print_value_of(key); - strcpy(inbuf, &inbuf[pos+1]); + pos++; + memmove(inbuf, &inbuf[pos], len - pos + 1); + len -= pos; } } } -- 2.39.2