io: change slurp return type to vector
This commit is contained in:
parent
33b3b48c74
commit
653ada4bfd
8
io.cpp
8
io.cpp
@ -53,7 +53,7 @@ access_to_cflags (access_t a) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::unique_ptr<char []>
|
std::vector<char>
|
||||||
util::slurp (const boost::filesystem::path& path) {
|
util::slurp (const boost::filesystem::path& path) {
|
||||||
fd out (path, ACCESS_READ);
|
fd out (path, ACCESS_READ);
|
||||||
|
|
||||||
@ -67,12 +67,12 @@ util::slurp (const boost::filesystem::path& path) {
|
|||||||
|
|
||||||
// Allocate a buffer, and keep reading until it's full. We provide a null
|
// Allocate a buffer, and keep reading until it's full. We provide a null
|
||||||
// padding at the tail as a 'just in case' measure for string manipulation.
|
// padding at the tail as a 'just in case' measure for string manipulation.
|
||||||
unique_ptr <char []> buffer (new char[size + 1]);
|
std::vector<char> buffer (size + 1);
|
||||||
buffer.get()[size] = '\0';
|
buffer.data ()[size] = '\0';
|
||||||
|
|
||||||
CHECK_GE (size, 0);
|
CHECK_GE (size, 0);
|
||||||
size_t remaining = (size_t)size;
|
size_t remaining = (size_t)size;
|
||||||
char *cursor = buffer.get();
|
char *cursor = buffer.data ();
|
||||||
|
|
||||||
while (remaining) {
|
while (remaining) {
|
||||||
ssize_t consumed = ::read (out, cursor, remaining);
|
ssize_t consumed = ::read (out, cursor, remaining);
|
||||||
|
4
io.hpp
4
io.hpp
@ -39,11 +39,13 @@ namespace util {
|
|||||||
ACCESS_READWRITE = ACCESS_READ | ACCESS_WRITE
|
ACCESS_READWRITE = ACCESS_READ | ACCESS_WRITE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/// Reads an entire file into memory. Caller frees the result. Guarantees a
|
/// Reads an entire file into memory. Caller frees the result. Guarantees a
|
||||||
/// null trailing byte.
|
/// null trailing byte.
|
||||||
std::unique_ptr<char []>
|
std::vector<char>
|
||||||
slurp [[gnu::warn_unused_result]] (const boost::filesystem::path&);
|
slurp [[gnu::warn_unused_result]] (const boost::filesystem::path&);
|
||||||
|
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void
|
void
|
||||||
write (const boost::filesystem::path &, const T *data, size_t len);
|
write (const boost::filesystem::path &, const T *data, size_t len);
|
||||||
|
Loading…
Reference in New Issue
Block a user