/// Transition into a state that allows reading and printing out logs
/// Return values > 0 mean everything went fine but we don't want to print
- int (*prepare_print)(struct fd_info *fdi, int dump, log_filter *filter_object);
+ int (*prepare_print)(struct fd_info *fdi, int dump, struct dlogutil_filter_options *filter_object);
/// Clear the buffer
int (*clear)(struct fd_info *fdi);
void fdi_free(struct fd_info *fdi);
void fdi_array_free(struct fd_info ***arr);
bool fdi_has_log(struct fd_info *fdi);
-int fdi_push_log(struct fd_info *fdi, struct sort_vector *logs, dlogutil_write_callback callback, void *userdata, log_filter *filter);
+int fdi_push_log(struct fd_info *fdi, struct sort_vector *logs, dlogutil_write_callback callback, void *userdata, struct dlogutil_filter_options *filter);
struct dlogutil_entry *fdi_extract_entry(struct fd_info *fdi);
int fdi_read(struct fd_info *fdi);
bool color;
};
-typedef struct log_filter_t log_filter;
+struct dlogutil_filter_options *log_filter_new();
-log_filter *log_filter_new();
-
-void log_filter_free(log_filter *p_filter);
+void log_filter_free(struct dlogutil_filter_options *p_filter);
/**
* Returns a deep copy of the passed object.
*/
-log_filter *log_filter_from_filter(const log_filter *p_filter);
+struct dlogutil_filter_options *log_filter_from_filter(const struct dlogutil_filter_options *p_filter);
/**
* Returns FORMAT_OFF on invalid string
*
*/
-int log_add_filter_rule(log_filter *p_filter, const char *filterExpression);
+int log_add_filter_rule(struct dlogutil_filter_options *p_filter, const char *filterExpression);
/**
* filterString: a whitespace-separated set of filter expressions
*
*/
-int log_add_filter_string(log_filter *p_filter, const char *filterString);
+int log_add_filter_string(struct dlogutil_filter_options *p_filter, const char *filterString);
/**
*
*/
-int log_add_filter_pid(log_filter *p_filter, pid_t pid);
+int log_add_filter_pid(struct dlogutil_filter_options *p_filter, pid_t pid);
/**
*
*/
-int log_add_filter_tid(log_filter *p_filter, pid_t tid);
+int log_add_filter_tid(struct dlogutil_filter_options *p_filter, pid_t tid);
-void log_filter_clear(log_filter *p_filter);
+void log_filter_clear(struct dlogutil_filter_options *p_filter);
struct tag_and_prio {
char *tag;
};
} FilterInfo;
-list_head log_filter_get_list(log_filter *p_filter);
+list_head log_filter_get_list(struct dlogutil_filter_options *p_filter);
-log_priority log_filter_get_global_priority(log_filter *p_filter, bool *is_exact);
+log_priority log_filter_get_global_priority(struct dlogutil_filter_options *p_filter, bool *is_exact);
/**
* returns true if this log line should be printed based on its entry
* data (priority, tag, pid and tid), and false if it should not
*/
bool log_should_print_line(
- log_filter *p_filter, const struct dlogutil_entry *entry);
+ struct dlogutil_filter_options *p_filter, const struct dlogutil_entry *entry);
/**
* Returns pointer to log entry tag
#include <logconfig.h>
struct additional_options {
- log_filter *filter_object;
+ struct dlogutil_filter_options *filter_object;
size_t logs_dump;
size_t logs_size;
};
struct reader {
struct fd_entity fd_entity;
struct log_file file;
- log_filter* filter;
+ struct dlogutil_filter_options* filter;
struct log_buffer* buf_ptr;
int read_fd;
bool dumpcount;
free(*arr);
}
-int fdi_push_log(struct fd_info *fdi, struct sort_vector *logs, dlogutil_write_callback callback, void *userdata, log_filter *filter)
+int fdi_push_log(struct fd_info *fdi, struct sort_vector *logs, dlogutil_write_callback callback, void *userdata, struct dlogutil_filter_options *filter)
{
assert(fdi);
assert(userdata);
fdi->priv_data = NULL;
}
-static int logger_prepare_print(struct fd_info *fdi, int dump, log_filter *filter_object)
+static int logger_prepare_print(struct fd_info *fdi, int dump, struct dlogutil_filter_options *filter_object)
{
assert(fdi);
struct logger_priv_data *const lpd = (struct logger_priv_data *)fdi->priv_data;
* @param[in] sock_fd Socket file descriptor
* @return 0 on success, -errno on failure
*/
-static int send_logger_request(log_filter *filters, int dump, int sock_fd)
+static int send_logger_request(struct dlogutil_filter_options *filters, int dump, int sock_fd)
{
assert(filters);
assert(sock_fd >= 0);
fdi->priv_data = NULL;
}
-static int pipe_prepare_print(struct fd_info *fdi, int dump, log_filter *filter_object)
+static int pipe_prepare_print(struct fd_info *fdi, int dump, struct dlogutil_filter_options *filter_object)
{
assert(filter_object);
assert(fdi);
#define FILTERINFO_PID_NONE -1
#define FILTERINFO_TID_NONE -1
-struct log_filter_t {
+struct dlogutil_filter_options {
list_head filters;
log_priority global_pri;
bool exact_global_pri;
* @param[in] entry The log entry to filter
* @return True if the line should be printed, else false
*/
-bool log_should_print_line(log_filter *p_filter, const struct dlogutil_entry *entry)
+bool log_should_print_line(struct dlogutil_filter_options *p_filter, const struct dlogutil_entry *entry)
{
assert(p_filter);
assert(entry);
* @return The new structure (or NULL if allocation failed).
* @see log_filter_free
*/
-log_filter *log_filter_new(void)
+struct dlogutil_filter_options *log_filter_new(void)
{
- log_filter *p_ret;
+ struct dlogutil_filter_options *p_ret;
- p_ret = calloc(1, sizeof(log_filter));
+ p_ret = calloc(1, sizeof(struct dlogutil_filter_options));
if (!p_ret)
return NULL;
* @return The new structure (or NULL if allocation failed)
* @see log_filter_free
*/
-log_filter *log_filter_from_filter(const log_filter *p_filter)
+struct dlogutil_filter_options *log_filter_from_filter(const struct dlogutil_filter_options *p_filter)
{
- log_filter *p_ret;
+ struct dlogutil_filter_options *p_ret;
if (!(p_ret = log_filter_new()))
return NULL;
* @details Deallocates the entire log format structure
* @param[in] p_format The structure to deallocate
*/
-void log_filter_free(log_filter *p_filter)
+void log_filter_free(struct dlogutil_filter_options *p_filter)
{
if (p_filter) {
log_filter_clear(p_filter);
}
}
-void log_filter_clear(log_filter *p_filter)
+void log_filter_clear(struct dlogutil_filter_options *p_filter)
{
assert(p_filter);
p_filter->exact_global_pri = false;
}
-list_head log_filter_get_list(log_filter *p_filter)
+list_head log_filter_get_list(struct dlogutil_filter_options *p_filter)
{
assert(p_filter);
return p_filter->filters;
}
-log_priority log_filter_get_global_priority(log_filter *p_filter, bool *is_exact)
+log_priority log_filter_get_global_priority(struct dlogutil_filter_options *p_filter, bool *is_exact)
{
assert(is_exact);
assert(p_filter);
* @return 0 on success, else -1
* @remarks Assumes single threaded execution
*/
-int log_add_filter_rule(log_filter *p_filter,
+int log_add_filter_rule(struct dlogutil_filter_options *p_filter,
const char *filterExpression)
{
size_t tagNameLength, priPosition;
* @return 0 on success, else -1
* @remarks Assumes single threaded execution
*/
-int log_add_filter_string(log_filter *p_filter,
+int log_add_filter_string(struct dlogutil_filter_options *p_filter,
const char *filterString)
{
assert(p_filter);
* @return 0 on success, else -ENOMEM
* @remarks Assumes single threaded execution
*/
-int log_add_filter_pid(log_filter *p_filter, pid_t pid)
+int log_add_filter_pid(struct dlogutil_filter_options *p_filter, pid_t pid)
{
assert(p_filter);
* @return 0 on success, else -ENOMEM
* @remarks Assumes single threaded execution
*/
-int log_add_filter_tid(log_filter *p_filter, pid_t tid)
+int log_add_filter_tid(struct dlogutil_filter_options *p_filter, pid_t tid)
{
assert(p_filter);
return best_fdi;
}
-int put_logs_into_vector(struct fd_info **data_fds, int fd_count, int nfds, struct sort_vector *logs, dlogutil_write_callback callback, void *userdata, log_filter *filter)
+int put_logs_into_vector(struct fd_info **data_fds, int fd_count, int nfds, struct sort_vector *logs, dlogutil_write_callback callback, void *userdata, struct dlogutil_filter_options *filter)
{
assert(data_fds);
assert(logs);
}
static bool should_print_line = true;
-bool __wrap_log_should_print_line(log_filter *p_filter, const struct dlogutil_entry *entry)
+bool __wrap_log_should_print_line(struct dlogutil_filter_options *p_filter, const struct dlogutil_entry *entry)
{
- assert(p_filter == (log_filter *)404);
+ assert(p_filter == (struct dlogutil_filter_options *)404);
assert(entry == (struct dlogutil_entry *)0xBADFEEL);
return should_print_line;
}
should_print_line = false;
expect_free1 = (void *) 0xBADFEEL;
- assert(0 == fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (log_filter *) 404));
+ assert(0 == fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (struct dlogutil_filter_options *) 404));
should_print_line = true;
fail_extract = true;
- assert(-ENOMEM == fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (log_filter *) 404));
+ assert(-ENOMEM == fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (struct dlogutil_filter_options *) 404));
fail_extract = false;
sv.size = 99;
expect_free1 = NULL;
- assert(!fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (log_filter *) 404));
+ assert(!fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (struct dlogutil_filter_options *) 404));
assert(sv_pushed);
assert(!sv_flushed);
sv_pushed = false;
sv_push_retval = -83;
expect_free1 = &G_fdi;
- assert(-83 == fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (log_filter *) 404));
+ assert(-83 == fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (struct dlogutil_filter_options *) 404));
assert(sv_pushed);
assert(!sv_flushed);
sv_push_retval = 0;
sv.old_logs_dumped = false;
sv.start.tv_sec = 2;
sv.start.tv_nsec = 0;
- assert(!fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (log_filter *) 404));
+ assert(!fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (struct dlogutil_filter_options *) 404));
assert(!sv.old_logs_dumped);
sv.old_logs_dumped = false;
sv.start.tv_sec = 1;
sv.start.tv_nsec = 1;
- assert(!fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (log_filter *) 404));
+ assert(!fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (struct dlogutil_filter_options *) 404));
assert(!sv.old_logs_dumped);
sv.old_logs_dumped = false;
sv.start.tv_sec = 1;
sv.start.tv_nsec = 0;
- assert(!fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (log_filter *) 404));
+ assert(!fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (struct dlogutil_filter_options *) 404));
assert(sv.old_logs_dumped);
sv.old_logs_dumped = false;
sv.start.tv_sec = 0;
sv.start.tv_nsec = 2;
- assert(!fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (log_filter *) 404));
+ assert(!fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (struct dlogutil_filter_options *) 404));
assert(sv.old_logs_dumped);
sv_pushed = false;
sv.size = 0;
expect_free1 = (void *) 0xBADFEEL;
- assert(!fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (log_filter *) 404));
+ assert(!fdi_push_log(&G_fdi, &sv, callback, (void *) 0xDEFACED, (struct dlogutil_filter_options *) 404));
assert(!sv_pushed);
assert(sv_flushed);
static size_t filters_added;
static char *const filter_strs[] = {"H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne"};
-int __wrap_log_add_filter_string(log_filter *p_filter, const char *filterString)
+int __wrap_log_add_filter_string(struct dlogutil_filter_options *p_filter, const char *filterString)
{
assert(filterString);
- assert(p_filter == (log_filter *) 0xCA5CADE);
+ assert(p_filter == (struct dlogutil_filter_options *) 0xCA5CADE);
++filters_added;
for (size_t i = 0; i < NELEMS(filter_strs); ++i)
assert(2019 == sz);
expected_ioctl = -1;
- assert(!ops_logger.prepare_print(&fdi, DLOGUTIL_MODE_CONTINUOUS, (log_filter *) 0xCA5CADE));
+ assert(!ops_logger.prepare_print(&fdi, DLOGUTIL_MODE_CONTINUOUS, (struct dlogutil_filter_options *) 0xCA5CADE));
expected_ioctl = LOGGER_GET_LOG_LEN;
ioctl_ret = -67;
- assert(-67 == ops_logger.prepare_print(&fdi, 123, (log_filter *) 0xCA5CADE));
+ assert(-67 == ops_logger.prepare_print(&fdi, 123, (struct dlogutil_filter_options *) 0xCA5CADE));
expected_ioctl = LOGGER_GET_LOG_LEN;
ioctl_ret = 0;
- assert(1 == ops_logger.prepare_print(&fdi, 123, (log_filter *) 0xCA5CADE));
+ assert(1 == ops_logger.prepare_print(&fdi, 123, (struct dlogutil_filter_options *) 0xCA5CADE));
fail_read = true;
assert(-334 == ops_logger.read(&fdi));
assert(!ops_pipe.has_log(&info));
- log_filter *filter = log_filter_new();
+ struct dlogutil_filter_options *filter = log_filter_new();
assert(filter);
log_add_filter_string(filter, "filter0");
* @param[in] expected The expected result returned by log_should_print_line function
* @return 0 if the log_should_print_line returns the expected result, 1 otherwise
*/
-int check_print_line_tid_single(int line, log_filter *p_filter, pthread_t tid, bool expected)
+int check_print_line_tid_single(int line, struct dlogutil_filter_options *p_filter, pthread_t tid, bool expected)
{
struct dlogutil_entry_with_msg entry;
* @return Number of tids for which log_should_print_line returns wrong answer
*/
-int check_print_line_tid(int line, log_filter *p_filter, pthread_t tid)
+int check_print_line_tid(int line, struct dlogutil_filter_options *p_filter, pthread_t tid)
{
int result = 0;
for (int tid_no = 0; tid_no < NELEMS(pid_tid_filter_list); tid_no++)
* @param[in] expected The expected result returned by log_should_print_line function
* @return 0 if the log_should_print_line returns the expected result, 1 otherwise
*/
-int check_print_line_pid_single(int line, log_filter *p_filter, pid_t pid, bool expected)
+int check_print_line_pid_single(int line, struct dlogutil_filter_options *p_filter, pid_t pid, bool expected)
{
struct dlogutil_entry_with_msg entry;
* @return Number of pids for which log_should_print_line returns wrong answer
*/
-int check_print_line_pid(int line, log_filter *p_filter, pid_t pid)
+int check_print_line_pid(int line, struct dlogutil_filter_options *p_filter, pid_t pid)
{
int result = 0;
for (int pid_no = 0; pid_no < NELEMS(pid_tid_filter_list); pid_no++)
* @param[in] expected The expected result returned by log_should_print_line function
* @return 0 if the log_should_print_line returns the expected result, 1 otherwise
*/
-int check_print_line_tag_prior(int line, log_filter *p_filter, char *tag, int priority, bool expected)
+int check_print_line_tag_prior(int line, struct dlogutil_filter_options *p_filter, char *tag, int priority, bool expected)
{
struct dlogutil_entry_with_msg entry;
* @return Number of priorities for which log_should_print_line returns wrong answer
*/
-int check_print_line_tag(int line, log_filter *p_filter, char *tag, int priors)
+int check_print_line_tag(int line, struct dlogutil_filter_options *p_filter, char *tag, int priors)
{
int result = 0;
result += check_print_line_tag_prior(line, p_filter, tag, DLOG_VERBOSE, (priors & verbose) > 0);
int err;
int result = 0;
char *tag, *tag_short, *tag_middle, *tag_long;
- log_filter *p_filter;
+ struct dlogutil_filter_options *p_filter;
struct dlogutil_entry_with_msg entry;
entry.header.tid = 0;
void check_syscall_failure_handling()
{
- log_filter *const filter = log_filter_new();
+ struct dlogutil_filter_options *const filter = log_filter_new();
assert(filter);
assert(!log_add_filter_tid(filter, 123));
assert(!log_add_filter_pid(filter, 456));
assert(!log_add_filter_rule(filter, "FOO:E"));
- log_filter *const clone = log_filter_from_filter(filter);
+ struct dlogutil_filter_options *const clone = log_filter_from_filter(filter);
assert(clone);
log_filter_free(clone);
assert(!log_buffer_get_message(&entry));
assert(!log_buffer_get_tag(&entry));
- log_filter *const filter = log_filter_new();
+ struct dlogutil_filter_options *const filter = log_filter_new();
assert(filter);
assert(-1 == log_add_filter_rule(filter, ":D")); // >mfw tagless rule gets processed correctly
log_filter_free(filter);
bool process_log(const struct dlogutil_entry *e, struct timespec reference_ts, enum dlogutil_sorting_order stamp_type, dlogutil_write_callback callback, void *userdata, long timeout, int *callback_ret);
struct fd_info *find_earliest_log(struct fd_info **data_fds, int fd_count, enum dlogutil_sorting_order sort_by);
-int put_logs_into_vector(struct fd_info **data_fds, int fd_count, int nfds, struct sort_vector *logs, dlogutil_write_callback callback, void *userdata, log_filter *filter);
+int put_logs_into_vector(struct fd_info **data_fds, int fd_count, int nfds, struct sort_vector *logs, dlogutil_write_callback callback, void *userdata, struct dlogutil_filter_options *filter);
int validate_buffers(int *enabled_buffers);
int written_logs = 0;
return 0;
}
-bool __wrap_log_should_print_line(log_filter *p_filter, const struct dlogutil_entry *entry)
+bool __wrap_log_should_print_line(struct dlogutil_filter_options *p_filter, const struct dlogutil_entry *entry)
{
return true;
}
}
int fdi_push_log_ret = 0;
-int __wrap_fdi_push_log(struct fd_info *fdi, struct sort_vector *logs, dlogutil_write_callback callback, void *userdata, log_filter *filter)
+int __wrap_fdi_push_log(struct fd_info *fdi, struct sort_vector *logs, dlogutil_write_callback callback, void *userdata, struct dlogutil_filter_options *filter)
{
- assert(filter == (log_filter *)0xEEE);
+ assert(filter == (struct dlogutil_filter_options *)0xEEE);
if (fdi_push_log_ret != 0)
return fdi_push_log_ret;
struct dlogutil_entry *ent = calloc(1, sizeof(struct dlogutil_entry));
assert(written_logs == 1);
assert(sort_vector_used_size(&sv) == 0);
- assert(put_logs_into_vector(fds, 0, 1, &sv, callback, (void *)0xDDD, (log_filter *)0xEEE) == 0);
+ assert(put_logs_into_vector(fds, 0, 1, &sv, callback, (void *)0xDDD, (struct dlogutil_filter_options *)0xEEE) == 0);
fdi_push_log_ret = -EIO;
- assert(put_logs_into_vector(fds, 10, 1, &sv, callback, (void *)0xDDD, (log_filter *)0xEEE) == -EIO);
+ assert(put_logs_into_vector(fds, 10, 1, &sv, callback, (void *)0xDDD, (struct dlogutil_filter_options *)0xEEE) == -EIO);
fdi_push_log_ret = 0;
- assert(put_logs_into_vector(fds, 10, 1, &sv, callback, (void *)0xDDD, (log_filter *)0xEEE) == 0);
+ assert(put_logs_into_vector(fds, 10, 1, &sv, callback, (void *)0xDDD, (struct dlogutil_filter_options *)0xEEE) == 0);
assert(sort_vector_used_size(&sv) == 1);
- assert(put_logs_into_vector(fds, 10, 0, &sv, callback, (void *)0xDDD, (log_filter *)0xEEE) == 0);
+ assert(put_logs_into_vector(fds, 10, 0, &sv, callback, (void *)0xDDD, (struct dlogutil_filter_options *)0xEEE) == 0);
assert(sort_vector_used_size(&sv) == 7);
int buf = 0;