31 #include <tidy/tidy.h> 32 #include <tidy/buffio.h> 40 tidyBufAppend(out, in, r);
45 void dumpNode(TidyDoc doc, TidyNode tnod,
int indent)
48 for(child = tidyGetChild(tnod); child; child = tidyGetNext(child) ) {
49 ctmbstr
name = tidyNodeGetName(child);
53 printf(
"%*.*s%s ", indent, indent,
"<", name);
55 for(attr = tidyAttrFirst(child); attr; attr = tidyAttrNext(attr) ) {
56 printf(tidyAttrName(attr));
57 tidyAttrValue(attr)?
printf(
"=\"%s\" ",
58 tidyAttrValue(attr)):
printf(
" ");
66 tidyNodeGetText(doc, child, &buf);
67 printf(
"%*.*s\n", indent, indent, buf.bp?(
char *)buf.bp:
"");
75 int main(
int argc,
char **argv)
80 TidyBuffer docbuf = {0};
81 TidyBuffer tidy_errbuf = {0};
92 tidyOptSetBool(tdoc, TidyForceOutput, yes);
93 tidyOptSetInt(tdoc, TidyWrapLen, 4096);
94 tidySetErrorBuffer(tdoc, &tidy_errbuf);
100 err = tidyParseBuffer(tdoc, &docbuf);
102 err = tidyCleanAndRepair(tdoc);
104 err = tidyRunDiagnostics(tdoc);
106 dumpNode(tdoc, tidyGetRoot(tdoc), 0);
107 fprintf(stderr,
"%s\n", tidy_errbuf.bp);
113 fprintf(stderr,
"%s\n", curl_errbuf);
117 tidyBufFree(&docbuf);
118 tidyBufFree(&tidy_errbuf);
124 printf(
"usage: %s <url>\n", argv[0]);
void dumpNode(TidyDoc doc, TidyNode tnod, int indent)
#define curl_easy_setopt(handle, option, value)
int main(int argc, char **argv)
uint write_cb(char *in, uint size, uint nmemb, TidyBuffer *out)
CURL_EXTERN CURL * curl_easy_init(void)
CURL_EXTERN void curl_easy_cleanup(CURL *curl)
CURL_EXTERN CURLcode curl_easy_perform(CURL *curl)