]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/shared/parse-helpers.c
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
4 #include "parse-helpers.h"
8 int path_simplify_and_warn(
16 bool fatal
= flag
& PATH_CHECK_FATAL
;
18 assert(!FLAGS_SET(flag
, PATH_CHECK_ABSOLUTE
| PATH_CHECK_RELATIVE
));
20 if (!utf8_is_valid(path
))
21 return log_syntax_invalid_utf8(unit
, LOG_ERR
, filename
, line
, path
);
23 if (flag
& (PATH_CHECK_ABSOLUTE
| PATH_CHECK_RELATIVE
)) {
26 absolute
= path_is_absolute(path
);
28 if (!absolute
&& (flag
& PATH_CHECK_ABSOLUTE
))
29 return log_syntax(unit
, LOG_ERR
, filename
, line
, SYNTHETIC_ERRNO(EINVAL
),
30 "%s= path is not absolute%s: %s",
31 lvalue
, fatal
? "" : ", ignoring", path
);
33 if (absolute
&& (flag
& PATH_CHECK_RELATIVE
))
34 return log_syntax(unit
, LOG_ERR
, filename
, line
, SYNTHETIC_ERRNO(EINVAL
),
35 "%s= path is absolute%s: %s",
36 lvalue
, fatal
? "" : ", ignoring", path
);
41 if (!path_is_valid(path
))
42 return log_syntax(unit
, LOG_ERR
, filename
, line
, SYNTHETIC_ERRNO(EINVAL
),
43 "%s= path has invalid length (%zu bytes)%s.",
44 lvalue
, strlen(path
), fatal
? "" : ", ignoring");
46 if (!path_is_normalized(path
))
47 return log_syntax(unit
, LOG_ERR
, filename
, line
, SYNTHETIC_ERRNO(EINVAL
),
48 "%s= path is not normalized%s: %s",
49 lvalue
, fatal
? "" : ", ignoring", path
);