mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-08-31 09:50:11 +03:00
string-util: rework empty_to_null() to not change "const" qualifier of input
This changes the definition from enpty_to_null() so that we are still
typesafe (i.e. only accept strings) but do not drop (or add) any const
to the returned string that wasn't also on the input.
Inspired by: 3196e2996f
This commit is contained in:
@ -53,9 +53,13 @@ static inline const char* enable_disable(bool b) {
|
|||||||
return b ? "enable" : "disable";
|
return b ? "enable" : "disable";
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline const char *empty_to_null(const char *p) {
|
/* This macro's return pointer will have the "const" qualifier set or unset the same way as the input
|
||||||
return isempty(p) ? NULL : p;
|
* pointer. */
|
||||||
}
|
#define empty_to_null(p) \
|
||||||
|
({ \
|
||||||
|
const char *_p = (p); \
|
||||||
|
(typeof(p)) (isempty(_p) ? NULL : _p); \
|
||||||
|
})
|
||||||
|
|
||||||
static inline const char *empty_to_na(const char *p) {
|
static inline const char *empty_to_na(const char *p) {
|
||||||
return isempty(p) ? "n/a" : p;
|
return isempty(p) ? "n/a" : p;
|
||||||
@ -74,6 +78,11 @@ static inline bool empty_or_dash(const char *str) {
|
|||||||
static inline const char *empty_or_dash_to_null(const char *p) {
|
static inline const char *empty_or_dash_to_null(const char *p) {
|
||||||
return empty_or_dash(p) ? NULL : p;
|
return empty_or_dash(p) ? NULL : p;
|
||||||
}
|
}
|
||||||
|
#define empty_or_dash_to_null(p) \
|
||||||
|
({ \
|
||||||
|
const char *_p = (p); \
|
||||||
|
(typeof(p)) (empty_or_dash(_p) ? NULL : _p); \
|
||||||
|
})
|
||||||
|
|
||||||
char *first_word(const char *s, const char *word) _pure_;
|
char *first_word(const char *s, const char *word) _pure_;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user