// Copyright 2017 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 LIBBRILLO_POLICY_RESILIENT_POLICY_UTIL_H_
#define LIBBRILLO_POLICY_RESILIENT_POLICY_UTIL_H_

#include <map>
#include <string>

#include <base/files/file_path.h>
#include <brillo/brillo_export.h>

namespace policy {

// Returns a map from policy file index to absolute path. The default policy
// file is included at index 0 if present (despite not having an index in its
// filename).
BRILLO_EXPORT std::map<int, base::FilePath> GetSortedResilientPolicyFilePaths(
    const base::FilePath& default_policy_path);

// Returns the path to policy file corresponding to |index| value, based on
// the path of the default policy given by |default_policy_path|. Doesn't check
// the existence of the file on disk.
BRILLO_EXPORT base::FilePath GetResilientPolicyFilePathForIndex(
    const base::FilePath& default_policy_path, int index);

// Returns whether the |policy_path| file is a resilient file based on the name
// of the file, assuming the |default_policy_path| is the path of the default
// policy file. If successful, the |index_out| contains the index of the file as
// deducted from the name. No parsing of file contents is done here.
BRILLO_EXPORT bool ParseResilientPolicyFilePath(
    const base::FilePath& policy_path,
    const base::FilePath& default_policy_path,
    int* index_out);

}  // namespace policy

#endif  // LIBBRILLO_POLICY_RESILIENT_POLICY_UTIL_H_
