summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libcamera/include/utils.h2
-rw-r--r--src/libcamera/log.cpp2
-rw-r--r--src/libcamera/meson.build1
-rw-r--r--src/libcamera/utils.cpp51
4 files changed, 55 insertions, 1 deletions
diff --git a/src/libcamera/include/utils.h b/src/libcamera/include/utils.h
index 73fa2e69..1b2a62c0 100644
--- a/src/libcamera/include/utils.h
+++ b/src/libcamera/include/utils.h
@@ -15,6 +15,8 @@ namespace libcamera {
namespace utils {
+const char *basename(const char *path);
+
/* C++11 doesn't provide std::make_unique */
template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args)
diff --git a/src/libcamera/log.cpp b/src/libcamera/log.cpp
index 26ebf410..eb444c31 100644
--- a/src/libcamera/log.cpp
+++ b/src/libcamera/log.cpp
@@ -438,7 +438,7 @@ void LogMessage::init(const char *fileName, unsigned int line)
msgStream_ << " " << log_severity_name(severity_);
msgStream_ << " " << category_.name();
- msgStream_ << " " << basename(fileName) << ":" << line << " ";
+ msgStream_ << " " << utils::basename(fileName) << ":" << line << " ";
}
LogMessage::~LogMessage()
diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
index 4433abfc..b2fe0e4f 100644
--- a/src/libcamera/meson.build
+++ b/src/libcamera/meson.build
@@ -17,6 +17,7 @@ libcamera_sources = files([
'signal.cpp',
'stream.cpp',
'timer.cpp',
+ 'utils.cpp',
'v4l2_device.cpp',
'v4l2_subdevice.cpp',
])
diff --git a/src/libcamera/utils.cpp b/src/libcamera/utils.cpp
new file mode 100644
index 00000000..fae28cee
--- /dev/null
+++ b/src/libcamera/utils.cpp
@@ -0,0 +1,51 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2019, Google Inc.
+ *
+ * utils.cpp - Miscellaneous utility functions
+ */
+
+#include <string.h>
+#include <sys/auxv.h>
+
+#include "utils.h"
+
+/**
+ * \file utils.h
+ * \brief Miscellaneous utility functions
+ */
+
+namespace libcamera {
+
+namespace utils {
+
+/**
+ * \def ARRAY_SIZE(array)
+ * \brief Determine the number of elements in the static array.
+ */
+
+/**
+ * \brief Strip the directory prefix from the path
+ * \param[in] path The path to process
+ *
+ * basename is implemented differently across different C libraries. This
+ * implementation matches the one provided by the GNU libc, and does not
+ * modify its input parameter.
+ *
+ * \return A pointer within the given path without any leading directory
+ * components.
+ */
+const char *basename(const char *path)
+{
+ const char *base = strrchr(path, '/');
+ return base ? base + 1 : path;
+}
+
+/**
+ * \fn libcamera::utils::make_unique(Args &&... args)
+ * \brief Constructs an object of type T and wraps it in a std::unique_ptr.
+ */
+
+} /* namespace utils */
+
+} /* namespace libcamera */