mirror of
https://github.com/systemd/systemd.git
synced 2024-10-27 01:55:22 +03:00
xdg-autostart-service: Use common boolean parser
Technically the desktop entry specification says value should be the string "true" or "false". Pragmatically every desktop has their own parsing rules which are typically less strict on how to interpret other values. This caused some regressions downstream when we switched to the xdg-autostart-generator where existing handmade files contained values with "True" or "False".
This commit is contained in:
parent
d01d9197f5
commit
38429cb1e3
@ -48,6 +48,8 @@ static const char* const xdg_desktop_file[] = {
|
||||
|
||||
("[Desktop Entry]\n"
|
||||
"Hidden=\t true\n"),
|
||||
("[Desktop Entry]\n"
|
||||
"Hidden=\t True\n"),
|
||||
};
|
||||
|
||||
static void test_xdg_desktop_parse_one(unsigned i, const char *s) {
|
||||
@ -75,6 +77,7 @@ static void test_xdg_desktop_parse_one(unsigned i, const char *s) {
|
||||
assert_se(streq(service->exec_string, "a"));
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
assert_se(service->hidden);
|
||||
break;
|
||||
}
|
||||
|
@ -8,15 +8,16 @@
|
||||
|
||||
#include "conf-parser.h"
|
||||
#include "escape.h"
|
||||
#include "unit-name.h"
|
||||
#include "path-util.h"
|
||||
#include "fd-util.h"
|
||||
#include "generator.h"
|
||||
#include "log.h"
|
||||
#include "nulstr-util.h"
|
||||
#include "parse-util.h"
|
||||
#include "path-util.h"
|
||||
#include "specifier.h"
|
||||
#include "string-util.h"
|
||||
#include "nulstr-util.h"
|
||||
#include "strv.h"
|
||||
#include "unit-name.h"
|
||||
|
||||
XdgAutostartService* xdg_autostart_service_free(XdgAutostartService *s) {
|
||||
if (!s)
|
||||
@ -74,18 +75,16 @@ static int xdg_config_parse_bool(
|
||||
void *userdata) {
|
||||
|
||||
bool *b = ASSERT_PTR(data);
|
||||
int r;
|
||||
|
||||
assert(filename);
|
||||
assert(lvalue);
|
||||
assert(rvalue);
|
||||
|
||||
if (streq(rvalue, "true"))
|
||||
*b = true;
|
||||
else if (streq(rvalue, "false"))
|
||||
*b = false;
|
||||
else
|
||||
r = parse_boolean(rvalue);
|
||||
if (r < 0)
|
||||
return log_syntax(unit, LOG_ERR, filename, line, SYNTHETIC_ERRNO(EINVAL), "Invalid value for boolean: %s", rvalue);
|
||||
|
||||
*b = r;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user