// Copyright 2021 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef INIT_UTILS_H_
#define INIT_UTILS_H_

#include <string>
#include <vector>

#include <base/files/file.h>
#include <base/files/file_path.h>

namespace utils {

// Try to set root to the root device filepath, optionally removing the
// partition number
bool GetRootDevice(base::FilePath* root, bool strip_partition);

// Helper function to read a file to int
bool ReadFileToInt(const base::FilePath& path, int* value);

// Run encrypted-reboot-vault --action=create
bool CreateEncryptedRebootVault();

// Run encrypted-reboot-vault --action=unlock
bool UnlockEncryptedRebootVault();

// Run shutdown.
void Reboot();

void Restorecon(const base::FilePath& path,
                const std::vector<base::FilePath>& exclude,
                bool is_recursive,
                bool set_digests);
}  // namespace utils

#endif  // INIT_UTILS_H_
