66#include "device-util.h"
77#include "escape.h"
88#include "fileio.h"
9+ #include "main-func.h"
910#include "mkdir.h"
1011#include "parse-util.h"
1112#include "proc-cmdline.h"
@@ -296,7 +297,7 @@ static bool shall_clamp(sd_device *d) {
296297 return r ;
297298}
298299
299- int main (int argc , char * argv []) {
300+ static int run (int argc , char * argv []) {
300301 _cleanup_ (sd_device_unrefp ) sd_device * device = NULL ;
301302 _cleanup_free_ char * escaped_ss = NULL , * escaped_sysname = NULL , * escaped_path_id = NULL ;
302303 const char * sysname , * path_id , * ss , * saved ;
@@ -305,23 +306,21 @@ int main(int argc, char *argv[]) {
305306
306307 if (argc != 3 ) {
307308 log_error ("This program requires two arguments." );
308- return EXIT_FAILURE ;
309+ return - EINVAL ;
309310 }
310311
311312 log_setup_service ();
312313
313314 umask (0022 );
314315
315316 r = mkdir_p ("/var/lib/systemd/backlight" , 0755 );
316- if (r < 0 ) {
317- log_error_errno (r , "Failed to create backlight directory /var/lib/systemd/backlight: %m" );
318- return EXIT_FAILURE ;
319- }
317+ if (r < 0 )
318+ return log_error_errno (r , "Failed to create backlight directory /var/lib/systemd/backlight: %m" );
320319
321320 sysname = strchr (argv [2 ], ':' );
322321 if (!sysname ) {
323322 log_error ("Requires a subsystem and sysname pair specifying a backlight device." );
324- return EXIT_FAILURE ;
323+ return - EINVAL ;
325324 }
326325
327326 ss = strndupa (argv [2 ], sysname - argv [2 ]);
@@ -330,40 +329,31 @@ int main(int argc, char *argv[]) {
330329
331330 if (!STR_IN_SET (ss , "backlight" , "leds" )) {
332331 log_error ("Not a backlight or LED device: '%s:%s'" , ss , sysname );
333- return EXIT_FAILURE ;
332+ return - EINVAL ;
334333 }
335334
336335 r = sd_device_new_from_subsystem_sysname (& device , ss , sysname );
337- if (r < 0 ) {
338- log_error_errno (r , "Failed to get backlight or LED device '%s:%s': %m" , ss , sysname );
339- return EXIT_FAILURE ;
340- }
336+ if (r < 0 )
337+ return log_error_errno (r , "Failed to get backlight or LED device '%s:%s': %m" , ss , sysname );
341338
342339 /* If max_brightness is 0, then there is no actual backlight
343340 * device. This happens on desktops with Asus mainboards
344341 * that load the eeepc-wmi module. */
345- r = get_max_brightness (device , & max_brightness );
346- if (r < 0 )
347- return EXIT_SUCCESS ;
342+ if (get_max_brightness (device , & max_brightness ) < 0 )
343+ return 0 ;
348344
349345 escaped_ss = cescape (ss );
350- if (!escaped_ss ) {
351- log_oom ();
352- return EXIT_FAILURE ;
353- }
346+ if (!escaped_ss )
347+ return log_oom ();
354348
355349 escaped_sysname = cescape (sysname );
356- if (!escaped_sysname ) {
357- log_oom ();
358- return EXIT_FAILURE ;
359- }
350+ if (!escaped_sysname )
351+ return log_oom ();
360352
361353 if (sd_device_get_property_value (device , "ID_PATH" , & path_id ) >= 0 ) {
362354 escaped_path_id = cescape (path_id );
363- if (!escaped_path_id ) {
364- log_oom ();
365- return EXIT_FAILURE ;
366- }
355+ if (!escaped_path_id )
356+ return log_oom ();
367357
368358 saved = strjoina ("/var/lib/systemd/backlight/" , escaped_path_id , ":" , escaped_ss , ":" , escaped_sysname );
369359 } else
@@ -383,10 +373,10 @@ int main(int argc, char *argv[]) {
383373 bool clamp ;
384374
385375 if (shall_restore_state () == 0 )
386- return EXIT_SUCCESS ;
376+ return 0 ;
387377
388378 if (validate_device (device ) == 0 )
389- return EXIT_SUCCESS ;
379+ return 0 ;
390380
391381 clamp = shall_clamp (device );
392382
@@ -397,57 +387,47 @@ int main(int argc, char *argv[]) {
397387 /* Fallback to clamping current brightness or exit early if
398388 * clamping is not supported/enabled. */
399389 if (!clamp )
400- return EXIT_SUCCESS ;
390+ return 0 ;
401391
402392 r = sd_device_get_sysattr_value (device , "brightness" , & curval );
403- if (r < 0 ) {
404- log_device_warning_errno (device , r , "Failed to read 'brightness' attribute: %m" );
405- return EXIT_FAILURE ;
406- }
393+ if (r < 0 )
394+ return log_device_warning_errno (device , r , "Failed to read 'brightness' attribute: %m" );
407395
408396 value = strdup (curval );
409- if (!value ) {
410- log_oom ();
411- return EXIT_FAILURE ;
412- }
413- } else if (r < 0 ) {
414- log_error_errno (r , "Failed to read %s: %m" , saved );
415- return EXIT_FAILURE ;
416- }
397+ if (!value )
398+ return log_oom ();
399+ } else if (r < 0 )
400+ return log_error_errno (r , "Failed to read %s: %m" , saved );
417401
418402 if (clamp )
419403 (void ) clamp_brightness (device , & value , max_brightness );
420404
421405 r = sd_device_set_sysattr_value (device , "brightness" , value );
422- if (r < 0 ) {
423- log_device_error_errno (device , r , "Failed to write system 'brightness' attribute: %m" );
424- return EXIT_FAILURE ;
425- }
406+ if (r < 0 )
407+ return log_device_error_errno (device , r , "Failed to write system 'brightness' attribute: %m" );
426408
427409 } else if (streq (argv [1 ], "save" )) {
428410 const char * value ;
429411
430412 if (validate_device (device ) == 0 ) {
431413 unlink (saved );
432- return EXIT_SUCCESS ;
414+ return 0 ;
433415 }
434416
435417 r = sd_device_get_sysattr_value (device , "brightness" , & value );
436- if (r < 0 ) {
437- log_device_error_errno (device , r , "Failed to read system 'brightness' attribute: %m" );
438- return EXIT_FAILURE ;
439- }
418+ if (r < 0 )
419+ return log_device_error_errno (device , r , "Failed to read system 'brightness' attribute: %m" );
440420
441421 r = write_string_file (saved , value , WRITE_STRING_FILE_CREATE );
442- if (r < 0 ) {
443- log_device_error_errno (device , r , "Failed to write %s: %m" , saved );
444- return EXIT_FAILURE ;
445- }
422+ if (r < 0 )
423+ return log_device_error_errno (device , r , "Failed to write %s: %m" , saved );
446424
447425 } else {
448426 log_error ("Unknown verb %s." , argv [1 ]);
449- return EXIT_FAILURE ;
427+ return - EINVAL ;
450428 }
451429
452- return EXIT_SUCCESS ;
430+ return 0 ;
453431}
432+
433+ DEFINE_MAIN_FUNCTION (run );
0 commit comments