blob: 66123b1891103ba7860dbf6a5d90e3a051414136 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2019, Google Inc.
*
* utils.cpp - Miscellaneous utility functions
*/
#include "utils.h"
#include <string.h>
#include <sys/auxv.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;
}
/**
* \brief Get an environment variable
* \param[in] name The name of the variable to return
*
* The environment list is searched to find the variable 'name', and the
* corresponding string is returned.
*
* If 'secure execution' is required then this function always returns NULL to
* avoid vulnerabilities that could occur if set-user-ID or set-group-ID
* programs accidentally trust the environment.
*
* \returns A pointer to the value in the environment or NULL if the requested
* environment variable doesn't exist or if secure execution is required.
*/
char *secure_getenv(const char *name)
{
if (getauxval(AT_SECURE))
return NULL;
return getenv(name);
}
/**
* \fn libcamera::utils::make_unique(Args &&... args)
* \brief Constructs an object of type T and wraps it in a std::unique_ptr.
*/
/**
* \fn libcamera::utils::set_overlap(InputIt1 first1, InputIt1 last1,
* InputIt2 first2, InputIt2 last2)
* \brief Count the number of elements in the intersection of two ranges
*
* Count the number of elements in the intersection of the sorted ranges [\a
* first1, \a last1) and [\a first1, \a last2). Elements are compared using
* operator< and the ranges must be sorted with respect to the same.
*
* \return The number of elements in the intersection of the two ranges
*/
} /* namespace utils */
} /* namespace libcamera */
|