return ef;
}
+
+static void exfile_cleanup_entry(exfile_entry_t *entry)
+{
+ TALLOC_FREE(entry->filename);
+
+ close(entry->fd);
+ entry->hash = 0;
+ entry->fd = -1;
+ entry->dup = -1;
+}
+
/** Open a new log file, or maybe an existing one.
*
* When multithreaded, the FD is locked via a mutex. This way we're
* This will block forever if a thread is
* doing something stupid.
*/
- TALLOC_FREE(ef->entries[i].filename);
- ef->entries[i].hash = 0;
- close(ef->entries[i].fd);
- ef->entries[i].fd = -1;
- ef->entries[i].dup = -1;
+ exfile_cleanup_entry(&ef->entries[i]);
}
}
fr_strerror_printf("Failed to seek in file %s: %s", filename, strerror(errno));
error:
- ef->entries[i].hash = 0;
- TALLOC_FREE(ef->entries[i].filename);
- close(ef->entries[i].fd);
- ef->entries[i].fd = -1;
- ef->entries[i].dup = -1;
+ exfile_cleanup_entry(&ef->entries[i]);
PTHREAD_MUTEX_UNLOCK(&(ef->mutex));
return -1;