Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/param.h>
- #include <sys/mount.h>
- #include <sys/statvfs.h>
- SInt64 get_root_avail_capacity(void)
- {
- CFURLRef root = CFURLCreateWithFileSystemPath(NULL, CFSTR("/"), kCFURLPOSIXPathStyle, YES);
- CFErrorRef err = NULL;
- CFTypeRef ref;
- SInt64 val = -1;
- Boolean ok;
- if (root == NULL) goto out_exit;
- ok = CFURLCopyResourcePropertyForKey(root, kCFURLVolumeAvailableCapacityKey, &ref, &err);
- if (ok) {
- assert(CFGetTypeID(ref) == CFNumberGetTypeID());
- assert(CFNumberGetType(ref) == kCFNumberSInt64Type);
- ok = CFNumberGetValue((CFNumberRef) ref, kCFNumberSInt64Type, &val);
- assert(ok);
- CFRelease(ref);
- } else {
- assert(err != NULL);
- NSLog(@"[ERR] CFURLCopyResourcePropertyForKey() fail err: %@", err);
- CFRelease(err);
- }
- CFRelease(root);
- out_exit:
- return val;
- }
- int64_t get_root_avail_capacity2(void)
- {
- int64_t sz = -1;
- struct statvfs v;
- (void) memset(&v, 0, sizeof(v));
- if (statvfs("/", &v) != 0) {
- fprintf(stderr, "statvfs(3) fail errno: %d\n", errno);
- goto out_exit;
- } else if (v.f_bavail <= 0 || v.f_frsize <= 0) {
- goto out_exit;
- }
- sz = v.f_bavail * v.f_frsize;
- out_exit:
- return sz;
- }
- int64_t get_root_avail_capacity3(void)
- {
- int64_t sz = -1;
- struct statfs v;
- (void) memset(&v, 0, sizeof(v));
- if (statfs("/", &v) != 0) {
- fprintf(stderr, "statfs(2) fail errno: %d\n", errno);
- goto out_exit;
- } else if (v.f_bavail <= 0 || v.f_bsize <= 0) {
- goto out_exit;
- }
- sz = v.f_bavail * v.f_bsize;
- out_exit:
- return sz;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement