+2001-12-10 [alfons] 0.6.5claws73
+
+ * src/matcher.c
+ add more control characters
+ * src/matcher_parser_lex.l
+ make escaping / unescaping work again
+
2001-12-10 [alfons] 0.6.5claws72
* src/imap.c
else {
src++;
if (*src == '\\')
- *dst++ = '\\';
- else if (*src == 'n')
+ *dst++ = '\\'; /* insert backslash */
+ else if (*src == 'n') /* insert control characters */
*dst++ = '\n';
else if (*src == 'r')
*dst++ = '\r';
- else if (*src == '\'' || *src == '\"')
+ else if (*src == 't')
+ *dst++ = '\t';
+ else if (*src == 'r')
+ *dst++ = '\r';
+ else if (*src == 'b')
+ *dst++ = '\b';
+ else if (*src == 'f')
+ *dst++ = '\f';
+ else if (*src == '\'' || *src == '\"') /* insert \' or \" */
*dst++ = *src;
else {
src--;
prop = (FilteringProp *) cur->data;
filtering_str = filteringprop_to_string(prop);
+ debug_print("FILTERING WRITING %s\n", filtering_str);
if (fputs(filtering_str, fp) == EOF ||
fputc('\n', fp) == EOF) {
BEGIN(string);
string_buf_ptr = string_buf;
}
-<string>\\n add_char('\n');
-<string>\\t add_char('\t');
-<string>\\r add_char('\r');
-<string>\\b add_char('\b');
-<string>\\f add_char('\f');
-<string>\\. add_char(yytext[1]);
+ /* the following tokens \n \t \r \b \f \\ could be
+ * removed from the list, but we let them here for
+ * the sake of clarity; they are unescaped by
+ * matcher.c:unescape_str()) */
+<string>\\n {
+ /* paste as-is */
+ add_char('\\');
+ add_char('n');
+ }
+<string>\\t {
+ /* paste as-is */
+ add_char('\\');
+ add_char('t');
+ }
+<string>\\r {
+ /* paste as-is */
+ add_char('\\');
+ add_char('r');
+ }
+<string>\\b {
+ /* paste as-is */
+ add_char('\\');
+ add_char('b');
+ }
+<string>\\f {
+ /* paste as-is */
+ add_char('\\');
+ add_char('f');
+ }
+<string>\\\' {
+ /* paste as-is */
+ add_char('\\');
+ add_char('\'');
+ }
+<string>\\\" {
+ /* paste as-is */
+ add_char('\\');
+ add_char('\"');
+ }
+ /* we only miss the thing with nested escaping like
+ * \\\\" which should mean something like 'forget it, we want a "'
+ * right here in the token stream.... */
<string>\" {
BEGIN(0);
*string_buf_ptr = '\0';
return MATCHER_STRING;
}
<string>. {
-add_char(yytext[0]);
-}
+ add_char(yytext[0]);
+ }
\[[^\[\]]*\] {
- BEGIN(0);
- yylval.str = yytext + 1;
- yytext[strlen(yytext) - 1] = '\0';
- return MATCHER_SECTION;
- }
+ BEGIN(0);
+ yylval.str = yytext + 1;
+ yytext[strlen(yytext) - 1] = '\0';
+ return MATCHER_SECTION;
+ }
[-+]?[0-9]+ {
yylval.str = yytext;
return MATCHER_INTEGER;