// Copyright 2015 The Chromium OS 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 "chromiumos-wide-profiling/file_reader.h"

#include <string.h>

#include <memory>

namespace quipper {

FileReader::FileReader(const string& filename) {
  infile_ = fopen(filename.c_str(), "rb");
  if (!IsOpen()) {
    size_ = 0;
    return;
  }
  // Determine the size of the file.
  fseek(infile_, 0, SEEK_END);
  size_ = ftell(infile_);

  // Reset to the beginning of the file.
  fseek(infile_, 0, SEEK_SET);
}

FileReader::~FileReader() {
  if (IsOpen()) {
    fclose(infile_);
  }
}

bool FileReader::ReadData(const size_t size, void* dest) {
  if (Tell() + size > size_ || fread(dest, 1, size, infile_) < size)
    return false;
  return true;
}

bool FileReader::ReadString(const size_t size, string* str) {
  if (!ReadDataString(size, str))
    return false;

  // Truncate anything after a terminating null.
  size_t actual_length = strnlen(str->data(), size);
  str->resize(actual_length);
  return true;
}

}  // namespace quipper
