}
static void
-dump_log_buffer_exitfn(void *context)
+dump_debug_log_buffer_exitfn(void *context)
{
if (!conf->debug) {
return;
}
char *path = format("%s.ccache-log", (const char *)context);
- cc_dump_log_buffer(path);
+ cc_dump_debug_log_buffer(path);
free(path);
}
cc_log("Object file: %s", output_obj);
// Need to dump log buffer as the last exit function to not lose any logs.
- exitfn_add_last(dump_log_buffer_exitfn, output_obj);
+ exitfn_add_last(dump_debug_log_buffer_exitfn, output_obj);
FILE *debug_text_file = NULL;
if (conf->debug) {
void cc_log(const char *format, ...) ATTR_FORMAT(printf, 1, 2);
void cc_bulklog(const char *format, ...) ATTR_FORMAT(printf, 1, 2);
void cc_log_argv(const char *prefix, char **argv);
-void cc_dump_log_buffer(const char *path);
+void cc_dump_debug_log_buffer(const char *path);
void fatal(const char *format, ...) ATTR_FORMAT(printf, 1, 2) ATTR_NORETURN;
void warn(const char *format, ...) ATTR_FORMAT(printf, 1, 2);
#include <tchar.h>
#endif
+// Destination for conf->log_file.
static FILE *logfile;
-static char *logbuffer;
-static size_t logbufsize;
-static size_t logsize;
-#define LOGBUFSIZ 1024
+// Buffer used for logs in conf->debug mode.
+static char *debug_log_buffer;
+
+// Allocated debug_log_buffer size.
+static size_t debug_log_buffer_capacity;
+
+// The amount of log data stored in debug_log_buffer.
+static size_t debug_log_size;
+
+#define DEBUG_LOG_BUFFER_MARGIN 1024
static bool
init_log(void)
{
extern struct conf *conf;
- if (logbuffer || logfile) {
+ if (debug_log_buffer || logfile) {
return true;
}
assert(conf);
if (conf->debug) {
- logbufsize = LOGBUFSIZ;
- logbuffer = x_malloc(logbufsize);
- logsize = 0;
+ debug_log_buffer_capacity = DEBUG_LOG_BUFFER_MARGIN;
+ debug_log_buffer = x_malloc(debug_log_buffer_capacity);
+ debug_log_size = 0;
}
if (str_eq(conf->log_file, "")) {
return conf->debug;
}
static void
-append_log(const char *s, size_t len)
+append_to_debug_log(const char *s, size_t len)
{
- assert(logbuffer);
- if (logsize + len + 1 > logbufsize) {
- logbufsize = logbufsize + len + 1 + LOGBUFSIZ;
- logbuffer = x_realloc(logbuffer, logbufsize);
+ assert(debug_log_buffer);
+ if (debug_log_size + len + 1 > debug_log_buffer_capacity) {
+ debug_log_buffer_capacity += len + 1 + DEBUG_LOG_BUFFER_MARGIN;
+ debug_log_buffer = x_realloc(debug_log_buffer, debug_log_buffer_capacity);
}
- memcpy(logbuffer + logsize, s, len);
- logsize += len;
+ memcpy(debug_log_buffer + debug_log_size, s, len);
+ debug_log_size += len;
}
static void
if (logfile) {
fputs(prefix, logfile);
}
- if (logbuffer) {
- append_log(prefix, strlen(prefix));
+ if (debug_log_buffer) {
+ append_to_debug_log(prefix, strlen(prefix));
}
}
warn_log_fail();
}
}
- if (logbuffer) {
+ if (debug_log_buffer) {
char buf[8192];
int len = vsnprintf(buf, sizeof(buf), format, aq);
if (len >= 0) {
- append_log(buf, MIN((size_t)len, sizeof(buf) - 1));
- append_log("\n", 1);
+ append_to_debug_log(buf, MIN((size_t)len, sizeof(buf) - 1));
+ append_to_debug_log("\n", 1);
}
}
va_end(aq);
warn_log_fail();
}
}
- if (logbuffer) {
- append_log(prefix, strlen(prefix));
+ if (debug_log_buffer) {
+ append_to_debug_log(prefix, strlen(prefix));
char *s = format_command(argv);
- append_log(s, strlen(s));
+ append_to_debug_log(s, strlen(s));
free(s);
}
}
// Copy the current log memory buffer to an output file.
void
-cc_dump_log_buffer(const char *path)
+cc_dump_debug_log_buffer(const char *path)
{
FILE *file = fopen(path, "w");
if (file) {
- (void) fwrite(logbuffer, 1, logsize, file);
+ (void) fwrite(debug_log_buffer, 1, debug_log_size, file);
fclose(file);
} else {
cc_log("Failed to open %s: %s", path, strerror(errno));