История изменений
Исправление i-rinat, (текущая версия) :
Функциями.
// file.h
#pragma once
void log_set_file_name(const char *name);
const char *log_get_file_name(void);
void log_teardown(void);
// file.c
#include <string.h>
#include "file.h"
static char *filename = NULL;
void log_set_file_name(const char *name) {
  if (filename)
    free(filename);
  filename = strdup(name);
}
const char *log_get_file_name(void) {
  return filename;
}
void log_teardown(void) {
  if (filename) {
    free(filename);
    filename = NULL;
  }
}
Исходная версия i-rinat, :
Функциями.
// file.h
#pragma once
void log_set_file_name(const char *name);
const char *log_get_file_name(void);
void log_teardown(void);
// file.c
#include "file.h"
static char *filename = NULL;
void log_set_file_name(const char *name) {
  if (filename)
    free(filename);
  filename = strdup(name);
}
const char *log_get_file_name(void) {
  return filename;
}
void log_teardown(void) {
  if (filename) {
    free(filename);
    filename = NULL;
  }
}