mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-03 01:17:45 +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". (cherry picked from commit38429cb1e3
) (cherry picked from commitc40fa78968
)
This commit is contained in:
parent
99a630479b
commit
01ea6ba5f1
@ -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(unsigned i, const char *s) {
|
||||
@ -75,6 +77,7 @@ static void test_xdg_desktop_parse(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,17 @@
|
||||
|
||||
#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 "user-util.h"
|
||||
#include "unit-name.h"
|
||||
|
||||
XdgAutostartService* xdg_autostart_service_free(XdgAutostartService *s) {
|
||||
if (!s)
|
||||
@ -74,19 +76,17 @@ static int xdg_config_parse_bool(
|
||||
void *userdata) {
|
||||
|
||||
bool *b = data;
|
||||
int r;
|
||||
|
||||
assert(filename);
|
||||
assert(lvalue);
|
||||
assert(rvalue);
|
||||
assert(data);
|
||||
|
||||
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