// Copyright 2016 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.

#ifndef ARC_CONTAINER_OBB_MOUNTER_UTIL_H_
#define ARC_CONTAINER_OBB_MOUNTER_UTIL_H_

#include <linux/msdos_fs.h>
#include <stdint.h>

#include <vector>

#include <base/strings/string16.h>

#include "arc/container/obb-mounter/volume.h"

namespace base {
class File;
}

namespace fat {

// Reads a little-endian 16-bit unsigned int from the given address.
// No alignment required for |data|.
uint16_t GetUnalignedLE16(const uint8_t* data);

// Appends the given slot's long file name characters to |out| in the reversed
// order.
void AppendLongFileNameCharactersReversed(const msdos_dir_slot& slot,
                                          std::vector<base::char16>* out);

// Reads the FAT (file allocation table) value at the given index.
// If there is an error, or reached EOF, returns kInvalidValue.
int64_t ReadFileAllocationTable(base::File* file,
                                FatType fat_type,
                                int64_t fat_start,
                                int64_t index);

}  // namespace fat

#endif  // ARC_CONTAINER_OBB_MOUNTER_UTIL_H_
