Directly log to log file

This commit is contained in:
topjohnwu
2020-12-03 20:15:18 -08:00
parent 797ba4fbf4
commit f152e8c33d
6 changed files with 87 additions and 52 deletions

View File

@@ -353,7 +353,7 @@ void file_readline(bool trim, const char *file, const function<bool(string_view)
free(buf);
}
void parse_prop_file(const char *file, const function<bool(string_view, string_view)> &&fn) {
void parse_prop_file(const char *file, const function<bool(string_view, string_view)> &fn) {
file_readline(true, file, [&](string_view line_view) -> bool {
char *line = (char *) line_view.data();
if (line[0] == '#')
@@ -422,3 +422,11 @@ void restore_folder(const char *dir, vector<raw_file> &files) {
setattr(path.data(), &file.attr);
}
}
sDIR make_dir(DIR *dp) {
return sDIR(dp, [](DIR *dp){ return dp ? closedir(dp) : 1; });
}
sFILE make_file(FILE *fp) {
return sFILE(fp, [](FILE *fp){ return fp ? fclose(fp) : 1; });
}

View File

@@ -67,7 +67,7 @@ static inline void file_readline(const char *file,
file_readline(false, file, fn);
}
void parse_prop_file(const char *file,
const std::function<bool(std::string_view, std::string_view)> &&fn);
const std::function<bool(std::string_view, std::string_view)> &fn);
void *__mmap(const char *filename, size_t *size, bool rw);
void frm_rf(int dirfd);
void clone_dir(int src, int dest);
@@ -113,27 +113,29 @@ void mmap_rw(const char *filename, B &buf, L &sz) {
using sFILE = std::unique_ptr<FILE, decltype(&fclose)>;
using sDIR = std::unique_ptr<DIR, decltype(&closedir)>;
sDIR make_dir(DIR *dp);
sFILE make_file(FILE *fp);
static inline sDIR open_dir(const char *path) {
return sDIR(opendir(path), closedir);
return make_dir(opendir(path));
}
static inline sDIR xopen_dir(const char *path) {
return sDIR(xopendir(path), closedir);
return make_dir(xopendir(path));
}
static inline sDIR xopen_dir(int dirfd) {
return sDIR(xfdopendir(dirfd), closedir);
return make_dir(xfdopendir(dirfd));
}
static inline sFILE open_file(const char *path, const char *mode) {
return sFILE(fopen(path, mode), fclose);
return make_file(fopen(path, mode));
}
static inline sFILE xopen_file(const char *path, const char *mode) {
return sFILE(xfopen(path, mode), fclose);
return make_file(xfopen(path, mode));
}
static inline sFILE xopen_file(int fd, const char *mode) {
return sFILE(xfdopen(fd, mode), fclose);
return make_file(xfdopen(fd, mode));
}

View File

@@ -23,7 +23,7 @@ static int strm_close(void *v) {
}
sFILE make_stream_fp(stream_ptr &&strm) {
sFILE fp(funopen(strm.release(), strm_read, strm_write, strm_seek, strm_close), fclose);
auto fp = make_file(funopen(strm.release(), strm_read, strm_write, strm_seek, strm_close));
setbuf(fp.get(), nullptr);
return fp;
}