From: sapier Date: Thu, 19 Jun 2014 18:58:22 +0000 (+0200) Subject: Remove ugly curl struct pointer from jsonFetchValue signature X-Git-Url: http://81.2.79.47:8989/gitweb/?a=commitdiff_plain;h=8af44f81637938db7e4651d2ef8a294cf43b1072;p=zefram%2Fminetest%2Fminetest_engine.git Remove ugly curl struct pointer from jsonFetchValue signature --- diff --git a/src/convert_json.cpp b/src/convert_json.cpp index a6107aa6..e79103a1 100644 --- a/src/convert_json.cpp +++ b/src/convert_json.cpp @@ -32,20 +32,16 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "porting.h" Json::Value fetchJsonValue(const std::string &url, - struct curl_slist *chunk) { + std::vector *extra_headers) { HTTPFetchRequest fetchrequest; HTTPFetchResult fetchresult; fetchrequest.url = url; fetchrequest.caller = HTTPFETCH_SYNC; -#if USE_CURL - struct curl_slist* runptr = chunk; - while(runptr) { - fetchrequest.extra_headers.push_back(runptr->data); - runptr = runptr->next; - } -#endif + if (extra_headers != NULL) + fetchrequest.extra_headers = *extra_headers; + httpfetch_sync(fetchrequest,fetchresult); if (!fetchresult.succeeded) { diff --git a/src/convert_json.h b/src/convert_json.h index ea9bafb7..6732fcfa 100644 --- a/src/convert_json.h +++ b/src/convert_json.h @@ -29,6 +29,6 @@ std::vector readModStoreList(Json::Value& modlist); ModStoreModDetails readModStoreModDetails(Json::Value& details); Json::Value fetchJsonValue(const std::string &url, - struct curl_slist *chunk); + std::vector *extra_headers); #endif diff --git a/src/guiEngine.cpp b/src/guiEngine.cpp index f71c6a51..671f0c57 100644 --- a/src/guiEngine.cpp +++ b/src/guiEngine.cpp @@ -36,10 +36,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include -#if USE_CURL -#include -#endif - /******************************************************************************/ /** TextDestGuiEngine */ /******************************************************************************/ @@ -297,7 +293,7 @@ GUIEngine::~GUIEngine() } delete m_texture_source; - + if (m_cloud.clouds) m_cloud.clouds->drop(); } diff --git a/src/mods.cpp b/src/mods.cpp index 90feee30..b4e075b1 100644 --- a/src/mods.cpp +++ b/src/mods.cpp @@ -113,11 +113,11 @@ std::map flattenModTree(std::map mod ModSpec mod = (*it).second; if(mod.is_modpack) { - std::map content = + std::map content = flattenModTree(mod.modpack_content); result.insert(content.begin(),content.end()); result.insert(std::make_pair(mod.name,mod)); - } + } else //not a modpack { result.insert(std::make_pair(mod.name,mod)); @@ -138,8 +138,8 @@ std::vector flattenMods(std::map mods) std::vector content = flattenMods(mod.modpack_content); result.reserve(result.size() + content.size()); result.insert(result.end(),content.begin(),content.end()); - - } + + } else //not a modpack { result.push_back(mod); @@ -163,10 +163,10 @@ ModConfiguration::ModConfiguration(std::string worldpath) worldmt_settings.readConfigFile(worldmt.c_str()); std::vector names = worldmt_settings.getNames(); std::set include_mod_names; - for(std::vector::iterator it = names.begin(); + for(std::vector::iterator it = names.begin(); it != names.end(); ++it) - { - std::string name = *it; + { + std::string name = *it; // for backwards compatibility: exclude only mods which are // explicitely excluded. if mod is not mentioned at all, it is // enabled. So by default, all installed mods are enabled. @@ -234,7 +234,7 @@ void ModConfiguration::addMods(std::vector new_mods) // Add all the mods that come from modpacks // Second iteration: // Add all the mods that didn't come from modpacks - + std::set seen_this_iteration; for(std::vector::const_iterator it = new_mods.begin(); @@ -325,7 +325,7 @@ void ModConfiguration::resolveDependencies() else{ ++it; } - } + } } // Step 4: write back list of unsatisfied mods @@ -335,7 +335,7 @@ void ModConfiguration::resolveDependencies() #if USE_CURL Json::Value getModstoreUrl(std::string url) { - struct curl_slist *chunk = NULL; + std::vector extra_headers; bool special_http_header = true; @@ -345,15 +345,13 @@ Json::Value getModstoreUrl(std::string url) catch(SettingNotFoundException &e) { } - if (special_http_header) - chunk = curl_slist_append(chunk, "Accept: application/vnd.minetest.mmdb-v1+json"); - - Json::Value retval = fetchJsonValue(url,chunk); - - if (chunk != NULL) - curl_slist_free_all(chunk); - - return retval; + if (special_http_header) { + extra_headers.push_back("Accept: application/vnd.minetest.mmdb-v1+json"); + return fetchJsonValue(url, &extra_headers); + } + else { + return fetchJsonValue(url, NULL); + } } #endif diff --git a/src/mods.h b/src/mods.h index f11401a1..f35bd18d 100644 --- a/src/mods.h +++ b/src/mods.h @@ -30,10 +30,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "json/json.h" #include "config.h" -#if USE_CURL -#include -#endif - #define MODNAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyz0123456789_" class ModError : public std::exception @@ -104,7 +100,7 @@ public: m_name_conflicts() {} - + ModConfiguration(std::string worldpath); // checks if all dependencies are fullfilled. diff --git a/src/serverlist.cpp b/src/serverlist.cpp index 00b5f2de..8a85b33b 100644 --- a/src/serverlist.cpp +++ b/src/serverlist.cpp @@ -70,7 +70,7 @@ std::vector getLocal() std::vector getOnline() { - Json::Value root = fetchJsonValue((g_settings->get("serverlist_url")+"/list").c_str(),0); + Json::Value root = fetchJsonValue((g_settings->get("serverlist_url")+"/list").c_str(), NULL); std::vector serverlist;