From: Jay Freeman (saurik) Date: Sun, 5 Jul 2015 07:53:52 +0000 (-0700) Subject: Just go ahead and use du (since we have it still). X-Git-Tag: v1.1.20~3 X-Git-Url: https://git.saurik.com/cydia.git/commitdiff_plain/d59938e3a2131e61f875f6eff48af5f89f57c732 Just go ahead and use du (since we have it still). --- diff --git a/MobileCydia.mm b/MobileCydia.mm index 1127bb04..55967590 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -4722,13 +4722,25 @@ static _H Diversions_; nil]; } -ssize_t DiskUsage(const char *path); - - (NSNumber *) du:(NSString *)path { - ssize_t usage(DiskUsage([path UTF8String])); - if (usage != -1) - usage /= 1024; - return [NSNumber numberWithUnsignedLong:usage]; + NSNumber *value(nil); + + FILE *du(popen([[NSString stringWithFormat:@"/usr/libexec/cydia/cydo /usr/libexec/cydia/du -ks %@", path] UTF8String], "r")); + if (du != NULL) { + char line[1024]; + while (fgets(line, sizeof(line), du) != NULL) { + size_t length(strlen(line)); + while (length != 0 && line[length - 1] == '\n') + line[--length] = '\0'; + if (char *tab = strchr(line, '\t')) { + *tab = '\0'; + value = [NSNumber numberWithUnsignedLong:strtoul(line, NULL, 0)]; + } + } + pclose(du); + } + + return value; } - (void) close {