2009-11-18 02:42:52 +03:00
/*-*- Mode: C; c-basic-offset: 8 -*-*/
2010-02-03 15:03:47 +03:00
/***
This file is part of systemd .
Copyright 2010 Lennart Poettering
systemd is free software ; you can redistribute it and / or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
systemd is distributed in the hope that it will be useful , but
WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
General Public License for more details .
You should have received a copy of the GNU General Public License
along with systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
2010-02-01 05:33:24 +03:00
# include <dbus/dbus.h>
2009-11-18 02:42:52 +03:00
# include <stdio.h>
# include <errno.h>
# include <string.h>
2010-01-20 21:19:53 +03:00
# include <unistd.h>
2009-11-18 02:42:52 +03:00
# include "manager.h"
2010-01-20 21:19:53 +03:00
# include "log.h"
2009-11-18 02:42:52 +03:00
int main ( int argc , char * argv [ ] ) {
Manager * m = NULL ;
2010-01-26 23:39:06 +03:00
Unit * target = NULL ;
2009-11-18 02:42:52 +03:00
Job * job = NULL ;
int r , retval = 1 ;
2010-04-05 00:49:26 +04:00
const char * default_unit ;
if ( argc > = 2 )
default_unit = argv [ 1 ] ;
else
default_unit = SPECIAL_DEFAULT_TARGET ;
2009-11-18 02:42:52 +03:00
2010-03-31 18:29:55 +04:00
if ( ( r = manager_new ( & m ) ) < 0 ) {
log_error ( " Failed to allocate manager object: %s " , strerror ( - r ) ) ;
2009-11-18 02:42:52 +03:00
goto finish ;
}
2010-01-29 05:18:09 +03:00
if ( ( r = manager_coldplug ( m ) ) < 0 ) {
log_error ( " Failed to retrieve coldplug information: %s " , strerror ( - r ) ) ;
goto finish ;
}
2010-04-05 00:49:26 +04:00
log_debug ( " Activating default unit: %s " , default_unit ) ;
if ( ( r = manager_load_unit ( m , default_unit , & target ) ) < 0 ) {
2010-01-26 21:06:50 +03:00
log_error ( " Failed to load default target: %s " , strerror ( - r ) ) ;
2009-11-18 02:42:52 +03:00
goto finish ;
}
2010-01-28 04:44:47 +03:00
printf ( " → By units: \n " ) ;
manager_dump_units ( m , stdout , " \t " ) ;
2010-01-27 02:20:21 +03:00
if ( ( r = manager_add_job ( m , JOB_START , target , JOB_REPLACE , false , & job ) ) < 0 ) {
log_error ( " Failed to start default target: %s " , strerror ( - r ) ) ;
goto finish ;
}
2010-01-19 06:15:20 +03:00
2010-01-26 09:02:51 +03:00
printf ( " → By jobs: \n " ) ;
2010-01-20 06:02:39 +03:00
manager_dump_jobs ( m , stdout , " \t " ) ;
2010-01-29 06:26:30 +03:00
if ( ( r = manager_loop ( m ) ) < 0 ) {
log_error ( " Failed to run mainloop: %s " , strerror ( - r ) ) ;
goto finish ;
}
2010-01-24 02:39:29 +03:00
2009-11-18 02:42:52 +03:00
retval = 0 ;
finish :
if ( m )
manager_free ( m ) ;
2010-01-27 06:36:30 +03:00
log_debug ( " Exit. " ) ;
2010-02-01 05:33:24 +03:00
dbus_shutdown ( ) ;
2009-11-18 02:42:52 +03:00
return retval ;
}