blob: f952955865894d86a12d1bbcd35706ea43a093b2 [file] [log] [blame]
John Park33858a32018-09-28 23:05:48 -07001#include "aos/util/file.h"
Brian Silverman61175fb2016-03-13 15:35:56 -04002
3#include <fcntl.h>
4#include <unistd.h>
5
Brian Silverman58899fd2019-03-24 11:03:11 -07006#include "aos/logging/logging.h"
John Park33858a32018-09-28 23:05:48 -07007#include "aos/scoped/scoped_fd.h"
Brian Silverman61175fb2016-03-13 15:35:56 -04008
9namespace aos {
10namespace util {
11
12::std::string ReadFileToStringOrDie(const ::std::string &filename) {
13 ::std::string r;
14 ScopedFD fd(PCHECK(open(filename.c_str(), O_RDONLY)));
15 while (true) {
16 char buffer[1024];
17 const ssize_t result = read(fd.get(), buffer, sizeof(buffer));
18 if (result < 0) {
19 PLOG(FATAL, "reading from %s", filename.c_str());
20 } else if (result == 0) {
21 break;
22 }
23 r.append(buffer, result);
24 }
25 return r;
26}
27
28} // namespace util
29} // namespace aos