From f4f6714a329bf399840b3f9991b310bd17f7bed6 Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Sat, 4 Mar 2017 21:52:46 -0800 Subject: Try removing constructor (this is so annoying :/). --- CyteKit/RegEx.hpp | 10 +++++++--- CyteKit/extern.h | 6 ++++++ CyteKit/extern.mm | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- MobileCydia.mm | 46 ++++++---------------------------------------- 4 files changed, 66 insertions(+), 45 deletions(-) diff --git a/CyteKit/RegEx.hpp b/CyteKit/RegEx.hpp index 8892a3e..40068a7 100644 --- a/CyteKit/RegEx.hpp +++ b/CyteKit/RegEx.hpp @@ -58,14 +58,18 @@ class RegEx { { } - RegEx(const char *regex, NSString *data = nil) : + RegEx(const char *regex) : regex_(NULL), size_(_not(size_t)) { this->operator =(regex); + } - if (data != nil) - this->operator ()(data); + template + RegEx(const char *regex, const Type_ &data) : + RegEx(regex) + { + this->operator ()(data); } void operator =(const char *regex) { diff --git a/CyteKit/extern.h b/CyteKit/extern.h index 12d0438..670f560 100644 --- a/CyteKit/extern.h +++ b/CyteKit/extern.h @@ -23,10 +23,16 @@ #define CyteKit_extern_H #include +#include extern bool IsWildcat_; extern CGFloat ScreenScale_; +extern char *Machine_; +extern const char *System_; + bool CyteIsReachable(const char *name); +void CyteInitialize(NSString *app, NSString *version); + #endif//CyteKit_extern_H diff --git a/CyteKit/extern.mm b/CyteKit/extern.mm index cb8927a..aad3626 100644 --- a/CyteKit/extern.mm +++ b/CyteKit/extern.mm @@ -19,14 +19,25 @@ **/ /* }}} */ +#include + +#include +#include #include #include #include +#include + +#include + bool IsWildcat_; CGFloat ScreenScale_; +char *Machine_; +const char *System_; + bool CyteIsReachable(const char *name) { SCNetworkReachabilityFlags flags; { SCNetworkReachabilityRef reachability(SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, name)); @@ -47,8 +58,7 @@ bool CyteIsReachable(const char *name) { ; } -__attribute__((__constructor__)) -void CyteKit_extern() { +void CyteInitialize(NSString *app, NSString *version) { UIScreen *screen([UIScreen mainScreen]); if ([screen respondsToSelector:@selector(scale)]) ScreenScale_ = [screen scale]; @@ -61,4 +71,39 @@ void CyteKit_extern() { if (idiom == UIUserInterfaceIdiomPad) IsWildcat_ = true; } + + size_t size; + + sysctlbyname("kern.osversion", NULL, &size, NULL, 0); + char *osversion = new char[size]; + if (sysctlbyname("kern.osversion", osversion, &size, NULL, 0) == -1) + perror("sysctlbyname(\"kern.osversion\", ?)"); + else + System_ = osversion; + + sysctlbyname("hw.machine", NULL, &size, NULL, 0); + char *machine = new char[size]; + if (sysctlbyname("hw.machine", machine, &size, NULL, 0) == -1) + perror("sysctlbyname(\"hw.machine\", ?)"); + else + Machine_ = machine; + + _H product; + _H safari; + + if (NSDictionary *info = [NSDictionary dictionaryWithContentsOfFile:@"/Applications/MobileSafari.app/Info.plist"]) { + product = [info objectForKey:@"SafariProductVersion"] ?: [info objectForKey:@"CFBundleShortVersionString"]; + safari = [info objectForKey:@"CFBundleVersion"]; + } + + NSString *agent([NSString stringWithFormat:@"%@/%@ CyF/%.2f", app, version, kCFCoreFoundationVersionNumber]); + + if (RegEx match = RegEx("([0-9]+(\\.[0-9]+)+).*", safari)) + agent = [NSString stringWithFormat:@"Safari/%@ %@", match[1], agent]; + if (RegEx match = RegEx("([0-9]+[A-Z][0-9]+[a-z]?).*", System_)) + agent = [NSString stringWithFormat:@"Mobile/%@ %@", match[1], agent]; + if (RegEx match = RegEx("([0-9]+(\\.[0-9]+)+).*", product)) + agent = [NSString stringWithFormat:@"Version/%@ %@", match[1], agent]; + + [CyteWebViewController setApplicationNameForUserAgent:agent]; } diff --git a/MobileCydia.mm b/MobileCydia.mm index 5a79c81..e927ab3 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -641,14 +641,10 @@ static _H Font18_; static _H Font18Bold_; static _H Font22Bold_; -static const char *Machine_ = NULL; -static _H System_; static NSString *SerialNumber_ = nil; static NSString *ChipID_ = nil; static NSString *BBSNum_ = nil; static _H UniqueID_; -static _H Product_; -static _H Safari_; static _H CollationLocale_; static _H CollationThumbs_; @@ -4316,7 +4312,7 @@ class CydiaLogCleaner : } - (NSString *) build { - return System_; + return [NSString stringWithUTF8String:System_]; } - (NSString *) coreFoundationVersionNumber { @@ -9846,6 +9842,7 @@ int main(int argc, char *argv[]) { _trace(); + CyteInitialize(@"Cydia", Cydia_); UpdateExternalStatus(0); Idiom_ = IsWildcat_ ? @"ipad" : @"iphone"; @@ -9988,46 +9985,11 @@ int main(int argc, char *argv[]) { perror("sysctlbyname(\"kern.maxproc\", #)"); } - sysctlbyname("kern.osversion", NULL, &size, NULL, 0); - char *osversion = new char[size]; - if (sysctlbyname("kern.osversion", osversion, &size, NULL, 0) == -1) - perror("sysctlbyname(\"kern.osversion\", ?)"); - else - System_ = [NSString stringWithUTF8String:osversion]; - - sysctlbyname("hw.machine", NULL, &size, NULL, 0); - char *machine = new char[size]; - if (sysctlbyname("hw.machine", machine, &size, NULL, 0) == -1) - perror("sysctlbyname(\"hw.machine\", ?)"); - else - Machine_ = machine; - - int64_t usermem(0); - size = sizeof(usermem); - if (sysctlbyname("hw.usermem", &usermem, &size, NULL, 0) == -1) - usermem = 0; - SerialNumber_ = (NSString *) CYIOGetValue("IOService:/", @"IOPlatformSerialNumber"); ChipID_ = [CYHex((NSData *) CYIOGetValue("IODeviceTree:/chosen", @"unique-chip-id"), true) uppercaseString]; BBSNum_ = CYHex((NSData *) CYIOGetValue("IOService:/AppleARMPE/baseband", @"snum"), false); UniqueID_ = UniqueIdentifier(device); - - if (NSDictionary *info = [NSDictionary dictionaryWithContentsOfFile:@"/Applications/MobileSafari.app/Info.plist"]) { - Product_ = [info objectForKey:@"SafariProductVersion"] ?: [info objectForKey:@"CFBundleShortVersionString"]; - Safari_ = [info objectForKey:@"CFBundleVersion"]; - } - - NSString *agent([NSString stringWithFormat:@"Cydia/%@ CyF/%.2f", Cydia_, kCFCoreFoundationVersionNumber]); - - if (RegEx match = RegEx("([0-9]+(\\.[0-9]+)+).*", Safari_)) - agent = [NSString stringWithFormat:@"Safari/%@ %@", match[1], agent]; - if (RegEx match = RegEx("([0-9]+[A-Z][0-9]+[a-z]?).*", System_)) - agent = [NSString stringWithFormat:@"Mobile/%@ %@", match[1], agent]; - if (RegEx match = RegEx("([0-9]+(\\.[0-9]+)+).*", Product_)) - agent = [NSString stringWithFormat:@"Version/%@ %@", match[1], agent]; - - [CyteWebViewController setApplicationNameForUserAgent:agent]; /* }}} */ /* Load Database {{{ */ SectionMap_ = [[[NSDictionary alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Sections" ofType:@"plist"]] autorelease]; @@ -10140,6 +10102,10 @@ int main(int argc, char *argv[]) { // XXX: this timeout might be important :( //_config->Set("Acquire::http::Timeout", 15); + int64_t usermem(0); + size = sizeof(usermem); + if (sysctlbyname("hw.usermem", &usermem, &size, NULL, 0) == -1) + usermem = 0; _config->Set("Acquire::http::MaxParallel", usermem >= 384 * 1024 * 1024 ? 16 : 3); mkdir([Cache("archives") UTF8String], 0755); -- cgit v1.2.3