// Copyright 2019 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. // Filesystem-related utility functions. #ifndef LIBBRILLO_BRILLO_FILES_FILE_UTIL_H_ #define LIBBRILLO_BRILLO_FILES_FILE_UTIL_H_ #include #include namespace brillo { SafeFD::Error IsValidFilename(const std::string& filename); // Obtain the canonical path of the file descriptor or base::FilePath() on // failure. BRILLO_EXPORT base::FilePath GetFDPath(int fd); // Open or create a child directory named |name| as a child of |parent| with // the specified permissions and ownership. Custom open flags can be set with // |flags|. The directory will be re-created if: // * The open operation fails (e.g. if |name| is not a directory). // * The permissions do not match. // * The ownership is different. // // Parameters // parent - An open SafeFD to the parent directory. // name - the name of the directory being created. It cannot have more than one // path component. BRILLO_EXPORT SafeFD::SafeFDResult OpenOrRemakeDir( SafeFD* parent, const std::string& name, int permissions = SafeFD::kDefaultDirPermissions, uid_t uid = getuid(), gid_t gid = getgid(), int flags = O_RDONLY | O_CLOEXEC); // Open or create a file named |name| under the directory |parent| with // the specified permissions and ownership. Custom open flags can be set with // |flags|. The file will be re-created if: // * The open operation fails (e.g. |name| is a directory). // * The permissions do not match. // * The ownership is different. // // Parameters // parent - An open SafeFD to the parent directory. // name - the name of the file being created. It cannot have more than one // path component. BRILLO_EXPORT SafeFD::SafeFDResult OpenOrRemakeFile( SafeFD* parent, const std::string& name, int permissions = SafeFD::kDefaultFilePermissions, uid_t uid = getuid(), gid_t gid = getgid(), int flags = O_RDWR | O_CLOEXEC); } // namespace brillo #endif // LIBBRILLO_BRILLO_FILES_FILE_UTIL_H_