blob: 306201630af9040e64e66633448603de2c0cba5c [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <fs-host/file_size_recorder.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
FileSizeRecorder::FileSizeRecorder() = default;
FileSizeRecorder::~FileSizeRecorder() = default;
bool FileSizeRecorder::OpenSizeFile(const char* const path) {
std::lock_guard<std::mutex> lock(sizes_file_lock_);
if (sizes_file_)
return false;
sizes_file_.reset(open(path, O_CREAT | O_TRUNC | O_WRONLY, 0644));
return bool{sizes_file_};
}
bool FileSizeRecorder::AppendSizeInformation(const char* const name, size_t size) {
std::lock_guard<std::mutex> lock(sizes_file_lock_);
if (!sizes_file_) {
return true;
}
if (dprintf(sizes_file_.get(), "%s=%zu\n", name, size) < 0) {
fprintf(stderr, "error: sizes file append error\n");
return false;
}
return true;
}