{
struct stats_file *file = user_data;
+ if (file == NULL)
+ return;
+
msync(file->addr, file->len, MS_SYNC);
munmap(file->addr, file->len);
file->name = NULL;
}
- if (file != NULL)
- g_free(file);
+ g_free(file);
}
static void update_first(struct stats_file *file)
void *addr;
int err;
+ DBG("file %p size %u addr %p len %u", file, size, file->addr,
+ file->len);
+
page_size = sysconf(_SC_PAGESIZE);
new_size = (size + page_size - 1) & ~(page_size - 1);
static int stats_open(struct stats_file *file,
const char *name)
{
+ DBG("file %p name %s", file, name);
+
file->name = g_strdup(name);
file->fd = TFR(open(file->name, O_RDWR | O_CREAT, 0644));
connman_error("open error %s for %s",
strerror(errno), file->name);
g_free(file->name);
+ file->name = NULL;
return -errno;
}
connman_error("create tempory file error %s for %s",
strerror(errno), file->name);
g_free(file->name);
+ file->name = NULL;
return -errno;
}
size_t size = 0;
int err;
+ DBG("file %p fd %d name %s", file, file->fd, file->name);
+
err = fstat(file->fd, &st);
if (err < 0) {
connman_error("fstat error %s for %s\n",
TFR(close(file->fd));
g_free(file->name);
+ file->name = NULL;
return -errno;
}
if (err < 0) {
TFR(close(file->fd));
g_free(file->name);
+ file->name = NULL;
return err;
}
{
file->fd = -1;
g_free(file->name);
+ file->name = NULL;
}
static int stats_file_close_swap(struct stats_file *history_file,