char buff[RECEIVE_BUFFER_SIZE];
};
+static inline int sort_vector_empty(struct sorting_vector *logs)
+{
+ return logs->last_processed == logs->size;
+}
+
+static inline void sort_vector_pop(struct sorting_vector *logs)
+{
+ free(logs->data[logs->last_processed]);
+ logs->last_processed = (logs->last_processed + 1) % sort_buffer_size;
+}
+
/**
* @brief Create struct fd_info
* @details Allocates memory for the struct and initializes it with given arguments
!log_should_print_line(l_file->format, entry.tag, entry.priority))
return -EPERM;
- if ((logs->size + 1) % sort_buffer_size == logs->last_processed) {
- free(logs->data[logs->last_processed]);
- logs->last_processed = (logs->last_processed + 1) % sort_buffer_size;
- }
+ if ((logs->size + 1) % sort_buffer_size == logs->last_processed)
+ sort_vector_pop(logs);
for (i = logs->size; i > logs->last_processed || (logs->size < logs->last_processed && i <= logs->size); --i) {
struct logger_entry * e = logs->data[(i ?: sort_buffer_size)-1];
}
} else {
int last_printed = logs->last_processed;
- while (!filled && logs->last_processed != logs->size)
+ while (!filled && !sort_vector_empty(logs))
if (process_log(logs->data[logs->last_processed],
logs->data[(logs->size ?: sort_buffer_size) - 1],
- l_file)) {
- free(logs->data[logs->last_processed]);
- logs->last_processed = (logs->last_processed + 1) % sort_buffer_size;
- } else
+ l_file))
+ sort_vector_pop(logs);
+ else
break;
- if (last_printed == logs->last_processed && logs->last_processed != logs->size) {
+ if (last_printed == logs->last_processed && !sort_vector_empty(logs)) {
resttime += timeout;
if (resttime >= DEFAULT_SORT_TIMEOUT)
sort_timeout = 0;
}
if (!accepting_logs) {
- if (logs->last_processed == logs->size)
+ if (sort_vector_empty(logs))
break;
else
continue;