backlight: include ID_PATH in file names for backlight settings
Much like for rfkill devices we should provide some stability regarding enumeration order, hence include the stable bits of the device path in the file name we store settings under.
This commit is contained in:
parent
f6f738db72
commit
be3f52f4ed
|
@ -54,8 +54,8 @@ ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sy
|
|||
# Pull in backlight save/restore for all backlight devices and
|
||||
# keyboard backlights
|
||||
|
||||
ACTION=="add", SUBSYSTEM=="backlight", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@backlight:$name.service"
|
||||
ACTION=="add", SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@leds:$name.service"
|
||||
ACTION=="add", SUBSYSTEM=="backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@backlight:$name.service"
|
||||
ACTION=="add", SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@leds:$name.service"
|
||||
|
||||
# Pull in rfkill save/restore for all rfkill devices
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ static bool validate_device(struct udev *udev, struct udev_device *device) {
|
|||
int main(int argc, char *argv[]) {
|
||||
_cleanup_udev_unref_ struct udev *udev = NULL;
|
||||
_cleanup_udev_device_unref_ struct udev_device *device = NULL;
|
||||
_cleanup_free_ char *saved = NULL, *ss = NULL;
|
||||
const char *sysname;
|
||||
_cleanup_free_ char *saved = NULL, *ss = NULL, *escaped_ss = NULL, *escaped_sysname = NULL, *escaped_path_id = NULL;
|
||||
const char *sysname, *path_id;
|
||||
int r;
|
||||
|
||||
if (argc != 3) {
|
||||
|
@ -252,7 +252,30 @@ int main(int argc, char *argv[]) {
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
saved = strjoin("/var/lib/systemd/backlight/", ss, ":", sysname, NULL);
|
||||
escaped_ss = cescape(ss);
|
||||
if (!escaped_ss) {
|
||||
log_oom();
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
escaped_sysname = cescape(sysname);
|
||||
if (!escaped_sysname) {
|
||||
log_oom();
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
path_id = udev_device_get_property_value(device, "ID_PATH");
|
||||
if (path_id) {
|
||||
escaped_path_id = cescape(path_id);
|
||||
if (!escaped_path_id) {
|
||||
log_oom();
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
saved = strjoin("/var/lib/systemd/backlight/", escaped_path_id, ":", escaped_ss, ":", escaped_sysname, NULL);
|
||||
} else
|
||||
saved = strjoin("/var/lib/systemd/backlight/", escaped_ss, ":", escaped_sysname, NULL);
|
||||
|
||||
if (!saved) {
|
||||
log_oom();
|
||||
return EXIT_FAILURE;
|
||||
|
|
|
@ -86,7 +86,7 @@ int main(int argc, char *argv[]) {
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
saved = strjoin("/var/lib/systemd/rfkill/", escaped_path_id, "-", escaped_name, NULL);
|
||||
saved = strjoin("/var/lib/systemd/rfkill/", escaped_path_id, ":", escaped_name, NULL);
|
||||
} else
|
||||
saved = strjoin("/var/lib/systemd/rfkill/", escaped_name, NULL);
|
||||
|
||||
|
|
Loading…
Reference in a new issue