----- Original Message ----- > Updated Branches: > refs/heads/master caf79a236 -> 1ddfc042f > > > TS-1823: add line continuation to remap.config > > Add line continuation to remap.config using a backslash at the end > of a line as the continuation character. > > The handling for continuation was made in tokLine() by adding an > optional third char parameter (`cont') which is the continuation > character. This should make it usable in other contexts outside of > remap.config also, for example other config file parsers. > > This implementation is not very intelligent, as it only checks for the > backslash immediately preceding the newline and does not handle any > whitespace. The backslash and newline are converted into spaces, and > the next line is appended. > > Example: > > .definefilter foo \ > @action=allow \ > @src_ip=127.0.0.1 > > is read and parsed in UrlRewrite::BuildTable() as: > > .definefilter foo @action=allow @src_ip=127.0.0.1
This is my new favourite commit message. > Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo > Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/1ddfc042 > Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/1ddfc042 > Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/1ddfc042 > > Branch: refs/heads/master > Commit: 1ddfc042fc8df6a92dc3c74718451db0a7ec3f93 > Parents: caf79a2 > Author: Jim Riggs <j...@riggs.me> > Authored: Tue Aug 6 21:06:46 2013 -0500 > Committer: James Peach <jpe...@apache.org> > Committed: Wed Aug 7 22:05:30 2013 -0700 > > ---------------------------------------------------------------------- > CHANGES | 3 +++ > lib/ts/MatcherUtils.cc | 19 +++++++++++++------ > lib/ts/MatcherUtils.h | 2 +- > proxy/http/remap/UrlRewrite.cc | 10 +++++----- > 4 files changed, 22 insertions(+), 12 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1ddfc042/CHANGES > ---------------------------------------------------------------------- > diff --git a/CHANGES b/CHANGES > index e33c204..7065312 100644 > --- a/CHANGES > +++ b/CHANGES > @@ -2,6 +2,9 @@ > Changes with Apache Traffic Server 3.5.0 > > > + *) [TS-1823] remap.config line continuation support > + Author: Jim Riggs <j...@riggs.me> > + > *) [TS-1597] Document remap.config filters > Author: Jim Riggs <j...@riggs.me> > > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1ddfc042/lib/ts/MatcherUtils.cc > ---------------------------------------------------------------------- > diff --git a/lib/ts/MatcherUtils.cc b/lib/ts/MatcherUtils.cc > index 3b07a7b..2254738 100644 > --- a/lib/ts/MatcherUtils.cc > +++ b/lib/ts/MatcherUtils.cc > @@ -232,16 +232,17 @@ ExtractIpRange(char *match_str, sockaddr* addr1, > sockaddr* addr2) > return NULL; > } > > -// char* tokLine(char* buf, char** last) > +// char* tokLine(char* buf, char** last, char cont) > // > // Similar to strtok_r but only tokenizes on '\n' > // and will return tokens that are empty strings > // > char * > -tokLine(char *buf, char **last) > +tokLine(char *buf, char **last, char cont) > { > char *start; > char *cur; > + char *prev = NULL; > > if (buf != NULL) { > start = cur = buf; > @@ -252,11 +253,17 @@ tokLine(char *buf, char **last) > > while (*cur != '\0') { > if (*cur == '\n') { > - *cur = '\0'; > - *last = cur; > - return start; > + if (cont != '\0' && prev != NULL && *prev == cont) { > + *prev = ' '; > + *cur = ' '; > + } > + else { > + *cur = '\0'; > + *last = cur; > + return start; > + } > } > - cur++; > + prev = cur++; > } > > // Return the last line even if it does > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1ddfc042/lib/ts/MatcherUtils.h > ---------------------------------------------------------------------- > diff --git a/lib/ts/MatcherUtils.h b/lib/ts/MatcherUtils.h > index de390a8..debaebb 100644 > --- a/lib/ts/MatcherUtils.h > +++ b/lib/ts/MatcherUtils.h > @@ -64,7 +64,7 @@ inline char const* ExtractIpRange( > return ExtractIpRange(match_str, ats_ip_sa_cast(addr1), > ats_ip_sa_cast(addr2)); > } > > -char *tokLine(char *buf, char **last); > +char *tokLine(char *buf, char **last, char cont = '\0'); > > const char *processDurationString(char *str, int *seconds); > > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1ddfc042/proxy/http/remap/UrlRewrite.cc > ---------------------------------------------------------------------- > diff --git a/proxy/http/remap/UrlRewrite.cc b/proxy/http/remap/UrlRewrite.cc > index 9bbf466..8b51897 100644 > --- a/proxy/http/remap/UrlRewrite.cc > +++ b/proxy/http/remap/UrlRewrite.cc > @@ -1111,7 +1111,7 @@ UrlRewrite::BuildTable() > > Debug("url_rewrite", "[BuildTable] UrlRewrite::BuildTable()"); > > - for (cur_line = tokLine(file_buf, &tok_state); cur_line != NULL;) { > + for (cur_line = tokLine(file_buf, &tok_state, '\\'); cur_line != NULL;) { > errStrBuf[0] = 0; > clear_xstr_array(bti.paramv, sizeof(bti.paramv) / sizeof(char *)); > clear_xstr_array(bti.argv, sizeof(bti.argv) / sizeof(char *)); > @@ -1122,7 +1122,7 @@ UrlRewrite::BuildTable() > ++cur_line; > > if ((cur_line_size = strlen((char *) cur_line)) <= 0) { > - cur_line = tokLine(NULL, &tok_state); > + cur_line = tokLine(NULL, &tok_state, '\\'); > ++cln; > continue; > } > @@ -1135,7 +1135,7 @@ UrlRewrite::BuildTable() > } > > if ((cur_line_size = strlen((char *) cur_line)) <= 0 || *cur_line == '#' > || *cur_line == '\0') { > - cur_line = tokLine(NULL, &tok_state); > + cur_line = tokLine(NULL, &tok_state, '\\'); > ++cln; > continue; > } > @@ -1171,7 +1171,7 @@ UrlRewrite::BuildTable() > goto MAP_ERROR; > } > // We skip the rest of the parsing here. > - cur_line = tokLine(NULL, &tok_state); > + cur_line = tokLine(NULL, &tok_state, '\\'); > ++cln; > continue; > } > @@ -1483,7 +1483,7 @@ UrlRewrite::BuildTable() > > fromHost_lower_ptr = (char *)ats_free_null(fromHost_lower_ptr); > > - cur_line = tokLine(NULL, &tok_state); > + cur_line = tokLine(NULL, &tok_state, '\\'); > ++cln; > continue; > > > -- Igor Galić Tel: +43 (0) 664 886 22 883 Mail: i.ga...@brainsware.org URL: http://brainsware.org/ GPG: 6880 4155 74BD FD7C B515 2EA5 4B1D 9E08 A097 C9AE