Browse Source

* source/files : fixes

master
Alex 'AdUser' Z 3 months ago
parent
commit
e4883c3f34
  1. 18
      src/sources/files.c

18
src/sources/files.c

@ -15,15 +15,15 @@
#define MODNAME "files"
#define FREE(x) { free(x); x = NULL; }
#define FCLOSE(x) { fclose(x); x = NULL; }
#define FCLOSE(x) { if (x) fclose(x); x = NULL; }
typedef struct f2b_file_t {
struct f2b_file_t *next;
uint32_t lines;
uint32_t stag;
FILE *fd;
char *path;
struct stat st;
FILE *fd;
char path[];
} f2b_file_t;
struct _config {
@ -74,7 +74,6 @@ file_close(f2b_file_t *file) {
assert(file != NULL);
FCLOSE(file->fd);
FREE(file->path);
file->lines = 0;
memset(&file->st, 0, sizeof(struct stat));
}
@ -167,16 +166,13 @@ start(cfg_t *cfg) {
return NULL;
for (size_t i = 0; i < globbuf.gl_pathc; i++) {
if ((file = calloc(1, sizeof(f2b_file_t))) == NULL) {
size_t slen = strlen(globbuf.gl_pathv[i]) + 1;
if ((file = calloc(1, sizeof(f2b_file_t) + slen)) == NULL) {
log_msg(cfg, error, "can't allocate memory: %s", strerror(errno));
continue;
}
if ((file->path = strndup(globbuf.gl_pathv[i], PATH_MAX)) == NULL) {
FREE(file);
continue;
}
strlcpy(file->path, globbuf.gl_pathv[i], slen);
if (!file_open(cfg, file)) {
FREE(file->path);
FREE(file);
continue;
}
@ -217,7 +213,7 @@ next(cfg_t *cfg, char *buf, size_t bufsize, bool reset) {
cfg->current = cfg->files;
for (f2b_file_t *file = cfg->current; file != NULL; file = file->next) {
if (file_rotated(cfg, file))
if (file->fd != NULL && file_rotated(cfg, file))
file_close(file);
if (file->fd == NULL && !file_open(cfg, file))
continue;

Loading…
Cancel
Save