diff options
Diffstat (limited to 'utils.c')
| -rw-r--r-- | utils.c | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -9,6 +9,7 @@ */ const char *after_spaces(const char *str) { + int block_comment_depth = 0; // Skip whitespace and comments: skip_whitespace: switch (*str) { @@ -17,7 +18,20 @@ const char *after_spaces(const char *str) goto skip_whitespace; } case '#': { - while (*str && *str != '\n') ++str; + if (str[1] == '(') { + ++block_comment_depth; + for (str += 2; *str && block_comment_depth > 0; ++str) { + if (str[0] == '#' && str[1] == '(') { + ++block_comment_depth; + ++str; + } else if (str[0] == ')' && str[1] == '#') { + --block_comment_depth; + ++str; + } + } + } else { + while (*str && *str != '\n') ++str; + } goto skip_whitespace; } } |
