summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/base/system.cpp
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2010-04-02 19:22:32 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2010-04-02 19:22:32 +0000
commitb47030331197ff0fec8af069658c9dc2a5967847 (patch)
tree51fadb4e9307afca90ff615569f5c21fd528a106 /rbutil/rbutilqt/base/system.cpp
parent7a994c84c3abbfb2c18cfb5ebbd4ee8f6694e49d (diff)
downloadrockbox-b47030331197ff0fec8af069658c9dc2a5967847.tar.gz
rockbox-b47030331197ff0fec8af069658c9dc2a5967847.zip
Implement system proxy values retrieval on OS X.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25439 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt/base/system.cpp')
-rw-r--r--rbutil/rbutilqt/base/system.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/base/system.cpp b/rbutil/rbutilqt/base/system.cpp
index 65acef5eea..7797157493 100644
--- a/rbutil/rbutilqt/base/system.cpp
+++ b/rbutil/rbutilqt/base/system.cpp
@@ -60,6 +60,9 @@
60#include <sys/param.h> 60#include <sys/param.h>
61#include <sys/ucred.h> 61#include <sys/ucred.h>
62#include <sys/mount.h> 62#include <sys/mount.h>
63
64#include <CoreFoundation/CoreFoundation.h>
65#include <SystemConfiguration/SystemConfiguration.h>
63#endif 66#endif
64 67
65#include "utils.h" 68#include "utils.h"
@@ -390,6 +393,42 @@ QUrl System::systemProxy(void)
390 return QUrl("http://" + QString::fromWCharArray(proxyval)); 393 return QUrl("http://" + QString::fromWCharArray(proxyval));
391 else 394 else
392 return QUrl(""); 395 return QUrl("");
396#elif defined(Q_OS_MACX)
397
398 CFDictionaryRef dictref;
399 CFStringRef stringref;
400 CFNumberRef numberref;
401 int enable;
402 int port;
403 unsigned int bufsize = 0;
404 char *buf;
405 QUrl proxy;
406
407 dictref = SCDynamicStoreCopyProxies(NULL);
408 stringref = (CFStringRef)CFDictionaryGetValue(dictref, kSCPropNetProxiesHTTPProxy);
409 numberref = (CFNumberRef)CFDictionaryGetValue(dictref, kSCPropNetProxiesHTTPEnable);
410 CFNumberGetValue(numberref, kCFNumberIntType, &enable);
411 if(enable == 1) {
412 // get number of characters. CFStringGetLength uses UTF-16 code pairs
413 bufsize = CFStringGetLength(stringref) * 2 + 1;
414 buf = (char*)malloc(sizeof(char) * bufsize);
415 if(buf == NULL) {
416 qDebug() << "[System] can't allocate memory for proxy string!";
417 CFRelease(dictref);
418 return QUrl("");
419 }
420 CFStringGetCString(stringref, buf, bufsize, kCFStringEncodingUTF16);
421 numberref = (CFNumberRef)CFDictionaryGetValue(dictref, kSCPropNetProxiesHTTPPort);
422 CFNumberGetValue(numberref, kCFNumberIntType, &port);
423 proxy.setScheme("http");
424 proxy.setHost(QString::fromUtf16((unsigned short*)buf));
425 proxy.setPort(port);
426
427 free(buf);
428 }
429 CFRelease(dictref);
430
431 return proxy;
393#else 432#else
394 return QUrl(""); 433 return QUrl("");
395#endif 434#endif