applypatch: Fix the return type of FreeSpaceForFile().

Prior to this CL, FreeSpaceForFile() was returning `size_t`, which may
overflow on ILP32 when called on a partition with 4GiB+ free space.
Additionally, it was returning static_cast<size_t>(-1) on error, but the
caller in freecache.cpp didn't check for that.

This CL changes its return type to `int64_t`, and moves the function
into freecache.cpp since there's no external caller.

Test: Run recovery_unit_test on marlin.
Test: Code search shows no external user of FreeSpaceForFile().
Change-Id: I00f501a057726e1f1ab69f367c46c77b30f2d774
This commit is contained in:
Tao Bao
2018-07-11 16:32:10 -07:00
parent a0b2aad0f8
commit 49750f15ed
4 changed files with 51 additions and 25 deletions

View File

@@ -23,7 +23,6 @@
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/statfs.h>
#include <sys/types.h>
#include <unistd.h>
@@ -421,15 +420,6 @@ static size_t FileSink(const unsigned char* data, size_t len, int fd) {
return done;
}
size_t FreeSpaceForFile(const std::string& filename) {
struct statfs sf;
if (statfs(filename.c_str(), &sf) != 0) {
PLOG(ERROR) << "Failed to statfs " << filename;
return -1;
}
return sf.f_bsize * sf.f_bavail;
}
int CacheSizeCheck(size_t bytes) {
if (MakeFreeSpaceOnCache(bytes) < 0) {
LOG(ERROR) << "Failed to make " << bytes << " bytes available on /cache";