1 $NetBSD: patch-aq,v 1.1 2000/01/15 17:44:24 hubertf Exp $
3 diff -x *.orig -urN ./WWW/Library/Implementation/HTWriter.c /usr/pkgsrc/www/lynx/work.unpatched/lynx2-8-2/WWW/Library/Implementation/HTWriter.c
4 --- ./WWW/Library/Implementation/HTWriter.c Thu Jan 1 01:00:00 1970
5 +++ /usr/pkgsrc/www/lynx/work.unpatched/lynx2-8-2/WWW/Library/Implementation/HTWriter.c Sat Jan 15 07:57:18 2000
7 +/* FILE WRITER HTWrite.c
14 +#include <HTWriter.h>
16 +#define BUFFER_SIZE 4096 /* Tradeoff */
25 + CONST HTStreamClass * isa;
28 + char *write_pointer;
29 + char buffer[BUFFER_SIZE];
31 + BOOL make_ascii; /* Are we writing to the net? */
36 +/* Write the buffer out to the socket
37 +** ----------------------------------
40 +PRIVATE void flush ARGS1(HTStream *, me)
42 + char *read_pointer = me->buffer;
43 + char *write_pointer = me->write_pointer;
46 + if (me->make_ascii) {
48 + for(p = me->buffer; p < me->write_pointer; p++)
52 + while (read_pointer < write_pointer) {
54 + status = NETWRITE(me->soc, me->buffer, /* Put timeout? @@@ */
55 + write_pointer - read_pointer);
57 + CTRACE(tfp, "HTWrite: Error: write() on socket returns %d !!!\n", status);
60 + read_pointer = read_pointer + status;
62 + me->write_pointer = me->buffer;
66 +/*_________________________________________________________________________
68 +** A C T I O N R O U T I N E S
71 +/* Character handling
72 +** ------------------
75 +PRIVATE void HTWriter_put_character ARGS2(HTStream *, me, char, c)
77 + if (me->write_pointer == &me->buffer[BUFFER_SIZE]) flush(me);
78 + *me->write_pointer++ = c;
86 +** Strings must be smaller than this buffer size.
88 +PRIVATE void HTWriter_put_string ARGS2(HTStream *, me, CONST char*, s)
91 + if (me->write_pointer + l > &me->buffer[BUFFER_SIZE]) flush(me);
92 + strcpy(me->write_pointer, s);
93 + me->write_pointer = me->write_pointer + l;
97 +/* Buffer write. Buffers can (and should!) be big.
100 +PRIVATE void HTWriter_write ARGS3(HTStream *, me, CONST char*, s, int, l)
103 + CONST char *read_pointer = s;
104 + CONST char *write_pointer = s+l;
106 + flush(me); /* First get rid of our buffer */
108 + while (read_pointer < write_pointer) {
109 + int status = NETWRITE(me->soc, (char *)read_pointer,
110 + write_pointer - read_pointer);
112 + CTRACE(tfp, "HTWriter_write: Error on socket output stream!!!\n");
115 + read_pointer = read_pointer + status;
122 +/* Free an HTML object
123 +** -------------------
125 +** Note that the SGML parsing context is freed, but the created object is not,
126 +** as it takes on an existence of its own unless explicitly freed.
128 +PRIVATE void HTWriter_free ARGS1(HTStream *, me)
135 +PRIVATE void HTWriter_abort ARGS2(HTStream *, me, HTError, e GCC_UNUSED)
141 +/* Structured Object Class
142 +** -----------------------
144 +PRIVATE CONST HTStreamClass HTWriter = /* As opposed to print etc */
149 + HTWriter_put_character, HTWriter_put_string,
154 +/* Subclass-specific Methods
155 +** -------------------------
158 +PUBLIC HTStream* HTWriter_new ARGS1(int, soc)
160 + HTStream* me = (HTStream*)malloc(sizeof(*me));
161 + if (me == NULL) outofmem(__FILE__, "HTML_new");
162 + me->isa = &HTWriter;
165 + me->make_ascii = NO;
168 + me->write_pointer = me->buffer;
172 +/* Subclass-specific Methods
173 +** -------------------------
176 +PUBLIC HTStream* HTASCIIWriter ARGS1(int, soc)
178 + HTStream* me = (HTStream*)malloc(sizeof(*me));
179 + if (me == NULL) outofmem(__FILE__, "HTML_new");
180 + me->isa = &HTWriter;
183 + me->make_ascii = YES;
186 + me->write_pointer = me->buffer;