<pre style='margin:0'>
David B. Evans (dbevans) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/ce7ea3c5d7373235be38aed0d2698fa9d5cb3cc6">https://github.com/macports/macports-ports/commit/ce7ea3c5d7373235be38aed0d2698fa9d5cb3cc6</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit ce7ea3c5d7373235be38aed0d2698fa9d5cb3cc6
</span>Author: David B. Evans <devans@macports.org>
AuthorDate: Tue Jan 10 13:57:00 2017 -0800

<span style='display:block; white-space:pre;color:#404040;'>    libproxy: update to version 0.4.14
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>     * remove kde patch now fixed upstream
</span><span style='display:block; white-space:pre;color:#404040;'>     * kde plugin now supports KDE4/KF5 via kreadconfig5 kreadconfig at runtime
</span><span style='display:block; white-space:pre;color:#404040;'>     * add python3 variants, default remains python27 for compatibility
</span>---
 net/libproxy/Portfile                              |  71 ++++++---
 .../patch-libproxy-modules-config_kde.cpp.diff     | 170 ---------------------
 2 files changed, 53 insertions(+), 188 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/libproxy/Portfile b/net/libproxy/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index a4dd468..df6467c 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/libproxy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/libproxy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -6,10 +6,9 @@ PortGroup           cmake 1.0
</span> 
 cmake.out_of_source yes
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup        libproxy libproxy 0.4.13
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        libproxy libproxy 0.4.14
</span> name                libproxy
 epoch               1
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            2
</span> categories          net
 maintainers         devans openmaintainer
 platforms           darwin
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -23,13 +22,12 @@ long_description    Libproxy exists to answer the question: Given a \
</span>                     network resource, how do I reach it? It handles all \
                     the details, enabling you to get back to programming.
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  08077c214213d782d45d01ee720845bc3e803fd6 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  46133542bd6a2d66058cb66adf3e592ebd0f355db3e1005bbd30ac5ed4328cf7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  d5da319b262f424394151b35e5d8ad8c4f599578 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  54d7448efd3608d689174bf3d56e48f78b3c6c69dca0c0e8a6692db06729e686
</span> 
 patchfiles          patch-libproxy-cmake.diff \
                     patch-libproxy-test-CMakeLists.txt.diff \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    patch-bindings-perl-src-CMakeLists.txt.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    patch-libproxy-modules-config_kde.cpp.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-bindings-perl-src-CMakeLists.txt.diff
</span> 
 depends_build-append \
                     port:pkgconfig
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -51,7 +49,7 @@ depends_lib         path:lib/pkgconfig/glib-2.0.pc:glib2 \
</span> 
 use_parallel_build no
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# use default build which targets GNOME3 (gsettings) instead of GNOME2 (gconf)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# use default GNOME build which targets GNOME3 (gsettings) instead of GNOME2 (gconf)
</span> # perl bindings disabled due to unpredictable configuration
 
 configure.args-append \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -60,27 +58,64 @@ configure.args-append \
</span>                     -DWITH_WEBKIT3=NO \
                     -DWITH_VALA=YES \
                     -DWITH_PERL=NO \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DWITH_PYTHON=NO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DWITH_PYTHON2=NO \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DWITH_PYTHON3=NO \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DWITH_KDE=NO
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-variant kde description {Enable KDE4 plugin} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        configure.args-append -DQT_QT_INCLUDE_DIR=${prefix}/include/QtCore
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_lib-append port:kdelibs4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant kde description {Enable KDE4/KF5 plugin} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# kde binding (KDE4/KF5) tests at runtime for kreadconfig5 kreadconfig in that order
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-replace  -DWITH_KDE=NO -DWITH_KDE=YES
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-variant python27 description {Build Bindings for Python 2.7} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant python27 conflicts python34 python35 python36 description {Build Bindings for Python 2.7} {
</span>     set python_prefix ${frameworks_dir}/Python.framework/Versions/2.7
     depends_lib-append port:python27
     configure.args-delete \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DWITH_PYTHON=NO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DWITH_PYTHON2=NO
</span>     configure.args-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DWITH_PYTHON=YES \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DPYTHON_EXECUTABLE=${prefix}/bin/python2.7 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DPYTHON_SITEPKG_DIR=${python_prefix}/lib/python2.7/site-packages
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DWITH_PYTHON2=YES \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DPYTHON2_EXECUTABLE=${prefix}/bin/python2.7 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DPYTHON2_SITEPKG_DIR=${python_prefix}/lib/python2.7/site-packages
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# build Python bindings by default
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant python34 conflicts python27 python35 python36 description {Build Bindings for Python 3.4} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set python_prefix ${frameworks_dir}/Python.framework/Versions/3.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append port:python34
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-delete \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DWITH_PYTHON3=NO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DWITH_PYTHON3=YES \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DPYTHON3_EXECUTABLE=${prefix}/bin/python3.4 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DPYTHON3_SITEPKG_DIR=${python_prefix}/lib/python3.4/site-packages
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant python35 conflicts python27 python34 python36 description {Build Bindings for Python 3.5} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set python_prefix ${frameworks_dir}/Python.framework/Versions/3.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append port:python35
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-delete \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DWITH_PYTHON3=NO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DWITH_PYTHON3=YES \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DPYTHON3_EXECUTABLE=${prefix}/bin/python3.5 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DPYTHON3_SITEPKG_DIR=${python_prefix}/lib/python3.5/site-packages
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-default_variants    +python27
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant python36 conflicts python27 python34 python35 description {Build Bindings for Python 3.6} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set python_prefix ${frameworks_dir}/Python.framework/Versions/3.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append port:python36
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-delete \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DWITH_PYTHON3=NO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DWITH_PYTHON3=YES \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DPYTHON3_EXECUTABLE=${prefix}/bin/python3.6 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DPYTHON3_SITEPKG_DIR=${python_prefix}/lib/python3.6/site-packages
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# build Python 2.7 bindings by default for compatibility
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {![variant_isset python34] && ![variant_isset python35] && ![variant_isset python36]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    default_variants    +python27
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span> 
 post-patch {
        if {${os.major} < 13 && [string match "*clang*" ${configure.compiler}]} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/libproxy/files/patch-libproxy-modules-config_kde.cpp.diff b/net/libproxy/files/patch-libproxy-modules-config_kde.cpp.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 1fec7a5..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/libproxy/files/patch-libproxy-modules-config_kde.cpp.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,170 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From f557862be9de724eac1ec37e711221feb28fc4d7 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Mon, 9 May 2016 23:29:51 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Revert "config_kde: Add a basic cache and invalidation"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-https://github.com/libproxy/libproxy/issues/29
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-https://trac.macports.org/ticket/51309
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This reverts commit 28620c7aeb3d1b54c83caf84778df8e095490820.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- libproxy/modules/config_kde.cpp | 98 +++++------------------------------------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 10 insertions(+), 88 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git libproxy/modules/config_kde.cpp libproxy/modules/config_kde.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 515aaac..2211487 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- libproxy/modules/config_kde.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ libproxy/modules/config_kde.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -18,13 +18,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  ******************************************************************************/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <sys/stat.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unistd.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <algorithm>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <cstdlib>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <cstdio>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <sstream>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "../extension_config.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- using namespace libproxy;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -32,18 +28,11 @@ using namespace libproxy;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class kde_config_extension : public config_extension {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     kde_config_extension()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        : cache_time(0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         try {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             // Try the KF5 one first
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             command = "kreadconfig5";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            command_output("kreadconfig5 --key nonexistant");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            try {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                parse_dir_list(command_output("qtpaths --paths GenericConfigLocation"));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            catch(...) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            kde_config_val("proxyType", "-1");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             return; // Worked
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         catch(...) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -51,13 +40,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         try {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             // The KDE4 one next
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             command = "kreadconfig";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            command_output(command);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            try {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                parse_dir_list(command_output("kde4-config --path config"));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            catch(...) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            kde_config_val("proxyType", "-1");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             return; // Worked
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         catch(...) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -134,7 +117,11 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    string command_output(const string &cmdline) throw (runtime_error) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // Neither key nor def must contain '
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    string kde_config_val(const string &key, const string &def) throw (runtime_error) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        string cmdline =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                command + " --file kioslaverc --group 'Proxy Settings' --key '" + key + "' --default '" + def + "'";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         FILE *pipe = popen(cmdline.c_str(), "r");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (!pipe)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             throw runtime_error("Unable to run command");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -142,84 +129,19 @@ private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         char buffer[128];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         string result = "";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         while (!feof(pipe)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            if (fgets(buffer, 128, pipe) != NULL)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                result += buffer; // TODO: If this throws bad_alloc, pipe is leaked
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+         if (fgets(buffer, 128, pipe) != NULL)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+             result += buffer; // TODO: If this throws bad_alloc, pipe is leaked
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if(pclose(pipe) != 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            throw runtime_error("Command failed");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        pclose(pipe);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         // Trim newlines and whitespace at end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         result.erase(result.begin() + (result.find_last_not_of(" \n\t")+1), result.end());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    // Neither key nor def must contain '
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    string kde_config_val(const string &key, const string &def) throw (runtime_error) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (cache_needs_refresh())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            cache.clear();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            try {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                // Already in cache?
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                return cache.at(key);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            } catch(...) {} // Not in cache
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        string result = command_output(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                command + " --file kioslaverc --group 'Proxy Settings' --key '" + key + "' --default '" + def + "'");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        // Add result to cache
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        cache[key] = result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    // Used for cache invalidation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    struct configfile {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        string path;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        time_t mtime; // 0 means it doesn't exist
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    // Parses output of qtpaths/kde4-config to fill config_locs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    void parse_dir_list(const string &dirs) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        string config_path;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        stringstream config_paths_stream(dirs);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        // Try each of the listed folders, seperated by ':'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        while (getline(config_paths_stream, config_path, ':')) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            configfile config_loc; config_loc.path = config_path + "/kioslaverc";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            config_locs.push_back(config_loc);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    // If any of the locations in config_locs changed (different mtime),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    // update config_locs and return true.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    bool cache_needs_refresh() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        // Play safe here, if we can't determine the location,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        // don't cache at all.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        bool needs_refresh = config_locs.empty();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        struct stat config_info;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        for (unsigned int i = 0; i < config_locs.size(); ++i) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            configfile &config = config_locs[i];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            time_t current_mtime = stat(config.path.c_str(), &config_info) == 0 ? config_info.st_mtime : 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            if (config.mtime != current_mtime) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                config.mtime = current_mtime;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                needs_refresh = true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        return needs_refresh;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     // Whether to use kreadconfig or kreadconfig5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     string command;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    // When the cache was flushed last
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    time_t cache_time;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    // Cache for config values
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    map<string, string> cache;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    // State of the config files at the time of the last cache flush
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    vector<configfile> config_locs;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- MM_MODULE_INIT_EZ(kde_config_extension, getenv("KDE_FULL_SESSION"), NULL, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.8.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span></pre><pre style='margin:0'>

</pre>