blob: 66ab52b73ba8c8cbda8a2a4179edc629912106bf [file] [log] [blame]
// Copyright 2014 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 <sys/types.h>
#include <string>
#include <base/files/file_path.h>
#ifndef LIBCHROMEOS_UI_CHROMEOS_UI_UTIL_H_
#define LIBCHROMEOS_UI_CHROMEOS_UI_UTIL_H_
namespace chromeos {
namespace ui {
namespace util {
// Converts an absolute path |path| into a base::FilePath. If |parent| is
// non-empty, |path| is rooted within it. For example, GetPath("/usr/bin/bar",
// base::FilePath("/tmp/foo")) returns base::FilePath("/tmp/foo/usr/bin/bar")).
base::FilePath GetReparentedPath(const std::string& path,
const base::FilePath& parent);
// Changes the ownership of |path| to |uid|:|gid| and sets its mode to |mode|.
// Skips updating ownership when not running as root (for use in tests).
bool SetPermissions(const base::FilePath& path,
uid_t uid,
gid_t gid,
mode_t mode);
// Ensures that |path| exists with the requested ownership and permissions,
// creating and/or updating it if needed. Returns true on success.
bool EnsureDirectoryExists(const base::FilePath& path,
uid_t uid,
gid_t gid,
mode_t mode);
// Runs the passed-in command and arguments synchronously, returning true on
// success. On failure, the command's output is logged. The path will be
// searched for |command|.
bool Run(const char* command, const char* arg, ...);
} // namespace util
} // namespace ui
} // namespace chromeos
#endif // LIBCHROMEOS_UI_CHROMEOS_UI_UTIL_H_