diff options
Diffstat (limited to 'frontend/print.cpp')
-rw-r--r-- | frontend/print.cpp | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/frontend/print.cpp b/frontend/print.cpp deleted file mode 100644 index 0c60892..0000000 --- a/frontend/print.cpp +++ /dev/null @@ -1,73 +0,0 @@ -#include <cstdarg> -#include <string> -#include <unistd.h> - -#include "print.h" - -using namespace std; - -static string va_stringf(va_list args, const char * fmt) { - va_list args_copy; - va_copy(args_copy, args); - - size_t sz = vsnprintf(NULL, 0, fmt, args_copy) + 1; - char * msg = (char *) malloc(sz); - va_end(args_copy); - - vsnprintf(msg, sz, fmt, args); - - string out = msg; - free(msg); - - va_end(args); - - return out; -} - -static string stringf(const char * fmt, ...) { - va_list args; - va_start(args, fmt); - string out = va_stringf(args, fmt); - va_end(args); - return out; -} - -void lprtf(const char * fmt, ...) { - va_list args; - va_start(args, fmt); - string formatted = va_stringf(args, fmt); - va_end(args); - - fwrite(formatted.c_str(), 1, formatted.size(), stdout); - fflush(stdout); - - SessionLog::get().append(formatted); -} - -SessionLog & SessionLog::get() { - static SessionLog instance; - return instance; -} - -SessionLog::SessionLog() { - if (!this->enable) return; - - string filename = stringf("%lu.log", getpid()); - FILE * file = fopen(filename.c_str(), "w+"); - this->file = { file, [] (FILE * file) { fclose(file); } }; -} - -void SessionLog::append(const string & str) const { - this->append(str.data(), str.size()); -} - -void SessionLog::append(const char * str) const { - this->append(str, strlen(str)); -} - -void SessionLog::append(const char * buf, size_t buf_size) const { - if (this->file == nullptr) return; - if (buf_size == 0) return; - fwrite(buf, 1, buf_size, this->file.get()); -} - |