Updated addon repository URL and improved debug output on download
[supertux.git] / src / addon / downloader.cpp
index c10bea4..905dd2b 100644 (file)
@@ -18,6 +18,7 @@
 #include "addon/downloader.hpp"
 
 #include <algorithm>
+#include <array>
 #include <assert.h>
 #include <memory>
 #include <physfs.h>
@@ -81,8 +82,8 @@ public:
     m_id(id),
     m_url(url),
     m_handle(),
-    m_error_buffer({'\0'}),
-    m_status(new TransferStatus(downloader, id)),
+    m_error_buffer({{'\0'}}),
+    m_status(new TransferStatus(m_downloader, id)),
     m_fout(PHYSFS_openWrite(outfile.c_str()), PHYSFS_close)
   {
     if (!m_fout)
@@ -152,7 +153,7 @@ public:
     return size * nmemb;
   }
 
-  void on_progress(double dltotal, double dlnow,
+  int on_progress(double dltotal, double dlnow,
                    double ultotal, double ulnow)
   {
     m_status->dltotal = static_cast<int>(dltotal);
@@ -160,6 +161,8 @@ public:
 
     m_status->ultotal = static_cast<int>(ultotal);
     m_status->ulnow = static_cast<int>(ulnow);
+
+    return 0;
   }
 
 private:
@@ -168,9 +171,9 @@ private:
     return static_cast<Transfer*>(userdata)->on_data(ptr, size, nmemb);
   }
 
-  static void on_progress_wrap(void* userdata,
-                               double dltotal, double dlnow,
-                               double ultotal, double ulnow)
+  static int on_progress_wrap(void* userdata,
+                              double dltotal, double dlnow,
+                              double ultotal, double ulnow)
   {
     return static_cast<Transfer*>(userdata)->on_progress(dltotal, dlnow, ultotal, ulnow);
   }
@@ -245,6 +248,7 @@ Downloader::download(const std::string& url)
 void
 Downloader::download(const std::string& url, const std::string& filename)
 {
+  log_info << "download: " << url << " to " << filename << std::endl;
   std::unique_ptr<PHYSFS_file, int(*)(PHYSFS_File*)> fout(PHYSFS_openWrite(filename.c_str()),
                                                           PHYSFS_close);
   download(url, my_curl_physfs_write, fout.get());
@@ -360,6 +364,7 @@ Downloader::update()
 TransferStatusPtr
 Downloader::request_download(const std::string& url, const std::string& outfile)
 {
+  log_info << "request_download: " << url << std::endl;
   std::unique_ptr<Transfer> transfer(new Transfer(*this, m_next_transfer_id++, url, outfile));
   curl_multi_add_handle(m_multi_handle, transfer->get_curl_handle());
   m_transfers.push_back(std::move(transfer));