}
/* two-digit decimal equivalents */
- else if ((!strncmp(&outbuf[i], "&#", 2))
- && (outbuf[i+4] == ';') ) {
+ else if (outbuf[i] == '&' &&
+ outbuf[i + 1] == '#' &&
+ isdigit(outbuf[i + 2]) &&
+ isdigit(outbuf[i + 3]) &&
+ (outbuf[i+4] == ';') )
+ {
scanch = 0;
sscanf(&outbuf[i+2], "%02d", &scanch);
outbuf[i] = scanch;
}
/* three-digit decimal equivalents */
- else if ((!strncmp(&outbuf[i], "&#", 2))
- && (outbuf[i+5] == ';') ) {
+ else if (outbuf[i] == '&' &&
+ outbuf[i + 1] == '#' &&
+ isdigit(outbuf[i + 2]) &&
+ isdigit(outbuf[i + 3]) &&
+ isdigit(outbuf[i + 4]) &&
+ (outbuf[i + 5] == ';') )
+ {
scanch = 0;
sscanf(&outbuf[i+2], "%03d", &scanch);
outbuf[i] = scanch;
strcpy(&outbuf[i+1], &outbuf[i+6]);
}
+ /* four-digit decimal equivalents */
+ else if (outbuf[i] == '&' &&
+ outbuf[i + 1] == '#' &&
+ isdigit(outbuf[i + 2]) &&
+ isdigit(outbuf[i + 3]) &&
+ isdigit(outbuf[i + 4]) &&
+ isdigit(outbuf[i + 5]) &&
+ (outbuf[i + 6] == ';') )
+ {
+ scanch = 0;
+ sscanf(&outbuf[i+2], "%04d", &scanch);
+ outbuf[i] = scanch;
+ strcpy(&outbuf[i+1], &outbuf[i+6]);
+ }
+
}
/* Make sure the output buffer is big enough */
int fromstdin = 0;
int parse_email = 0;
+int parse_html = 0;
static void TestRevalidateStrBuf(StrBuf *Buf)
{
CU_ASSERT(strlen(ChrPtr(Buf)) == StrLength(Buf));
}
+static void TestHTML2ASCII_line(void)
+{
+ int fdin = 0;// STDIN
+ const char *Err;
+ StrBuf *Source;
+ char *Target;
+
+ Source = NewStrBuf();
+
+ while (fdin == 0) {
+
+ StrBufTCP_read_line(Source, &fdin, 0, &Err);
+ printf("the source:>%s<\n", ChrPtr(Source));
+ Target = html_to_ascii(ChrPtr(Source), StrLength(Source), 80, 0);
+
+ printf("the target:>%s<\n", Target);
+ FlushStrBuf(Source);
+ free(Target);
+ }
+
+ FreeStrBuf(&Source);
+}
+
static void AddStrBufSimlpeTests(void)
{
CU_pTest pTest = NULL;
pGroup = CU_add_suite("TestStringBufConversions", NULL, NULL);
- if (!parse_email) {
+ if (parse_email) {
if (!fromstdin) {
- pTest = CU_add_test(pGroup, "testRFC822Decode", TestRFC822Decode);
- pTest = CU_add_test(pGroup, "testRFC822Decode1", TestRFC822Decode);
- pTest = CU_add_test(pGroup, "testRFC822Decode2", TestRFC822Decode);
- pTest = CU_add_test(pGroup, "testRFC822Decode3", TestRFC822Decode);
+ pTest = CU_add_test(pGroup, "TestParseEmailSTDIN", TestEncodeEmail);
}
else
- pTest = CU_add_test(pGroup, "testRFC822DecodeSTDIN", TestRFC822DecodeStdin);
+ pTest = CU_add_test(pGroup, "TestParseEmailSTDIN", TestEncodeEmailSTDIN);
+ }
+ else if (parse_html) {
+ pTest = CU_add_test(pGroup, "TestParseHTMLSTDIN", TestHTML2ASCII_line);
}
else {
if (!fromstdin) {
- pTest = CU_add_test(pGroup, "TestParseEmailSTDIN", TestEncodeEmail);
+ pTest = CU_add_test(pGroup, "testRFC822Decode", TestRFC822Decode);
+ pTest = CU_add_test(pGroup, "testRFC822Decode1", TestRFC822Decode);
+ pTest = CU_add_test(pGroup, "testRFC822Decode2", TestRFC822Decode);
+ pTest = CU_add_test(pGroup, "testRFC822Decode3", TestRFC822Decode);
}
else
- pTest = CU_add_test(pGroup, "TestParseEmailSTDIN", TestEncodeEmailSTDIN);
+ pTest = CU_add_test(pGroup, "testRFC822DecodeSTDIN", TestRFC822DecodeStdin);
}
}
{
int a;
- while ((a = getopt(argc, argv, "@i")) != EOF)
+ while ((a = getopt(argc, argv, "@ih")) != EOF)
switch (a) {
+ case 'h':
+ parse_html = 1;
+ break;
case '@':
parse_email = 1;
break;