<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,12 @@
+ifdef USE_LIBXML
+XML_FLAGS=`curl-config --cflags --libs` `xml2-config --cflags --libs`
+else
+XML_FLAGS=`curl-config --cflags --libs`
+endif
+
+FLAGS=$(XML_FLAGS) $(CURSES_FLAGS)
+
 all : nicodown
 
 nicodown : nicodown.c
-	gcc -g -o nicodown nicodown.c `curl-config --cflags --libs`
-
-	@#gcc -g -o nicodown nicodown.c `curl-config --cflags --libs` `xml2-config --cflags --libs`
+	gcc -g -o nicodown nicodown.c $(FLAGS)</diff>
      <filename>Makefile</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 //#define CURL_STATICLIB
 #include &lt;curl/curl.h&gt;
-#if 0
+#ifdef USE_LIBXML
 #include &lt;libxml/parser.h&gt;
 #include &lt;libxml/xpath.h&gt;
 #include &lt;libxml/xpathInternals.h&gt;
@@ -11,7 +11,7 @@
 
 
 typedef struct {
-    char* data;        // response data from server
+    char* data;     // response data from server
     size_t size;    // response size of data
 } MEMFILE;
 
@@ -34,9 +34,9 @@ memfwrite(char* ptr, size_t size, size_t nmemb, void* stream) {
     MEMFILE* mf = (MEMFILE*) stream;
     int block = size * nmemb;
     if (!mf-&gt;data)
-        mf-&gt;data = (char*)malloc(block);
+        mf-&gt;data = (char*) malloc(block);
     else
-        mf-&gt;data = (char*)realloc(mf-&gt;data, mf-&gt;size + block);
+        mf-&gt;data = (char*) realloc(mf-&gt;data, mf-&gt;size + block);
     if (mf-&gt;data) {
         memcpy(mf-&gt;data + mf-&gt;size, ptr, block);
         mf-&gt;size += block;
@@ -48,21 +48,21 @@ char*
 memfstrdup(MEMFILE* mf) {
     char* buf = malloc(mf-&gt;size + 1);
     memcpy(buf, mf-&gt;data, mf-&gt;size);
-    buf[mf-&gt;size + 1] = 0;
+    buf[mf-&gt;size] = 0;
     return buf;
 }
 
 int
 progress(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow) {
-    printf(&quot;\r[%s] %3.1f%%   &quot;, (char*) clientp, dlnow * 100.0 / dltotal);
+    printf(&quot;\r[%s] %.1f%%   &quot;, (char*) clientp, dlnow * 100.0 / dltotal);
     fflush(stdout);
     return 0;
 }
 
 int
 main(int argc, char* argv[]) {
+    CURL* curl = NULL;
     CURLcode res;
-    CURL* curl;
     int status = 0;
     char error[256];
     char fname[256];
@@ -185,7 +185,7 @@ main(int argc, char* argv[]) {
         goto leave;
     }
 
-#ifdef LIBXML_VERSION
+#ifdef USE_LIBXML
     // parse title node
     {
         xmlDocPtr doc = NULL;
@@ -202,10 +202,10 @@ main(int argc, char* argv[]) {
                 xmlNodePtr node = nodes-&gt;nodeTab[n];
                 if(node-&gt;type != XML_ATTRIBUTE_NODE &amp;&amp; node-&gt;type != XML_ELEMENT_NODE &amp;&amp; node-&gt;type != XML_CDATA_SECTION_NODE) continue;
                 if (node-&gt;type == XML_CDATA_SECTION_NODE)
-                    sprintf(fname, &quot;%s.flv&quot;, (char*)node-&gt;content);
+                    sprintf(fname, &quot;%s.flv&quot;, (char*) node-&gt;content);
                 else
                 if (node-&gt;children)
-                    sprintf(fname, &quot;%s.flv&quot;, (char*)node-&gt;children-&gt;content);
+                    sprintf(fname, &quot;%s.flv&quot;, (char*) node-&gt;children-&gt;content);
                 break;
             }
         }
@@ -239,13 +239,13 @@ main(int argc, char* argv[]) {
 
         codePage = CP_UTF8;
         wcssize = MultiByteToWideChar(codePage, 0, fname, -1,  NULL, 0);
-        wcsstr = (wchar_t*)malloc(sizeof(wchar_t) * (wcssize + 1));
+        wcsstr = (wchar_t*) malloc(sizeof(wchar_t) * (wcssize + 1));
         wcssize = MultiByteToWideChar(codePage, 0, fname, -1, wcsstr, wcssize + 1);
         wcsstr[wcssize] = 0;
         codePage = GetACP();
-        mbssize = WideCharToMultiByte(codePage, 0, (LPCWSTR)wcsstr,-1,NULL,0,NULL,NULL);
-        mbsstr = (char*)malloc(mbssize+1);
-        mbssize = WideCharToMultiByte(codePage, 0, (LPCWSTR)wcsstr, -1, mbsstr, mbssize, NULL, NULL);
+        mbssize = WideCharToMultiByte(codePage, 0, (LPCWSTR) wcsstr,-1,NULL,0,NULL,NULL);
+        mbsstr = (char*) malloc(mbssize+1);
+        mbssize = WideCharToMultiByte(codePage, 0, (LPCWSTR) wcsstr, -1, mbsstr, mbssize, NULL, NULL);
         mbsstr[mbssize] = 0;
         strcpy(fname, mbsstr);
         free(mbsstr);
@@ -320,7 +320,7 @@ main(int argc, char* argv[]) {
     }
 
 leave:
-    curl_easy_cleanup(curl);
+    if (curl) curl_easy_cleanup(curl);
 
     return 0;
 }</diff>
      <filename>nicodown.c</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8caa3537b2bf726b85324a3b351074c62456b270</id>
    </parent>
  </parents>
  <author>
    <name>mattn</name>
    <email>mattn.jp@gmail.com</email>
  </author>
  <url>http://github.com/mattn/nicodown/commit/a0237f30f7c3e6d5cfb4f6039cd59275836b1080</url>
  <id>a0237f30f7c3e6d5cfb4f6039cd59275836b1080</id>
  <committed-date>2008-10-29T22:17:10-07:00</committed-date>
  <authored-date>2008-10-29T22:17:10-07:00</authored-date>
  <message>reformat and kick-out USE_LIBXML, fixed memory overflow.</message>
  <tree>56b310fe3f9a631beedb52f1c54b5519f6b14af9</tree>
  <committer>
    <name>mattn</name>
    <email>mattn.jp@gmail.com</email>
  </committer>
</commit>
