From patchwork Mon Apr 1 11:03:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kieran Bingham X-Patchwork-Id: 829 Return-Path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 935C0600F9 for ; Mon, 1 Apr 2019 13:03:34 +0200 (CEST) Received: from Q.imgcgcw.net (unknown [147.50.13.10]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C556B2F9; Mon, 1 Apr 2019 13:03:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1554116614; bh=P+5u+cN+N6Iug8x+WF+BL3CxFyt0XXfDTT1OZHUhKHc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pQTScA6ro526z0x/3ipXVh0U2VNO8NKdPnMWdO5IxTFeRuZ8H0V4Nnb9cQ9J0ED4v 8oyjGy+kh/hSmouyX/3CTCCP6+mFsHeI3fX6/WMLo22tkPc88lLOXZXgh7Ic8/OSuw HWnBJjXk90+G+ULMQiHP5JL8xndwktqEjGWiS9Jg= From: Kieran Bingham To: LibCamera Devel Date: Mon, 1 Apr 2019 18:03:14 +0700 Message-Id: <20190401110315.4148-4-kieran.bingham@ideasonboard.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190401110315.4148-1-kieran.bingham@ideasonboard.com> References: <20190401110315.4148-1-kieran.bingham@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 3/4] libcamera: utils: Use internal basename implementation. X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Apr 2019 11:03:34 -0000 Differing implementations of basename() exist, some of which may modify the content of the string passed as an argument. The implementation of basename() is trivial, thus to support different toolchains, provide our own version which accepts and returns a const char*. Update the call sites to use the new implementation. Signed-off-by: Kieran Bingham --- src/libcamera/include/utils.h | 2 ++ src/libcamera/log.cpp | 2 +- src/libcamera/meson.build | 1 + src/libcamera/utils.cpp | 46 +++++++++++++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/libcamera/utils.cpp diff --git a/src/libcamera/include/utils.h b/src/libcamera/include/utils.h index 73fa2e69b029..1b2a62c0fda7 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 std::unique_ptr make_unique(Args&&... args) diff --git a/src/libcamera/log.cpp b/src/libcamera/log.cpp index 26ebf410a7a9..eb444c31857d 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 8384cd0af451..863cb60d4b90 100644 --- a/src/libcamera/meson.build +++ b/src/libcamera/meson.build @@ -16,6 +16,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 000000000000..70936e36c5d5 --- /dev/null +++ b/src/libcamera/utils.cpp @@ -0,0 +1,46 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* + * Copyright (C) 2019, Google Inc. + * + * utils.cpp - Miscellaneous utility functions + */ + +#include + +#include "utils.h" + +/** + * \file utils.h + * \brief Miscellaneous utility functions + */ + +namespace libcamera { + +namespace utils { + +/** + * \def ARRAY_SIZE(array) + * \brief Determine the number of elemnents in the static array. + */ + +/** + * \brief Strip the directory prefix from the path + * + * basename is implemented differently across different toolchains. + * Ensure consistency by providing our own implementation. + */ +const char *basename(const char *path) +{ + const char *base = strrchr(path, '/'); + return base ? base + 1 : path; +} + + +/** + * \fn libcamera::utils::make_unique(Args &&... args) + * \brief Construct an object and return a std::unique ptr to it + */ + +} /* namespace utils */ + +} /* namespace libcamera */