From c88e216a14dbc3960fc82f74a5b173b0cbb26bf6 Mon Sep 17 00:00:00 2001
From: Steve Murphy <murf@digium.com>
Date: Tue, 11 Sep 2007 22:37:20 +0000
Subject: [PATCH] This solves an unreported solaris compile problem (missing
 -lnsl -lsocket).

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82268 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 main/config.c  | 31 +++++++++++++++++++++++++++++++
 utils/Makefile |  2 +-
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/main/config.c b/main/config.c
index ac9c87818b..e8d13a5b24 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 00144b0817..533912bf16 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
 
-- 
GitLab