Loading src/common/compat.c +0 −40 Original line number Diff line number Diff line Loading @@ -547,43 +547,3 @@ tor_getpass(const char *prompt, char *output, size_t buflen) #error "No implementation for tor_getpass found!" #endif /* defined(HAVE_READPASSPHRASE) || ... */ } /** Return the amount of free disk space we have permission to use, in * bytes. Return -1 if the amount of free space can't be determined. */ int64_t tor_get_avail_disk_space(const char *path) { #ifdef HAVE_STATVFS struct statvfs st; int r; memset(&st, 0, sizeof(st)); r = statvfs(path, &st); if (r < 0) return -1; int64_t result = st.f_bavail; if (st.f_frsize) { result *= st.f_frsize; } else if (st.f_bsize) { result *= st.f_bsize; } else { return -1; } return result; #elif defined(_WIN32) ULARGE_INTEGER freeBytesAvail; BOOL ok; ok = GetDiskFreeSpaceEx(path, &freeBytesAvail, NULL, NULL); if (!ok) { return -1; } return (int64_t)freeBytesAvail.QuadPart; #else (void)path; errno = ENOSYS; return -1; #endif /* defined(HAVE_STATVFS) || ... */ } src/lib/fs/freespace.c 0 → 100644 +56 −0 Original line number Diff line number Diff line /* Copyright (c) 2003-2004, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. * Copyright (c) 2007-2018, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "lib/fs/files.h" #include "lib/cc/torint.h" #ifdef HAVE_SYS_STATVFS_H #include <sys/statvfs.h> #endif #ifdef _WIN32 #include <windows.h> #endif #include <string.h> /** Return the amount of free disk space we have permission to use, in * bytes. Return -1 if the amount of free space can't be determined. */ int64_t tor_get_avail_disk_space(const char *path) { #ifdef HAVE_STATVFS struct statvfs st; int r; memset(&st, 0, sizeof(st)); r = statvfs(path, &st); if (r < 0) return -1; int64_t result = st.f_bavail; if (st.f_frsize) { result *= st.f_frsize; } else if (st.f_bsize) { result *= st.f_bsize; } else { return -1; } return result; #elif defined(_WIN32) ULARGE_INTEGER freeBytesAvail; BOOL ok; ok = GetDiskFreeSpaceEx(path, &freeBytesAvail, NULL, NULL); if (!ok) { return -1; } return (int64_t)freeBytesAvail.QuadPart; #else (void)path; errno = ENOSYS; return -1; #endif /* defined(HAVE_STATVFS) || ... */ } src/lib/fs/include.am +1 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ src_lib_libtor_fs_a_SOURCES = \ src/lib/fs/conffile.c \ src/lib/fs/dir.c \ src/lib/fs/files.c \ src/lib/fs/freespace.c \ src/lib/fs/lockfile.c \ src/lib/fs/mmap.c \ src/lib/fs/path.c \ Loading Loading
src/common/compat.c +0 −40 Original line number Diff line number Diff line Loading @@ -547,43 +547,3 @@ tor_getpass(const char *prompt, char *output, size_t buflen) #error "No implementation for tor_getpass found!" #endif /* defined(HAVE_READPASSPHRASE) || ... */ } /** Return the amount of free disk space we have permission to use, in * bytes. Return -1 if the amount of free space can't be determined. */ int64_t tor_get_avail_disk_space(const char *path) { #ifdef HAVE_STATVFS struct statvfs st; int r; memset(&st, 0, sizeof(st)); r = statvfs(path, &st); if (r < 0) return -1; int64_t result = st.f_bavail; if (st.f_frsize) { result *= st.f_frsize; } else if (st.f_bsize) { result *= st.f_bsize; } else { return -1; } return result; #elif defined(_WIN32) ULARGE_INTEGER freeBytesAvail; BOOL ok; ok = GetDiskFreeSpaceEx(path, &freeBytesAvail, NULL, NULL); if (!ok) { return -1; } return (int64_t)freeBytesAvail.QuadPart; #else (void)path; errno = ENOSYS; return -1; #endif /* defined(HAVE_STATVFS) || ... */ }
src/lib/fs/freespace.c 0 → 100644 +56 −0 Original line number Diff line number Diff line /* Copyright (c) 2003-2004, Roger Dingledine * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. * Copyright (c) 2007-2018, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #include "lib/fs/files.h" #include "lib/cc/torint.h" #ifdef HAVE_SYS_STATVFS_H #include <sys/statvfs.h> #endif #ifdef _WIN32 #include <windows.h> #endif #include <string.h> /** Return the amount of free disk space we have permission to use, in * bytes. Return -1 if the amount of free space can't be determined. */ int64_t tor_get_avail_disk_space(const char *path) { #ifdef HAVE_STATVFS struct statvfs st; int r; memset(&st, 0, sizeof(st)); r = statvfs(path, &st); if (r < 0) return -1; int64_t result = st.f_bavail; if (st.f_frsize) { result *= st.f_frsize; } else if (st.f_bsize) { result *= st.f_bsize; } else { return -1; } return result; #elif defined(_WIN32) ULARGE_INTEGER freeBytesAvail; BOOL ok; ok = GetDiskFreeSpaceEx(path, &freeBytesAvail, NULL, NULL); if (!ok) { return -1; } return (int64_t)freeBytesAvail.QuadPart; #else (void)path; errno = ENOSYS; return -1; #endif /* defined(HAVE_STATVFS) || ... */ }
src/lib/fs/include.am +1 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ src_lib_libtor_fs_a_SOURCES = \ src/lib/fs/conffile.c \ src/lib/fs/dir.c \ src/lib/fs/files.c \ src/lib/fs/freespace.c \ src/lib/fs/lockfile.c \ src/lib/fs/mmap.c \ src/lib/fs/path.c \ Loading