1dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes/*
2dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * Copyright (C) 2015 The Android Open Source Project
3dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes *
4dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License");
5dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * you may not use this file except in compliance with the License.
6dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * You may obtain a copy of the License at
7dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes *
8dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes *      http://www.apache.org/licenses/LICENSE-2.0
9dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes *
10dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * Unless required by applicable law or agreed to in writing, software
11dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
12dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * See the License for the specific language governing permissions and
14dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * limitations under the License.
15dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes */
16dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes
17c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albert#ifndef BASE_FILE_H
18c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albert#define BASE_FILE_H
19dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes
20a7870d88167f619e758b5bcd15b410d16da7c16bNicolas Geoffray#include <sys/stat.h>
21c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albert#include <string>
22dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes
23dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughesnamespace android {
24c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albertnamespace base {
25dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes
26f682b4786a4093efb23bf80d69bf80eb274b145bElliott Hughesbool ReadFdToString(int fd, std::string* content);
27dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughesbool ReadFileToString(const std::string& path, std::string* content);
28f682b4786a4093efb23bf80d69bf80eb274b145bElliott Hughes
29dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughesbool WriteStringToFile(const std::string& content, const std::string& path);
30f682b4786a4093efb23bf80d69bf80eb274b145bElliott Hughesbool WriteStringToFd(const std::string& content, int fd);
31d79801d60da1bd3d3e57f76c157f7e02d326243cElliott Hughes
32d79801d60da1bd3d3e57f76c157f7e02d326243cElliott Hughes#if !defined(_WIN32)
33202f024dee8a450b92b17b2a4b90d412879321bdElliott Hughesbool WriteStringToFile(const std::string& content, const std::string& path,
34202f024dee8a450b92b17b2a4b90d412879321bdElliott Hughes                       mode_t mode, uid_t owner, gid_t group);
35d79801d60da1bd3d3e57f76c157f7e02d326243cElliott Hughes#endif
36dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes
3756085edbf8c74a3a123f08e44be6e8f294deb465Elliott Hughesbool ReadFully(int fd, void* data, size_t byte_count);
3856085edbf8c74a3a123f08e44be6e8f294deb465Elliott Hughesbool WriteFully(int fd, const void* data, size_t byte_count);
3956085edbf8c74a3a123f08e44be6e8f294deb465Elliott Hughes
40c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albert}  // namespace base
41c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albert}  // namespace android
42dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes
43c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albert#endif  // BASE_FILE_H
44