settings: Extend parser so we can parse settings from a string
[strongswan.git] / src / libstrongswan / settings / settings_lexer.l
index 581f834..ce9d4ee 100644 (file)
@@ -119,16 +119,11 @@ static void include_files(parser_helper_t *ctx);
 <str>{
        "\""                            |
        <<EOF>>                         |
-       \n                                      |
        \\                                      {
                if (!streq(yytext, "\""))
                {
-                       if (streq(yytext, "\n"))
-                       {       /* put the newline back to fix the line numbers */
-                               unput('\n');
-                               yy_set_bol(0);
-                       }
                        PARSER_DBG1(yyextra, "unterminated string detected");
+                       return STRING_ERROR;
                }
                if (yy_top_state(yyscanner) == inc)
                {       /* string include */
@@ -148,7 +143,7 @@ static void include_files(parser_helper_t *ctx);
        \\t     yyextra->string_add(yyextra, "\t");
        \\\r?\n /* merge lines that end with EOL characters */
        \\.     yyextra->string_add(yyextra, yytext+1);
-       [^\\\n"]+                       {
+       [^\\"]+                 {
                yyextra->string_add(yyextra, yytext);
        }
 }
@@ -196,3 +191,11 @@ static void include_files(parser_helper_t *ctx)
 
        settings_parser_open_next_file(ctx);
 }
+
+/**
+ * Load the given string to be parsed next
+ */
+void settings_parser_load_string(parser_helper_t *ctx, const char *content)
+{
+       settings_parser__scan_string(content, ctx->scanner);
+}