#2003: piraha_everywhere Zelmani stress test ---------------------+------------------------------------------------------ Reporter: rhaas | Owner: sbrandt Type: defect | Status: assigned Priority: major | Milestone: Component: Cactus | Version: development version Resolution: | Keywords: piraha ---------------------+------------------------------------------------------
Comment (by rhaas):
I think we cannot document it away since the documentation was present in at least one release and the breaking up in the middle of a token was used in at least one real life code out there, namely Zelmani.
The pre-piraha docs said (git hash e8f2db41, 3 years ago):
'''General Syntax of CCL Files''' Cactus Configuration Language (CCL) files are simple text files used to
define configuration information for a thorn. CCL files are case independent, and may contain comments introduced by the hash ‘#’ character, which indicates that the rest of the line is a comment. If the last non-blank character of a line in a CCL file is a backslash ‘\’, the following line is treated as a continuation of the current line.
So it was included in at least one release.
I think that, as documented and mimicking how the old parser worked, this can be made to work through a simple modification of the parse_src subroutine: {{{ open(my $fd, "test.ccl") or die "cannot open $src"; my $src_contents = ""; my $line = ""; while(<$fd>) { if(s/\\s*\n//) { $line = "\n" . $line . $_; } else { $src_contents .= $line . $_; $line = ""; } } close($fd); }}} which adds '\n' at the front to keep line numbers correct.
A slightly more complex regex pattern can be used to allow for escaping of ''. {{{ open(my $fd, "test.ccl") or die "cannot open $src"; my $src_contents = ""; my $line = ""; while(<$fd>) { if(m/(^|[^\])([\]{2})*\\s*\n/) { s/\\s*\n//; $line = "\n" . $line . $_; } else { $src_contents .= $line . $_; $line = ""; } } }}} which looks for odd numbers of '' at the end of a line.
I admit it is not beautiful since some information about the ccl file content is lost.