2011-07-22 06:21:18 +04:00
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2012-07-18 21:07:51 +04:00
# pragma once
2011-07-22 06:21:18 +04:00
/***
This file is part of systemd .
Copyright 2011 Lennart Poettering
systemd is free software ; you can redistribute it and / or modify it
2012-04-12 02:20:58 +04:00
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation ; either version 2.1 of the License , or
2011-07-22 06:21:18 +04:00
( 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
2012-04-12 02:20:58 +04:00
Lesser General Public License for more details .
2011-07-22 06:21:18 +04:00
2012-04-12 02:20:58 +04:00
You should have received a copy of the GNU Lesser General Public License
2011-07-22 06:21:18 +04:00
along with systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
# include "hashmap.h"
2014-10-08 13:59:46 +04:00
# include "unit-name.h"
2011-07-22 06:21:18 +04:00
typedef enum UnitFileScope {
UNIT_FILE_SYSTEM ,
UNIT_FILE_GLOBAL ,
UNIT_FILE_USER ,
_UNIT_FILE_SCOPE_MAX ,
_UNIT_FILE_SCOPE_INVALID = - 1
} UnitFileScope ;
typedef enum UnitFileState {
UNIT_FILE_ENABLED ,
UNIT_FILE_ENABLED_RUNTIME ,
UNIT_FILE_LINKED ,
UNIT_FILE_LINKED_RUNTIME ,
UNIT_FILE_MASKED ,
UNIT_FILE_MASKED_RUNTIME ,
UNIT_FILE_STATIC ,
UNIT_FILE_DISABLED ,
2012-09-11 03:11:32 +04:00
UNIT_FILE_INVALID ,
2011-07-22 06:21:18 +04:00
_UNIT_FILE_STATE_MAX ,
_UNIT_FILE_STATE_INVALID = - 1
} UnitFileState ;
2014-06-16 21:49:31 +04:00
typedef enum UnitFilePresetMode {
UNIT_FILE_PRESET_FULL ,
UNIT_FILE_PRESET_ENABLE_ONLY ,
UNIT_FILE_PRESET_DISABLE_ONLY ,
2014-07-10 06:29:24 +04:00
_UNIT_FILE_PRESET_MAX ,
2014-06-16 21:49:31 +04:00
_UNIT_FILE_PRESET_INVALID = - 1
} UnitFilePresetMode ;
2011-07-22 06:21:18 +04:00
typedef enum UnitFileChangeType {
UNIT_FILE_SYMLINK ,
UNIT_FILE_UNLINK ,
_UNIT_FILE_CHANGE_TYPE_MAX ,
_UNIT_FILE_CHANGE_TYPE_INVALID = - 1
} UnitFileChangeType ;
typedef struct UnitFileChange {
UnitFileChangeType type ;
char * path ;
char * source ;
} UnitFileChange ;
typedef struct UnitFileList {
char * path ;
UnitFileState state ;
} UnitFileList ;
2013-01-28 08:11:31 +04:00
typedef struct {
char * name ;
char * path ;
2013-01-29 07:34:38 +04:00
char * user ;
2013-01-28 08:11:31 +04:00
char * * aliases ;
char * * wanted_by ;
char * * required_by ;
2014-06-17 02:15:31 +04:00
char * default_instance ;
2013-01-28 08:11:31 +04:00
} InstallInfo ;
2013-12-27 09:16:39 +04:00
int unit_file_enable ( UnitFileScope scope , bool runtime , const char * root_dir , char * * files , bool force , UnitFileChange * * changes , unsigned * n_changes ) ;
int unit_file_disable ( UnitFileScope scope , bool runtime , const char * root_dir , char * * files , UnitFileChange * * changes , unsigned * n_changes ) ;
int unit_file_reenable ( UnitFileScope scope , bool runtime , const char * root_dir , char * * files , bool force , UnitFileChange * * changes , unsigned * n_changes ) ;
int unit_file_link ( UnitFileScope scope , bool runtime , const char * root_dir , char * * files , bool force , UnitFileChange * * changes , unsigned * n_changes ) ;
2014-06-16 21:49:31 +04:00
int unit_file_preset ( UnitFileScope scope , bool runtime , const char * root_dir , char * * files , UnitFilePresetMode mode , bool force , UnitFileChange * * changes , unsigned * n_changes ) ;
int unit_file_preset_all ( UnitFileScope scope , bool runtime , const char * root_dir , UnitFilePresetMode mode , bool force , UnitFileChange * * changes , unsigned * n_changes ) ;
2013-12-27 09:16:39 +04:00
int unit_file_mask ( UnitFileScope scope , bool runtime , const char * root_dir , char * * files , bool force , UnitFileChange * * changes , unsigned * n_changes ) ;
int unit_file_unmask ( UnitFileScope scope , bool runtime , const char * root_dir , char * * files , UnitFileChange * * changes , unsigned * n_changes ) ;
2013-11-20 00:12:59 +04:00
int unit_file_set_default ( UnitFileScope scope , const char * root_dir , const char * file , bool force , UnitFileChange * * changes , unsigned * n_changes ) ;
2013-05-28 13:05:48 +04:00
int unit_file_get_default ( UnitFileScope scope , const char * root_dir , char * * name ) ;
2014-10-08 13:59:46 +04:00
int unit_file_add_dependency ( UnitFileScope scope , bool runtime , const char * root_dir , char * * files , char * target , UnitDependency dep , bool force , UnitFileChange * * changes , unsigned * n_changes ) ;
2011-07-22 06:21:18 +04:00
UnitFileState unit_file_get_state ( UnitFileScope scope , const char * root_dir , const char * filename ) ;
int unit_file_get_list ( UnitFileScope scope , const char * root_dir , Hashmap * h ) ;
void unit_file_list_free ( Hashmap * h ) ;
void unit_file_changes_free ( UnitFileChange * changes , unsigned n_changes ) ;
2014-06-16 22:33:29 +04:00
int unit_file_query_preset ( UnitFileScope scope , const char * root_dir , const char * name ) ;
2011-07-22 06:21:18 +04:00
2013-05-03 06:51:50 +04:00
const char * unit_file_state_to_string ( UnitFileState s ) _const_ ;
UnitFileState unit_file_state_from_string ( const char * s ) _pure_ ;
2011-07-22 06:21:18 +04:00
2013-05-03 06:51:50 +04:00
const char * unit_file_change_type_to_string ( UnitFileChangeType s ) _const_ ;
UnitFileChangeType unit_file_change_type_from_string ( const char * s ) _pure_ ;
2014-06-16 21:49:31 +04:00
const char * unit_file_preset_mode_to_string ( UnitFilePresetMode m ) _const_ ;
UnitFilePresetMode unit_file_preset_mode_from_string ( const char * s ) _pure_ ;