@@ -29,6 +29,11 @@ bool is_elevated()
29
29
return (geteuid () == 0 );
30
30
}
31
31
32
+ bool is_running (pid_t pid )
33
+ {
34
+ return (pid > 0 );
35
+ }
36
+
32
37
char * daemon_cmdline (char * args )
33
38
{
34
39
char * tmp = (char * )calloc (1 , FILENAME_MAX );
@@ -138,11 +143,6 @@ char *daemon_version_cmdline()
138
143
return daemon_cmdline ("--version" );
139
144
}
140
145
141
- bool is_running (pid_t pid )
142
- {
143
- return (pid > 0 );
144
- }
145
-
146
146
int daemon_start (service_t * service )
147
147
{
148
148
int res = 0 ;
@@ -387,24 +387,33 @@ int main()
387
387
// create a GMainLoop
388
388
gmainLoop = g_main_loop_new (NULL , FALSE);
389
389
390
- bool registered = false;
390
+ bool ret = false;
391
391
392
392
if (& LSRegisterPubPriv != 0 ) {
393
- registered = LSRegisterPubPriv (SERVICE_NAME , & handle , true, & lserror );
393
+ ret = LSRegisterPubPriv (SERVICE_NAME , & handle , true, & lserror );
394
394
} else {
395
- registered = LSRegister (SERVICE_NAME , & handle , & lserror );
395
+ ret = LSRegister (SERVICE_NAME , & handle , & lserror );
396
396
}
397
397
398
- if (!registered ) {
398
+ if (!ret ) {
399
399
ERR ("Unable to register on Luna bus: %s" , lserror .message );
400
- LSErrorFree (& lserror );
401
- return -1 ;
400
+ goto exit ;
401
+ }
402
+
403
+ if ((ret = LSRegisterCategory (handle , "/" , methods , NULL , NULL , & lserror )) && !ret ) {
404
+ ERR ("Unable to register category on Luna bus: %s" , lserror .message );
405
+ goto exit ;
402
406
}
403
407
404
- LSRegisterCategory (handle , "/" , methods , NULL , NULL , & lserror );
405
- LSCategorySetData (handle , "/" , & service , & lserror );
408
+ if ((ret = LSCategorySetData (handle , "/" , & service , & lserror )) && !ret ) {
409
+ ERR ("Unable to set category data on Luna bus: %s" , lserror .message );
410
+ goto exit ;
411
+ }
406
412
407
- LSGmainAttach (handle , gmainLoop , & lserror );
413
+ if ((ret = LSGmainAttach (handle , gmainLoop , & lserror )) && !ret ) {
414
+ ERR ("Unable to attach main loop: %s" , lserror .message );
415
+ goto exit ;
416
+ }
408
417
409
418
DBG ("Going into main loop.." );
410
419
@@ -416,8 +425,13 @@ int main()
416
425
DBG ("Cleaning up service..." );
417
426
daemon_terminate (& service );
418
427
419
- DBG ("Unregistering service..." );
420
- LSUnregister (handle , & lserror );
428
+ exit :
429
+ if (handle ) {
430
+ DBG ("Unregistering service..." );
431
+ LSUnregister (handle , & lserror );
432
+ }
433
+
434
+ LSErrorFree (& lserror );
421
435
422
436
// Decreases the reference count on a GMainLoop object by one
423
437
g_main_loop_unref (gmainLoop );
0 commit comments