diff options
-rw-r--r-- | main/config.c | 31 | ||||
-rw-r--r-- | utils/Makefile | 2 |
2 files changed, 32 insertions, 1 deletions
diff --git a/main/config.c b/main/config.c index ac9c87818..e8d13a5b2 100644 --- a/main/config.c +++ b/main/config.c @@ -1160,6 +1160,12 @@ static struct ast_config *config_text_file_load(const char *database, const char else process_buf = buf; + if (ast_test_flag(&flags, CONFIG_FLAG_WITHCOMMENTS) && comment_buffer && comment_buffer[0] && (ast_strlen_zero(buf) || strlen(buf) == strspn(buf," \t\n\r"))) { + /* blank line? really? Can we add it to an existing comment and maybe preserve inter- and post- comment spacing? */ + CB_ADD(&comment_buffer, &comment_buffer_size, "\n"); /* add a newline to the comment buffer */ + continue; /* go get a new line, then */ + } + while ((comment_p = strchr(new_buf, COMMENT_META))) { if ((comment_p > new_buf) && (*(comment_p-1) == '\\')) { /* Escaped semicolons aren't comments. */ @@ -1228,10 +1234,14 @@ static struct ast_config *config_text_file_load(const char *database, const char /* end of file-- anything in a comment buffer? */ if (last_cat) { if (ast_test_flag(&flags, CONFIG_FLAG_WITHCOMMENTS) && comment_buffer && comment_buffer[0] ) { + CB_ADD(&comment_buffer, &comment_buffer_size, lline_buffer); /* add the current lline buffer to the comment buffer */ + lline_buffer[0] = 0; /* erase the lline buffer */ last_cat->trailing = ALLOC_COMMENT(comment_buffer); } } else if (last_var) { if (ast_test_flag(&flags, CONFIG_FLAG_WITHCOMMENTS) && comment_buffer && comment_buffer[0] ) { + CB_ADD(&comment_buffer, &comment_buffer_size, lline_buffer); /* add the current lline buffer to the comment buffer */ + lline_buffer[0] = 0; /* erase the lline buffer */ last_var->trailing = ALLOC_COMMENT(comment_buffer); } } else { @@ -1323,6 +1333,27 @@ static void set_fn(char *fn, int fn_size, const char *file, const char *configfi snprintf(fn, fn_size, "%s/%s", ast_config_AST_CONFIG_DIR, file); } +static int count_linefeeds(char *str) +{ + int count = 0; + while (*str) { + if (*str =='\n') + count++; + } + return count; +} + +static int count_linefeeds_in_comments(struct ast_comment *x) +{ + int count = 0; + while (x) + { + count += count_linefeeds(x->cmt); + x = x->next; + } + return count; +} + int config_text_file_save(const char *configfile, const struct ast_config *cfg, const char *generator) { FILE *f; diff --git a/utils/Makefile b/utils/Makefile index 00144b081..533912bf1 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -132,7 +132,7 @@ hashtest2.o : hashtest2.c $(CC) -g -O0 -c hashtest2.c $(PTHREAD_CFLAGS) -I/usr/include -I../include hashtest2 : hashtest2.o md5.o utils.o astobj2.o sha1.o strcompat.o - $(CC) -g -O0 -o hashtest2 hashtest2.o astobj2.o utils.o md5.o sha1.o strcompat.o $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + $(CC) -g -O0 -o hashtest2 hashtest2.o astobj2.o utils.o md5.o sha1.o strcompat.o $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) $(LIBS) extconf.o : extconf.c |