libdlog_la_SOURCES = \
src/libdlog/log.c \
src/shared/backend_androidlogger.c \
+ src/shared/buffer_traits.c \
src/shared/connect_pipe.c \
src/shared/logcommon.c \
src/shared/logconfig.c \
src/libdlogutil/fdi_logger.c \
src/libdlogutil/fdi_zero_copy.c \
src/shared/backend_androidlogger.c \
+ src/shared/buffer_traits.c \
src/shared/logcommon.c \
src/shared/logprint.c \
src/shared/parsers.c \
dlogutil_SOURCES = \
src/logutil/logutil.c \
+ src/shared/buffer_traits.c \
src/shared/logcommon.c \
src/shared/logconfig.c \
src/shared/logprint.c \
src/logger/socket.c \
src/logger/writer.c \
src/shared/backend_androidlogger.c \
+ src/shared/buffer_traits.c \
src/shared/ptrs_list.c \
src/shared/logcommon.c \
src/shared/logconfig.c \
libdlog.la
dlogsend_SOURCES = \
+ src/shared/buffer_traits.c \
src/shared/logcommon.c \
src/logsend/logsend.c
-pie
dlogctl_SOURCES = \
+ src/shared/buffer_traits.c \
src/shared/logcommon.c \
src/shared/logconfig.c \
src/shared/parsers.c \
src/log-redirect-stdout/lib.c \
src/log-redirect-stdout/internal.c \
src/shared/backend_androidlogger.c \
+ src/shared/buffer_traits.c \
src/shared/connect_pipe.c \
src/shared/logcommon.c \
src/shared/logconfig.c \
libdlog_redirect_stdout.la
dlog_redirect_stdout_SOURCES = \
+ src/shared/buffer_traits.c \
src/shared/logcommon.c \
src/log-redirect-stdout/main.c
src_tests_test_ptrs_list_neg_CFLAGS = $(check_CFLAGS)
src_tests_test_ptrs_list_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=free,--wrap=calloc
-src_tests_test_common_SOURCES = src/tests/test_common.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c src/shared/backend_androidlogger.c
+src_tests_test_common_SOURCES = src/tests/test_common.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/parsers.c src/shared/backend_androidlogger.c
src_tests_test_common_CFLAGS = $(check_CFLAGS)
src_tests_test_common_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=sendmsg,--wrap=recvmsg,--wrap=writev,--wrap=read,--wrap=poll,--wrap=fcntl,--wrap=fcntl64,--wrap=malloc,--wrap=calloc,--wrap=connect,--wrap=socket,--wrap=open,--wrap=open64,--wrap=ioctl
-src_tests_test_common_neg_SOURCES = src/tests/test_common_neg.c src/shared/logcommon.c
+src_tests_test_common_neg_SOURCES = src/tests/test_common_neg.c src/shared/logcommon.c src/shared/buffer_traits.c
src_tests_test_common_neg_CFLAGS = $(check_CFLAGS)
src_tests_test_common_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=sendmsg,--wrap=recvmsg,--wrap=writev,--wrap=read,--wrap=poll,--wrap=fcntl,--wrap=fcntl64,--wrap=malloc,--wrap=calloc,--wrap=connect,--wrap=socket,--wrap=open,--wrap=open64,--wrap=ioctl
-src_tests_test_common_pos_SOURCES = src/tests/test_common_pos.c src/shared/logcommon.c
+src_tests_test_common_pos_SOURCES = src/tests/test_common_pos.c src/shared/logcommon.c src/shared/buffer_traits.c
src_tests_test_common_pos_CFLAGS = $(check_CFLAGS)
src_tests_test_common_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=sendmsg,--wrap=recvmsg,--wrap=writev,--wrap=read,--wrap=poll,--wrap=fcntl,--wrap=fcntl64,--wrap=malloc,--wrap=calloc,--wrap=connect,--wrap=socket,--wrap=open,--wrap=open64,--wrap=ioctl
src_tests_fd_info_neg_CFLAGS = $(check_CFLAGS)
src_tests_fd_info_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=sort_vector_push,--wrap=malloc,--wrap=free,--wrap=close,--wrap=dlogutil_entry_get_timestamp,--wrap=log_should_print_line
-src_tests_fdi_logger_pos_SOURCES = src/tests/fdi_logger_pos.c src/libdlogutil/fdi_logger.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/backend_androidlogger.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_fdi_logger_pos_SOURCES = src/tests/fdi_logger_pos.c src/libdlogutil/fdi_logger.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/backend_androidlogger.c src/shared/logconfig.c src/shared/parsers.c
src_tests_fdi_logger_pos_CFLAGS = $(check_CFLAGS)
src_tests_fdi_logger_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config_get_path,--wrap=log_filter_set_filterspec,--wrap=parse_androidlogger_message,--wrap=copy_recv_timestamp,--wrap=malloc,--wrap=read,--wrap=close,--wrap=ioctl,--wrap=calloc
-src_tests_fdi_logger_neg_SOURCES = src/tests/fdi_logger_neg.c src/libdlogutil/fdi_logger.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/backend_androidlogger.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_fdi_logger_neg_SOURCES = src/tests/fdi_logger_neg.c src/libdlogutil/fdi_logger.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/backend_androidlogger.c src/shared/logconfig.c src/shared/parsers.c
src_tests_fdi_logger_neg_CFLAGS = $(check_CFLAGS)
src_tests_fdi_logger_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config_get_path,--wrap=log_filter_set_filterspec,--wrap=parse_androidlogger_message,--wrap=copy_recv_timestamp,--wrap=malloc,--wrap=read,--wrap=close,--wrap=ioctl,--wrap=calloc
-src_tests_fdi_pipe_pos_SOURCES = src/tests/fdi_pipe_pos.c src/libdlogutil/fdi_pipe.c src/shared/logconfig.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/parsers.c src/shared/logcommon.c src/shared/queued_entry_timestamp.c
+src_tests_fdi_pipe_pos_SOURCES = src/tests/fdi_pipe_pos.c src/libdlogutil/fdi_pipe.c src/shared/logconfig.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/parsers.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/queued_entry_timestamp.c
src_tests_fdi_pipe_pos_CFLAGS = $(check_CFLAGS)
src_tests_fdi_pipe_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=connect_sock,--wrap=close,--wrap=malloc,--wrap=free,--wrap=send_dlog_request,--wrap=recv_dlog_reply,--wrap=read,--wrap=recv_pipe
-src_tests_fdi_pipe_neg_SOURCES = src/tests/fdi_pipe_neg.c src/libdlogutil/fdi_pipe.c src/shared/logconfig.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/parsers.c src/shared/logcommon.c src/shared/queued_entry_timestamp.c
+src_tests_fdi_pipe_neg_SOURCES = src/tests/fdi_pipe_neg.c src/libdlogutil/fdi_pipe.c src/shared/logconfig.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/parsers.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/queued_entry_timestamp.c
src_tests_fdi_pipe_neg_CFLAGS = $(check_CFLAGS)
src_tests_fdi_pipe_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=connect_sock,--wrap=close,--wrap=malloc,--wrap=free,--wrap=send_dlog_request,--wrap=recv_dlog_reply,--wrap=read,--wrap=recv_pipe
-src_tests_libdlog_pipe_SOURCES = src/tests/libdlog_pipe.c src/libdlog/log_pipe.c src/shared/connect_pipe.c src/shared/logcommon.c src/shared/logconfig.c src/shared/queued_entry.c src/shared/translate_syslog.c src/shared/parsers.c
+src_tests_libdlog_pipe_SOURCES = src/tests/libdlog_pipe.c src/libdlog/log_pipe.c src/shared/connect_pipe.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/queued_entry.c src/shared/translate_syslog.c src/shared/parsers.c
src_tests_libdlog_pipe_CFLAGS = $(check_CFLAGS) -pthread
src_tests_libdlog_pipe_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=syslog_critical_failure,--wrap=connect,--wrap=write,--wrap=recv_pipe,--wrap=dup2,--wrap=socket,--wrap=close -lm
src_tests_libdlog_android_monotonic_neg_CFLAGS = $(check_CFLAGS) -DUSE_ANDROID_MONOTONIC
src_tests_libdlog_android_monotonic_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config,--wrap=close,--wrap=writev,--wrap=clock_gettime
-src_tests_libdlog_base_pos_SOURCES = src/tests/libdlog_base_pos.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_libdlog_base_pos_SOURCES = src/tests/libdlog_base_pos.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/parsers.c
src_tests_libdlog_base_pos_CFLAGS = $(check_CFLAGS) -pthread
src_tests_libdlog_base_pos_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=log_config_read,--wrap=snprintf
-src_tests_libdlog_base_neg_SOURCES = src/tests/libdlog_base_neg.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_libdlog_base_neg_SOURCES = src/tests/libdlog_base_neg.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/parsers.c
src_tests_libdlog_base_neg_CFLAGS = $(check_CFLAGS) -pthread
src_tests_libdlog_base_neg_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=log_config_read,--wrap=snprintf
-src_tests_libdlog_prio_filter_pos_SOURCES = src/tests/libdlog_prio_filter_pos.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_libdlog_prio_filter_pos_SOURCES = src/tests/libdlog_prio_filter_pos.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/parsers.c
src_tests_libdlog_prio_filter_pos_CFLAGS = $(check_CFLAGS) -pthread
src_tests_libdlog_prio_filter_pos_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=log_config_read
src_tests_queued_entry_monotonic_pos_CFLAGS = $(check_CFLAGS) -DUSE_ANDROID_MONOTONIC
src_tests_queued_entry_monotonic_pos_LDFLAGS = $(AM_LDFLAGS)
-src_tests_logctl_SOURCES = src/tests/logctl.c src/logctl/logctl.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_logctl_SOURCES = src/tests/logctl.c src/logctl/logctl.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c src/shared/buffer_traits.c
src_tests_logctl_CFLAGS = $(check_CFLAGS)
src_tests_logctl_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=calloc,--wrap=asprintf,--wrap=open,--wrap=open64,--wrap=fdopen,--wrap=fdopen64,--wrap=mkstemp,--wrap=mkstemp64,--wrap=fchmod,--wrap=rename
src_tests_config_CFLAGS = $(check_CFLAGS)
src_tests_config_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=openat64,--wrap=openat,--wrap=scandirat,--wrap=scandirat64,--wrap=fdopen,--wrap=fdopen64,--wrap=open,--wrap=open64,--wrap=calloc
-src_tests_logprint_SOURCES = src/tests/logprint.c src/shared/ptrs_list.c src/shared/logconfig.c src/shared/logprint.c src/shared/logcommon.c src/shared/queued_entry.c src/shared/parsers.c src/shared/translate_syslog.c src/shared/queued_entry_timestamp.c
+src_tests_logprint_SOURCES = src/tests/logprint.c src/shared/ptrs_list.c src/shared/logconfig.c src/shared/buffer_traits.c src/shared/logprint.c src/shared/logcommon.c src/shared/queued_entry.c src/shared/parsers.c src/shared/translate_syslog.c src/shared/queued_entry_timestamp.c
src_tests_logprint_CFLAGS = $(check_CFLAGS)
src_tests_logprint_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=write,--wrap=malloc,--wrap=calloc,--wrap=localtime_r,--wrap=strdup,--wrap=strndup,--wrap=list_add
src/libdlogutil/fdi_logger.c \
src/libdlogutil/fdi_zero_copy.c \
src/shared/backend_androidlogger.c \
+ src/shared/buffer_traits.c \
src/shared/logcommon.c \
src/shared/logprint.c \
src/shared/parsers.c \
src/libdlogutil/fdi_logger.c \
src/libdlogutil/fdi_zero_copy.c \
src/shared/backend_androidlogger.c \
+ src/shared/buffer_traits.c \
src/shared/logcommon.c \
src/shared/logprint.c \
src/shared/parsers.c \
src/shared/hash.c \
src/libdlog/dynamic_config.c \
src/shared/ptrs_list.c \
+ src/shared/buffer_traits.c \
src/shared/logcommon.c \
src/shared/logconfig.c \
src/shared/parsers.c
src_tests_pid_limiter_SOURCES = src/tests/pid_limiter.c \
src/shared/hash.c \
src/shared/loglimiter.c \
+ src/shared/buffer_traits.c \
src/shared/logcommon.c \
src/shared/logconfig.c \
src/shared/parsers.c \
src/shared/logprint.c \
src/shared/ptrs_list.c \
src/libdlogutil/logretrieve.c \
+ src/shared/buffer_traits.c \
src/shared/logcommon.c \
src/libdlogutil/fd_info.c \
src/libdlogutil/sort_vector.c \
src/shared/logprint.c \
src/shared/ptrs_list.c \
src/libdlogutil/logretrieve.c \
+ src/shared/buffer_traits.c \
src/shared/logcommon.c \
src/libdlogutil/fd_info.c \
src/libdlogutil/sort_vector.c \
src_tests_metrics_CFLAGS = $(check_CFLAGS)
src_tests_metrics_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=dlogutil_entry_get_tag,--wrap=dlogutil_entry_get_pid,--wrap=dlogutil_entry_get_priority,--wrap=free,--wrap=calloc,--wrap=strdup
-src_tests_deduplicate_test_SOURCES = src/tests/deduplicate_test.c src/libdlog/log.c src/libdlog/deduplicate.c src/shared/hash.c src/shared/logcommon.c src/shared/loglimiter.c src/libdlog/dynamic_config.c src/shared/logconfig.c src/shared/parsers.c src/shared/ptrs_list.c
+src_tests_deduplicate_test_SOURCES = src/tests/deduplicate_test.c src/libdlog/log.c src/libdlog/deduplicate.c src/shared/hash.c src/shared/buffer_traits.c src/shared/logcommon.c src/shared/loglimiter.c src/libdlog/dynamic_config.c src/shared/logconfig.c src/shared/parsers.c src/shared/ptrs_list.c
src_tests_deduplicate_test_CFLAGS = $(check_CFLAGS) -pthread
src_tests_deduplicate_test_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=clock_gettime,--wrap=log_config_read,--wrap=deduplicate_warn
--- /dev/null
+/* MIT License
+ *
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE. */
+
+#pragma once
+
+#include <dlog-internal.h>
+#include <stdbool.h>
+
+/**
+ * @brief Get buffer ID by name
+ * @details Returns the ID of the buffer with the given name
+ * @param[in] name The name of the buffer whose ID we seek
+ * @return If such buffer exists, its ID.
+ * Else, LOG_ID_INVALID.
+ * @see log_name_by_id
+ */
+log_id_t log_id_by_name(const char *name);
+
+/**
+ * @brief Get buffer name by ID
+ * @details Returns the name of the buffer with the given ID
+ * @param[in] id The ID of the buffer whose name we seek
+ * @return If such buffer exists, its name.
+ * Else, empty string.
+ * @see log_id_by_name
+ */
+char * log_name_by_id(log_id_t id);
+
+/**
+ * @brief Is core buffer
+ * @details Returns whether given buffer is one of the original four buffers
+ * @param[in] id The ID of the buffer
+ * @return boolean
+ */
+bool is_core_buffer(log_id_t id);
+
+/**
+ * @brief Is buffer valid
+ * @details Returns whether given buffer ID represents an actual buffer
+ * @param[in] id The ID of the buffer
+ * @return boolean
+ */
+bool is_buffer_valid(log_id_t id);
+
--- /dev/null
+/* MIT License
+ *
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE. */
+
+#include <buffer_traits.h>
+
+static const struct {
+ log_id_t id;
+ char * name;
+ bool core;
+} buffer_traits[LOG_ID_MAX] = {
+ [LOG_ID_MAIN ] = { .name = "main" , .core = true, },
+ [LOG_ID_RADIO ] = { .name = "radio" , .core = true, },
+ [LOG_ID_SYSTEM] = { .name = "system", .core = true, },
+ [LOG_ID_APPS ] = { .name = "apps" , .core = true, },
+ [LOG_ID_KMSG ] = { .name = "kmsg" , .core = false, },
+ [LOG_ID_SYSLOG] = { .name = "syslog", .core = false, },
+};
+
+bool is_buffer_valid(log_id_t id)
+{
+ return id > LOG_ID_INVALID
+ && id < LOG_ID_MAX;
+}
+
+bool is_core_buffer(log_id_t id)
+{
+ return is_buffer_valid(id) && buffer_traits[id].core;
+}
+
+char *log_name_by_id(log_id_t id)
+{
+ return is_buffer_valid(id) ? buffer_traits[id].name : "";
+}
+
+log_id_t log_id_by_name(const char *name)
+{
+ for (log_id_t i = 0; i < LOG_ID_MAX; ++i)
+ if (!strcmp(name, buffer_traits[i].name))
+ return i;
+
+ return LOG_ID_INVALID;
+}
+