version 1.76, 2009/11/01 07:44:32 |
version 1.77, 2009/11/01 08:15:20 |
Line 316 print_escape(struct html *h, const char **p) |
|
Line 316 print_escape(struct html *h, const char **p) |
|
static void |
static void |
print_encode(struct html *h, const char *p) |
print_encode(struct html *h, const char *p) |
{ |
{ |
|
size_t sz; |
|
|
for (; *p; p++) { |
for (; *p; p++) { |
|
sz = strcspn(p, "\\<>&"); |
|
|
|
fwrite(p, 1, sz, stdout); |
|
p += sz; |
|
|
if ('\\' == *p) { |
if ('\\' == *p) { |
print_escape(h, &p); |
print_escape(h, &p); |
continue; |
continue; |
} |
} else if ('\0' == *p) |
switch (*p) { |
|
case ('<'): |
|
printf("<"); |
|
break; |
break; |
case ('>'): |
|
|
if ('<' == *p) |
|
printf("<"); |
|
else if ('>' == *p) |
printf(">"); |
printf(">"); |
break; |
else if ('&' == *p) |
case ('&'): |
|
printf("&"); |
printf("&"); |
break; |
|
default: |
|
putchar(*p); |
|
break; |
|
} |
|
} |
} |
} |
} |
|
|