chiark / gitweb /
Remove src/ask-password
[elogind.git] / src / backlight / backlight.c
index 4d94ebf58a7e30b6b5ed7ad345a5235336f52b8e..c79ad6520c9f8668f0992c51d7506790f23e8726 100644 (file)
@@ -211,7 +211,7 @@ static unsigned get_max_brightness(struct udev_device *device) {
 
         r = safe_atou(max_brightness_str, &max_brightness);
         if (r < 0) {
-                log_warning("Failed to parse 'max_brightness' \"%s\": %s", max_brightness_str, strerror(-r));
+                log_warning_errno(r, "Failed to parse 'max_brightness' \"%s\": %m", max_brightness_str);
                 return 0;
         }
 
@@ -235,7 +235,7 @@ static void clamp_brightness(struct udev_device *device, char **value, unsigned
 
         r = safe_atou(*value, &brightness);
         if (r < 0) {
-                log_warning("Failed to parse brightness \"%s\": %s", *value, strerror(-r));
+                log_warning_errno(r, "Failed to parse brightness \"%s\": %m", *value);
                 return;
         }
 
@@ -285,8 +285,7 @@ int main(int argc, char *argv[]) {
 
         r = mkdir_p("/var/lib/systemd/backlight", 0755);
         if (r < 0) {
-                log_error("Failed to create backlight directory /var/lib/systemd/backlight: %s",
-                          strerror(-r));
+                log_error_errno(r, "Failed to create backlight directory /var/lib/systemd/backlight: %m");
                 return EXIT_FAILURE;
         }
 
@@ -319,7 +318,7 @@ int main(int argc, char *argv[]) {
         device = udev_device_new_from_subsystem_sysname(udev, ss, sysname);
         if (!device) {
                 if (errno != 0)
-                        log_error("Failed to get backlight or LED device '%s:%s': %m", ss, sysname);
+                        log_error_errno(errno, "Failed to get backlight or LED device '%s:%s': %m", ss, sysname);
                 else
                         log_oom();
 
@@ -372,8 +371,12 @@ int main(int argc, char *argv[]) {
          * device probing should be complete), so that the validity
          * check at boot time doesn't have to be reliable. */
 
-        if (streq(argv[1], "load") && shall_restore_state()) {
+        if (streq(argv[1], "load")) {
                 _cleanup_free_ char *value = NULL;
+                const char *clamp;
+
+                if (!shall_restore_state())
+                        return EXIT_SUCCESS;
 
                 if (!validate_device(udev, device))
                         return EXIT_SUCCESS;
@@ -384,16 +387,17 @@ int main(int argc, char *argv[]) {
                         if (r == -ENOENT)
                                 return EXIT_SUCCESS;
 
-                        log_error("Failed to read %s: %s", saved, strerror(-r));
+                        log_error_errno(r, "Failed to read %s: %m", saved);
                         return EXIT_FAILURE;
                 }
 
-                clamp_brightness(device, &value, max_brightness);
+                clamp = udev_device_get_property_value(device, "ID_BACKLIGHT_CLAMP");
+                if (!clamp || parse_boolean(clamp) != 0) /* default to clamping */
+                        clamp_brightness(device, &value, max_brightness);
 
                 r = udev_device_set_sysattr_value(device, "brightness", value);
                 if (r < 0) {
-                        log_error("Failed to write system 'brightness' attribute: %s",
-                                  strerror(-r));
+                        log_error_errno(r, "Failed to write system 'brightness' attribute: %m");
                         return EXIT_FAILURE;
                 }
 
@@ -413,7 +417,7 @@ int main(int argc, char *argv[]) {
 
                 r = write_string_file(saved, value);
                 if (r < 0) {
-                        log_error("Failed to write %s: %s", saved, strerror(-r));
+                        log_error_errno(r, "Failed to write %s: %m", saved);
                         return EXIT_FAILURE;
                 }