diff --git a/libobs/util/platform-cocoa.m b/libobs/util/platform-cocoa.m index ad4c0ed41..0e4725043 100644 --- a/libobs/util/platform-cocoa.m +++ b/libobs/util/platform-cocoa.m @@ -358,6 +358,31 @@ uint64_t os_get_sys_free_size(void) return vmstat.free_count * vm_page_size; } +int64_t os_get_free_space(const char *path) +{ + if (path) { + NSURL *fileURL = [NSURL fileURLWithPath:@(path)]; + + NSDictionary *values = [fileURL resourceValuesForKeys:@[NSURLVolumeAvailableCapacityForOpportunisticUsageKey] + error:nil]; + + NSNumber *availableSpace = values[NSURLVolumeAvailableCapacityForOpportunisticUsageKey]; + + if (availableSpace) { + return availableSpace.longValue; + } + } + + return 0; +} + +uint64_t os_get_free_disk_space(const char *dir) +{ + int64_t free_space = os_get_free_space(dir); + + return (uint64_t) free_space; +} + static uint64_t total_memory = 0; static bool total_memory_initialized = false; diff --git a/libobs/util/platform-nix.c b/libobs/util/platform-nix.c index 2fe19b9f5..99fc98a74 100644 --- a/libobs/util/platform-nix.c +++ b/libobs/util/platform-nix.c @@ -571,6 +571,7 @@ void os_closedir(os_dir_t *dir) } } +#ifndef __APPLE__ int64_t os_get_free_space(const char *path) { struct statvfs info; @@ -581,6 +582,7 @@ int64_t os_get_free_space(const char *path) return ret; } +#endif struct posix_glob_info { struct os_glob_info base; @@ -1136,6 +1138,7 @@ uint64_t os_get_sys_total_size(void) } #endif +#ifndef __APPLE__ uint64_t os_get_free_disk_space(const char *dir) { struct statvfs info; @@ -1144,6 +1147,7 @@ uint64_t os_get_free_disk_space(const char *dir) return (uint64_t)info.f_frsize * (uint64_t)info.f_bavail; } +#endif char *os_generate_uuid(void) {