From: serassio <> Date: Sun, 14 May 2006 16:19:40 +0000 (+0000) Subject: Bug# 1430: feature: multi-line directives in squid.conf X-Git-Tag: SQUID_3_0_PRE4~134 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81c161d02b6f0ea14d32a585d810a0af0ecb4120;p=thirdparty%2Fsquid.git Bug# 1430: feature: multi-line directives in squid.conf Patch provided by Gonzalo Arana. Thanks ! --- diff --git a/src/cache_cf.cc b/src/cache_cf.cc index 6ae21ae360..9578b1e05d 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1,6 +1,6 @@ /* - * $Id: cache_cf.cc,v 1.495 2006/05/08 23:38:33 robertc Exp $ + * $Id: cache_cf.cc,v 1.496 2006/05/14 10:19:40 serassio Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived @@ -210,7 +210,8 @@ parseConfigFile(const char *file_name) { FILE *fp = NULL; char *token = NULL; - char *tmp_line; + char *tmp_line = NULL; + int tmp_line_len = 0; int err_count = 0; int is_pipe = 0; configFreeMemory(); @@ -289,9 +290,21 @@ parseConfigFile(const char *file_name) if (config_input_line[0] == '\0') continue; - debug(3, 5) ("Processing: '%s'\n", config_input_line); + size_t config_input_line_len = strlen(config_input_line); - tmp_line = xstrdup(config_input_line); + tmp_line = (char*)xrealloc(tmp_line, tmp_line_len + config_input_line_len + 1); + + strcpy(tmp_line + tmp_line_len, config_input_line); + + tmp_line_len += config_input_line_len; + + if (tmp_line[tmp_line_len-1] == '\\') { + debug(3, 5) ("parseConfigFile: tmp_line='%s'\n", tmp_line); + tmp_line[--tmp_line_len] = '\0'; + continue; + } + + debug(3, 5) ("Processing: '%s'\n", tmp_line); if (!parse_line(tmp_line)) { debug(3, 0) ("parseConfigFile: '%s' line %d unrecognized: '%s'\n", @@ -302,6 +315,8 @@ parseConfigFile(const char *file_name) } safe_free(tmp_line); + tmp_line_len = 0; + } if (is_pipe) {