-
- 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"];
- 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];
-
- UserAgent_ = agent;