From: Art Cancro Date: Thu, 25 Jul 2002 04:01:58 +0000 (+0000) Subject: * Final cleanup of changes (finally located and fixed the bug) X-Git-Tag: v7.86~6324 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=44ce30085f81c675f9328effb744e9eb3c239c8f * Final cleanup of changes (finally located and fixed the bug) --- diff --git a/webcit/ChangeLog b/webcit/ChangeLog index c71e97cb2..be16c7727 100644 --- a/webcit/ChangeLog +++ b/webcit/ChangeLog @@ -1,4 +1,7 @@ $Log$ +Revision 323.52 2002/07/25 04:01:58 ajc +* Final cleanup of changes (finally located and fixed the bug) + Revision 323.51 2002/07/24 04:14:23 ajc * Minor code cleanup of last night's changes @@ -878,4 +881,3 @@ Sun Dec 6 19:50:55 EST 1998 Art Cancro 1998-12-03 Nathan Bryant * webserver.c: warning fix - diff --git a/webcit/Makefile.in b/webcit/Makefile.in index 2e4883312..f9b04c1c2 100644 --- a/webcit/Makefile.in +++ b/webcit/Makefile.in @@ -34,7 +34,6 @@ webserver: webserver.o context_loop.o tools.o \ locate_host.o siteconfig.o subst.o vcard.o vcard_edit.o \ mime_parser.o graphics.o netconf.o preferences.o html2html.o \ $(LIBOBJS) $(LIBS) -o webserver - strip webserver .c.o: $(CC) $(CFLAGS) $(DEFS) -c $(PTHREAD_DEFS) -DWEBCITDIR=\"`pwd`\" $< diff --git a/webcit/html2html.c b/webcit/html2html.c index 4ac9a8fec..903e96961 100644 --- a/webcit/html2html.c +++ b/webcit/html2html.c @@ -37,31 +37,38 @@ void output_html(void) { char *ptr; char *msgstart; char *msgend; - int total_length = 1; + int buffer_length = 1; int line_length = 0; + int content_length = 0; msg = strdup(""); - msgstart = msg; - msgend = msg; while (serv_gets(buf), strcmp(buf, "000")) { line_length = strlen(buf); - total_length = total_length + line_length + 1; - msg = realloc(msg, total_length + 1); - strcpy(msgend, buf); - msgend[line_length++] = '\n' ; - msgend[line_length] = 0; - msgend = &msgend[line_length]; + buffer_length = content_length + line_length + 2; + msg = realloc(msg, buffer_length); + if (msg == NULL) { + wprintf("realloc() error! " + "couldn't get %d bytes: %s

\n", + buffer_length + 1, + strerror(errno)); + return; + } + strcpy(&msg[content_length], buf); + content_length += line_length; + strcpy(&msg[content_length], "\n"); + content_length += 1; } ptr = msg; msgstart = msg; - /* msgend is already set correctly */ + msgend = &msg[content_length]; while (ptr < msgend) { /* Advance to next tag */ ptr = strchr(ptr, '<'); + if ((ptr == NULL) || (ptr >= msgend)) break; ++ptr; if ((ptr == NULL) || (ptr >= msgend)) break; @@ -100,5 +107,6 @@ void output_html(void) { /* Now give back the memory */ free(msg); + } diff --git a/webcit/webserver.c b/webcit/webserver.c index da0282b00..a39dc6e88 100644 --- a/webcit/webserver.c +++ b/webcit/webserver.c @@ -395,6 +395,7 @@ int lprintf(int loglevel, const char *format, ...) tim->tm_sec, (long)tv.tv_usec / 1000, pthread_self(), buf); } + fflush(stderr); } return 1; }