|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
From e58c591e5a969523356aafe7e8d308b42f0f401b Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
From: Lennart Poettering <lennart@poettering.net>
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
Date: Mon, 14 Oct 2013 19:01:09 +0200
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
Subject: [PATCH] backlight: include ID_PATH in file names for backlight
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
settings
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
Much like for rfkill devices we should provide some stability regarding
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
enumeration order, hence include the stable bits of the device path in
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
the file name we store settings under.
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
(cherry picked from commit be3f52f4ed02a9256b1577719677b32a17b525ac)
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
Conflicts:
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
rules/99-systemd.rules.in
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
src/rfkill/rfkill.c
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
---
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
rules/99-systemd.rules.in | 4 ++--
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
src/backlight/backlight.c | 29 ++++++++++++++++++++++++++---
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
2 files changed, 28 insertions(+), 5 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
index ff0e771..dd6e7f1 100644
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
--- a/rules/99-systemd.rules.in
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+++ b/rules/99-systemd.rules.in
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
@@ -57,8 +57,8 @@ ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sy
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
# Pull in backlight save/restore for all backlight devices and
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
# keyboard backlights
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
-SUBSYSTEM=="backlight", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
-SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+SUBSYSTEM=="backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
# Asynchronously mount file systems implemented by these modules as
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
# soon as they are loaded.
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
index 51a67a0..e8cdad6 100644
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
--- a/src/backlight/backlight.c
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+++ b/src/backlight/backlight.c
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
@@ -195,8 +195,8 @@ static bool validate_device(struct udev *udev, struct udev_device *device) {
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
int main(int argc, char *argv[]) {
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
_cleanup_udev_unref_ struct udev *udev = NULL;
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
_cleanup_udev_device_unref_ struct udev_device *device = NULL;
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
- _cleanup_free_ char *saved = NULL, *ss = NULL;
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
- const char *sysname;
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ _cleanup_free_ char *saved = NULL, *ss = NULL, *escaped_ss = NULL, *escaped_sysname = NULL, *escaped_path_id = NULL;
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ const char *sysname, *path_id;
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
int r;
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
if (argc != 3) {
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
@@ -252,7 +252,30 @@ int main(int argc, char *argv[]) {
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
return EXIT_FAILURE;
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
}
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
- saved = strjoin("/var/lib/systemd/backlight/", ss, ":", sysname, NULL);
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ escaped_ss = cescape(ss);
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ if (!escaped_ss) {
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ log_oom();
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ return EXIT_FAILURE;
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ escaped_sysname = cescape(sysname);
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ if (!escaped_sysname) {
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ log_oom();
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ return EXIT_FAILURE;
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ path_id = udev_device_get_property_value(device, "ID_PATH");
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ if (path_id) {
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ escaped_path_id = cescape(path_id);
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ if (!escaped_path_id) {
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ log_oom();
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ return EXIT_FAILURE;
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ saved = strjoin("/var/lib/systemd/backlight/", escaped_path_id, ":", escaped_ss, ":", escaped_sysname, NULL);
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ } else
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+ saved = strjoin("/var/lib/systemd/backlight/", escaped_ss, ":", escaped_sysname, NULL);
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
+
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
if (!saved) {
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
log_oom();
|
|
Zbigniew Jędrzejewski-Szmek |
d22a5a |
return EXIT_FAILURE;
|