#include <limits.h>
#include "citadel.h"
#include "server.h"
-#include "serv_extensions.h"
#include "control.h"
#include "sysdep_decls.h"
#include "support.h"
int i, j, ch, did_out, rb, scanch;
int nest = 0; /* Bracket nesting level */
int blockquote = 0; /* BLOCKQUOTE nesting level */
+ int styletag = 0; /* STYLE tag nesting level */
+ int styletag_start = 0;
int bytes_processed = 0;
char nl[128];
}
/* Do some parsing */
- if (strlen(inbuf)>0) {
+ if (!IsEmptyStr(inbuf)) {
/* Fold in all the spacing */
for (i=0; i<strlen(inbuf); ++i) {
strcat(outbuf, nl);
}
+ else if (!strcasecmp(tag, "STYLE")) {
+ ++styletag;
+ if (styletag == 1) {
+ styletag_start = strlen(outbuf);
+ }
+ }
+
+ else if (!strcasecmp(tag, "/STYLE")) {
+ --styletag;
+ if (styletag == 0) {
+ outbuf[styletag_start] = 0;
+ }
+ }
+
}
else if ((nest > 0) && (strlen(tag)<(sizeof(tag)-1))) {
}
/* Convert &; tags to the forbidden characters */
- if (strlen(outbuf)>0) for (i=0; i<strlen(outbuf); ++i) {
+ if (!IsEmptyStr(outbuf)) for (i=0; i<strlen(outbuf); ++i) {
/* Character entity references */
if (!strncasecmp(&outbuf[i], " ", 6)) {
strcpy(&outbuf[i+3], &outbuf[i+7]);
}
+ else if (!strncmp(&outbuf[i], "Ç", 8)) {
+ outbuf[i] = 'C';
+ strcpy(&outbuf[i+1], &outbuf[i+8]);
+ }
+
+ else if (!strncasecmp(&outbuf[i], "ç", 8)) {
+ outbuf[i] = 'c';
+ strcpy(&outbuf[i+1], &outbuf[i+8]);
+ }
+
+ else if (!strncmp(&outbuf[i], "È", 8)) {
+ outbuf[i] = 'E';
+ strcpy(&outbuf[i+1], &outbuf[i+8]);
+ }
+
+ else if (!strncasecmp(&outbuf[i], "è", 8)) {
+ outbuf[i] = 'e';
+ strcpy(&outbuf[i+1], &outbuf[i+8]);
+ }
+
+ else if (!strncmp(&outbuf[i], "Ê", 7)) {
+ outbuf[i] = 'E';
+ strcpy(&outbuf[i+1], &outbuf[i+7]);
+ }
+
+ else if (!strncasecmp(&outbuf[i], "ê", 7)) {
+ outbuf[i] = 'e';
+ strcpy(&outbuf[i+1], &outbuf[i+7]);
+ }
+
+ else if (!strncmp(&outbuf[i], "É", 8)) {
+ outbuf[i] = 'E';
+ strcpy(&outbuf[i+1], &outbuf[i+8]);
+ }
+
+ else if (!strncasecmp(&outbuf[i], "é", 8)) {
+ outbuf[i] = 'e';
+ strcpy(&outbuf[i+1], &outbuf[i+8]);
+ }
+
+ else if (!strncmp(&outbuf[i], "À", 8)) {
+ outbuf[i] = 'A';
+ strcpy(&outbuf[i+1], &outbuf[i+8]);
+ }
+
+ else if (!strncasecmp(&outbuf[i], "à", 8)) {
+ outbuf[i] = 'a';
+ strcpy(&outbuf[i+1], &outbuf[i+8]);
+ }
+
+ else if (!strncasecmp(&outbuf[i], "“", 7)) {
+ outbuf[i] = '\"';
+ strcpy(&outbuf[i+1], &outbuf[i+7]);
+ }
+
+ else if (!strncasecmp(&outbuf[i], "”", 7)) {
+ outbuf[i] = '\"';
+ strcpy(&outbuf[i+1], &outbuf[i+7]);
+ }
+
/* two-digit decimal equivalents */
else if ((!strncmp(&outbuf[i], "&#", 2))
&& (outbuf[i+4] == ';') ) {
/* Output any lines terminated with hard line breaks */
do {
did_out = 0;
- if (strlen(outbuf)>0) {
+ if (!IsEmptyStr(outbuf)) {
for (i = 0; i<strlen(outbuf); ++i) {
if ( (i<(screenwidth-2)) && (outbuf[i]=='\n')) {