Skip to content

Commit

Permalink
Update
Browse files Browse the repository at this point in the history
  • Loading branch information
Halo-Michael committed Aug 29, 2020
1 parent 4665ba9 commit 854760e
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 42 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export TARGET = iphone:clang:13.0:9.0
export ARCHS = arm64 arm64e
export VERSION = 0.3.7
export VERSION = 0.3.8
export DEBUG = no
CC = xcrun -sdk iphoneos clang -arch arm64 -arch arm64e -miphoneos-version-min=9.0
LDID = ldid
Expand Down
2 changes: 1 addition & 1 deletion control
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Package: com.michael.generatorautosetter
Version: 0.3.7
Version: 0.3.8
Section: Tweaks
Name: Generator Auto Setter
Author: halo_michael <[email protected]>
Expand Down
14 changes: 13 additions & 1 deletion preferenceloaderBundle/GeneratorAutoSetterRootListController.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,18 @@
return theAlert;
}

bool vaildGenerator(NSString *generator) {
if ([generator length] != 18 || [generator characterAtIndex:0] != '0' || [generator characterAtIndex:1] != 'x') {
return false;
}
for (int i = 2; i <= 17; i++) {
if (!isxdigit([generator characterAtIndex:i])) {
return false;
}
}
return true;
}

@interface GeneratorAutoSetterRootListController : PSListController

@end
Expand All @@ -23,7 +35,7 @@ - (NSArray *)specifiers {

- (void)setPreferenceValue:(id)value specifier:(PSSpecifier*)specifier {
if ([[specifier propertyForKey:@"key"] isEqualToString:@"generator"]) {
if ([[NSNumber numberWithUnsignedInteger:[value length]] intValue] != 18 || [value characterAtIndex:0] != '0' || [value characterAtIndex:1] != 'x') {
if (!vaildGenerator(value)) {
[self presentViewController:alert(@"setgenerator", [NSString stringWithFormat:@"Wrong generator \"%@\":\nFormat error!", value], @"OK") animated:YES completion:nil];
return;
}
Expand Down
71 changes: 32 additions & 39 deletions setgenerator.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,38 @@ void usage() {
printf("\t-s\tShow current setting.\n");
}

char *CFStringCopyUTF8String(CFStringRef aString) {
if (aString == NULL) {
return NULL;
bool vaildGenerator(char *generator) {
if (strlen(generator) != 18 || generator[0] != '0' || generator[1] != 'x') {
return false;
}
for (int i = 2; i <= 17; i++) {
if (!isxdigit(generator[i])) {
return false;
}
}
return true;
}

CFIndex length = CFStringGetLength(aString);
CFIndex maxSize = CFStringGetMaximumSizeForEncoding(length, kCFStringEncodingUTF8) + 1;
char *buffer = (char *)malloc(maxSize);
if (CFStringGetCString(aString, buffer, maxSize, kCFStringEncodingUTF8)) {
return buffer;
char *getGenerator() {
char *generator = "0x1111111111111111";
CFArrayRef keyList = CFPreferencesCopyKeyList(bundleID, CFSTR("mobile"), kCFPreferencesAnyHost);
if (keyList != NULL) {
if (CFArrayContainsValue(keyList, CFRangeMake(0, CFArrayGetCount(keyList)), CFSTR("generator"))) {
CFStringRef CFGenerator = CFPreferencesCopyValue(CFSTR("generator"), bundleID, CFSTR("mobile"), kCFPreferencesAnyHost);
CFIndex maxSize = CFStringGetMaximumSizeForEncoding(CFStringGetLength(CFGenerator), kCFStringEncodingUTF8) + 1;
generator = (char *)malloc(maxSize);
memset(generator, 0, maxSize);
CFStringGetCString(CFGenerator, generator, maxSize, kCFStringEncodingUTF8);
CFRelease(CFGenerator);
if (!vaildGenerator(generator)) {
free(generator);
generator = "0x1111111111111111";
CFPreferencesSetValue(CFSTR("generator"), NULL, bundleID, CFSTR("mobile"), kCFPreferencesAnyHost);
}
}
CFRelease(keyList);
}
free(buffer);
return NULL;
return generator;
}

int main(int argc, char **argv) {
Expand All @@ -39,43 +58,17 @@ int main(int argc, char **argv) {

if (argc == 2) {
if (strcmp(argv[1], "-s") == 0) {
CFArrayRef keyList = CFPreferencesCopyKeyList(bundleID, CFSTR("mobile"), kCFPreferencesAnyHost);
if (keyList != NULL) {
if (CFArrayContainsValue(keyList, CFRangeMake(0, CFArrayGetCount(keyList)), CFSTR("generator"))) {
char *generator = CFStringCopyUTF8String(CFPreferencesCopyValue(CFSTR("generator"), bundleID, CFSTR("mobile"), kCFPreferencesAnyHost));
if (strlen(generator) == 18 && generator[0] == '0' && generator[1] == 'x') {
printf("The currently set generator is %s.\n", generator);
CFRelease(keyList);
return 0;
} else {
CFPreferencesSetValue(CFSTR("generator"), NULL, bundleID, CFSTR("mobile"), kCFPreferencesAnyHost);
}
}
CFRelease(keyList);
}
printf("The currently set generator is 0x1111111111111111.\n");
printf("The currently set generator is %s.\n", getGenerator());
return 0;
} else if (strlen(argv[1]) != 18 || argv[1][0] != '0' || argv[1][1] != 'x') {
} else if (!vaildGenerator(argv[1])) {
usage();
return 3;
} else {
CFPreferencesSetValue(CFSTR("generator"), CFStringCreateWithCString(kCFAllocatorDefault, argv[1], kCFStringEncodingUTF8), bundleID, CFSTR("mobile"), kCFPreferencesAnyHost);
}
}

char *generator = "0x1111111111111111";
CFArrayRef keyList = CFPreferencesCopyKeyList(bundleID, CFSTR("mobile"), kCFPreferencesAnyHost);
if (keyList != NULL) {
if (CFArrayContainsValue(keyList, CFRangeMake(0, CFArrayGetCount(keyList)), CFSTR("generator"))) {
generator = CFStringCopyUTF8String(CFPreferencesCopyValue(CFSTR("generator"), bundleID, CFSTR("mobile"), kCFPreferencesAnyHost));
if (strlen(generator) != 18 || generator[0] != '0' || generator[1] != 'x') {
CFPreferencesSetValue(CFSTR("generator"), NULL, bundleID, CFSTR("mobile"), kCFPreferencesAnyHost);
generator = "0x1111111111111111";
}
}
CFRelease(keyList);
}
execvp("dimentio", (char *[]){"dimentio", generator, NULL});
execvp("dimentio", (char *[]){"dimentio", getGenerator(), NULL});
perror("dimentio");
return -1;
}

0 comments on commit 854760e

Please sign in to comment.