Bugzilla – Attachment 401819 Details for
Bug 655483
[patch] libproxy support in libzypp
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
IDP Log In
|
Forgot Password
[patch]
Updated patch
libproxy-sysconfig.diff (text/plain), 5.74 KB, created by
Duncan Mac-Vicar
on 2010-11-23 15:32:17 UTC
(
hide
)
Description:
Updated patch
Filename:
MIME Type:
Creator:
Duncan Mac-Vicar
Created:
2010-11-23 15:32:17 UTC
Size:
5.74 KB
patch
obsolete
>Index: libproxy/cmake/modules.cmk >=================================================================== >--- libproxy/cmake/modules.cmk (revision 775) >+++ libproxy/cmake/modules.cmk (working copy) >@@ -9,6 +9,7 @@ > include(cmake/pxmodule.cmk) > include(cmake/pkgconfig.cmk) > include(cmake/modules/config_envvar.cmk) >+include(cmake/modules/config_sysconfig.cmk) > include(cmake/modules/config_gnome.cmk) > include(cmake/modules/config_kde4.cmk) > include(cmake/modules/config_macosx.cmk) >@@ -27,6 +28,7 @@ > # > message("MODULES TO BUILD:") > px_module(config_envvar "${ENVVAR_FOUND}" 1) >+px_module(config_sysconfig "${SYSCONFIG_FOUND}" 1) > px_module(config_gnome "${GNOME_FOUND}" 0) > px_module(config_kde4 "${KDE4_FOUND}" 0 ${KDE4_LIBRARIES}) > px_module(config_macosx "${SC_FOUND}" 1 ${SC_LIBRARIES} ${CF_LIBRARIES}) >Index: libproxy/cmake/modules/config_sysconfig.cmk >=================================================================== >--- libproxy/cmake/modules/config_sysconfig.cmk (revision 0) >+++ libproxy/cmake/modules/config_sysconfig.cmk (revision 0) >@@ -0,0 +1,5 @@ >+if (NOT WIN32 AND NOT APPLE) >+ if (EXISTS "/etc/sysconfig" AND IS_DIRECTORY "/etc/sysconfig") >+ set(SYSCONFIG_FOUND 1) >+ endif() >+endif() >\ No newline at end of file >Index: libproxy/modules/config_sysconfig.cpp >=================================================================== >--- libproxy/modules/config_sysconfig.cpp (revision 0) >+++ libproxy/modules/config_sysconfig.cpp (revision 0) >@@ -0,0 +1,165 @@ >+/******************************************************************************* >+ * libproxy sysconfig module >+ * Copyright (C) 2010 Novell Inc. >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Lesser General Public >+ * License as published by the Free Software Foundation; either >+ * version 2.1 of the License, or (at your option) any later version. >+ * >+ * This library is distributed in the hope that it will be useful, >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ * Lesser General Public License for more details. >+ * >+ * You should have received a copy of the GNU Lesser General Public >+ * License along with this library; if not, write to the Free Software >+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA >+ ******************************************************************************/ >+ >+#include <sys/stat.h> >+#include <cstdlib> >+#include <map> >+#include <fstream> >+ >+#include "../extension_config.hpp" >+using namespace libproxy; >+using std::map; >+ >+enum Trim { >+ NO_TRIM = 0x00, >+ L_TRIM = 0x01, >+ R_TRIM = 0x02, >+ TRIM = (L_TRIM|R_TRIM) >+}; >+ >+static std::string trim( const std::string & s, const Trim trim_r = TRIM ) { >+ >+ if (s.empty() || trim_r == NO_TRIM) >+ return s; >+ >+ std::string ret(s); >+ >+ if (trim_r & L_TRIM) { >+ std::string::size_type p = ret.find_first_not_of(" \t\n"); >+ if (p == std::string::npos) >+ return std::string(); >+ >+ ret = ret.substr(p); >+ } >+ >+ if (trim_r & R_TRIM) { >+ std::string::size_type p = ret.find_last_not_of(" \t\n"); >+ if (p == std::string::npos) >+ return std::string(); >+ >+ ret = ret.substr(0, p+1); >+ } >+ >+ return ret; >+} >+ >+static map<string,string> sysconfig_read(const string &_path) { >+ >+ map<string,string> ret; >+ string line; >+ >+ ifstream in(_path.c_str()); >+ if (in.fail()) { >+ return ret; >+ } >+ >+ while(getline( in, line)) { >+ >+ if (*line.begin() != '#') { >+ >+ string::size_type pos = line.find('=', 0); >+ >+ if (pos != string::npos) { >+ >+ string key = trim(line.substr(0, pos)); >+ string value = trim(line.substr(pos + 1, line.length() - pos - 1)); >+ >+ if (value.length() >= 2 >+ && *(value.begin()) == '"' >+ && *(value.rbegin()) == '"') { >+ value = value.substr( 1, value.length() - 2 ); >+ } >+ >+ if (value.length() >= 2 >+ && *(value.begin()) == '\'' >+ && *(value.rbegin()) == '\'' ) { >+ value = value.substr( 1, value.length() - 2 ); >+ } >+ ret[key] = value; >+ } // '=' found >+ >+ } // not comment >+ >+ } // while getline >+ return ret; >+} >+ >+static bool should_use_sysconfig() >+{ >+ struct stat st; >+ if (stat("/etc/sysconfig", &st) == 0) >+ return (getuid() == 0); >+ return false; >+} >+ >+class sysconfig_config_extension : public config_extension { >+ >+ map<string,string> _data; >+ >+public: >+ sysconfig_config_extension() >+ : _data(sysconfig_read("/etc/sysconfig/proxy")) { >+ >+ } >+ >+ ~sysconfig_config_extension() { >+ } >+ >+ url get_config(url url) throw (runtime_error) { >+ map<string,string>::const_iterator it = _data.find("PROXY_ENABLED"); >+ if (it != _data.end() && it->second == "no") >+ return libproxy::url("direct://"); >+ >+ string key; >+ string proxy; >+ >+ // If the URL is an ftp url, try to read the ftp proxy >+ if (url.get_scheme() == "ftp") >+ key = "FTP_PROXY"; >+ else if (url.get_scheme() == "http") >+ key = "HTTP_PROXY"; >+ else if (url.get_scheme() == "https") >+ key = "HTTPS_PROXY"; >+ >+ it = _data.find(key); >+ if (it != _data.end()) >+ proxy = it->second; >+ >+ if (proxy.empty()) >+ throw runtime_error("Unable to read configuration"); >+ >+ return libproxy::url(proxy); >+ } >+ >+ string get_ignore(url) { >+ map<string,string>::const_iterator it = _data.find("NO_PROXY"); >+ if (it != _data.end()) >+ return it->second; >+ return ""; >+ } >+ >+ // if we are running as root, and the module is used, then >+ // make sure this is the first method tried >+ virtual bool operator<(const base_extension&) const { >+ return true; >+ } >+}; >+ >+MM_MODULE_INIT_EZ(sysconfig_config_extension, should_use_sysconfig(), NULL, NULL); >+
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
|
Diff
Attachments on
bug 655483
:
401780
| 401819