prepare windows pingback
[ardour.git] / gtk2_ardour / pingback.cc
index ccec81cba7a70164d93728cd5a36e21c7e97470f..10a48232d0ad17af214af543ff14b2babd6021e5 100644 (file)
@@ -23,7 +23,7 @@
 #include <fstream>
 #include <cstring>
 
-#ifndef WIN32
+#ifndef PLATFORM_WINDOWS
 #include <sys/utsname.h>
 #endif
 
@@ -42,6 +42,7 @@
 using std::string;
 using namespace ARDOUR;
 
+#ifndef PLATFORM_WINDOWS // no pingback for windows, so far
 static size_t
 curl_write_data (char *bufptr, size_t size, size_t nitems, void *ptr)
 {
@@ -61,6 +62,7 @@ curl_write_data (char *bufptr, size_t size, size_t nitems, void *ptr)
 
         return size * nitems;
 }
+#endif
 
 struct ping_call {
     std::string version;
@@ -73,16 +75,9 @@ struct ping_call {
 static void*
 _pingback (void *arg)
 {
-#ifndef WIN32
        ping_call* cm = static_cast<ping_call*> (arg);
        CURL* c;
-       struct utsname utb;
        string return_str;
-
-       if (uname (&utb)) {
-               return 0;
-       }
-
        //initialize curl
 
        curl_global_init (CURL_GLOBAL_NOTHING);
@@ -97,15 +92,30 @@ _pingback (void *arg)
 
 #ifdef __APPLE__
        url = Config->get_osx_pingback_url ();
+#elif defined PLATFORM_WINDOWS
+       url = Config->get_windows_pingback_url ();
 #else
        url = Config->get_linux_pingback_url ();
 #endif
 
+       if (url.compare (0, 4, "http") != 0) {
+               delete cm;
+               return 0;
+       }
+
        char* v = curl_easy_escape (c, cm->version.c_str(), cm->version.length());
        url += v;
        url += '?';
        free (v);
 
+#ifndef PLATFORM_WINDOWS
+       struct utsname utb;
+
+       if (uname (&utb)) {
+               delete cm;
+               return 0;
+       }
+
        string uts = string_compose ("%1 %2 %3 %4", utb.sysname, utb.release, utb.version, utb.machine);
        string s;
        char* query;
@@ -126,6 +136,14 @@ _pingback (void *arg)
        s = string_compose ("m=%1", query);
        url += s;
        free (query);
+#else
+       // this is hilarious: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724429%28v=vs.85%29.aspx
+# if ( defined(__x86_64__) || defined(_M_X64) )
+       url += "a=64";
+# else
+       url += "a=32";
+# endif
+#endif /* PLATFORM_WINDOWS */
 
        curl_easy_setopt (c, CURLOPT_URL, url.c_str());
 
@@ -161,9 +179,6 @@ _pingback (void *arg)
 
        curl_easy_cleanup (c);
        delete cm;
-
-#endif /* WIN32 */
-
        return 0;
 }