chiark / gitweb /
systemctl: introduce --now for enable, disable and mask
[elogind.git] / src / shared / install.h
index ff16d9f681a993edeb79c9c5579c4c2122ff7b5b..a9d77dd91b5244761bc489739891dcaaaaffce40 100644 (file)
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 ***/
 
+typedef enum UnitFileScope UnitFileScope;
+typedef enum UnitFileState UnitFileState;
+typedef enum UnitFilePresetMode UnitFilePresetMode;
+typedef enum UnitFileChangeType UnitFileChangeType;
+typedef struct UnitFileChange UnitFileChange;
+typedef struct UnitFileList UnitFileList;
+typedef struct UnitFileInstallInfo UnitFileInstallInfo;
+
 #include "hashmap.h"
+#include "unit-name.h"
+#include "path-lookup.h"
 
-typedef enum UnitFileScope {
+enum UnitFileScope {
         UNIT_FILE_SYSTEM,
         UNIT_FILE_GLOBAL,
         UNIT_FILE_USER,
         _UNIT_FILE_SCOPE_MAX,
         _UNIT_FILE_SCOPE_INVALID = -1
-} UnitFileScope;
+};
 
-typedef enum UnitFileState {
+enum UnitFileState {
         UNIT_FILE_ENABLED,
         UNIT_FILE_ENABLED_RUNTIME,
         UNIT_FILE_LINKED,
@@ -40,38 +50,39 @@ typedef enum UnitFileState {
         UNIT_FILE_MASKED_RUNTIME,
         UNIT_FILE_STATIC,
         UNIT_FILE_DISABLED,
+        UNIT_FILE_INDIRECT,
         UNIT_FILE_INVALID,
         _UNIT_FILE_STATE_MAX,
         _UNIT_FILE_STATE_INVALID = -1
-} UnitFileState;
+};
 
-typedef enum UnitFilePresetMode {
+enum UnitFilePresetMode {
         UNIT_FILE_PRESET_FULL,
         UNIT_FILE_PRESET_ENABLE_ONLY,
         UNIT_FILE_PRESET_DISABLE_ONLY,
         _UNIT_FILE_PRESET_MAX,
         _UNIT_FILE_PRESET_INVALID = -1
-} UnitFilePresetMode;
+};
 
-typedef enum UnitFileChangeType {
+enum UnitFileChangeType {
         UNIT_FILE_SYMLINK,
         UNIT_FILE_UNLINK,
         _UNIT_FILE_CHANGE_TYPE_MAX,
         _UNIT_FILE_CHANGE_TYPE_INVALID = -1
-} UnitFileChangeType;
+};
 
-typedef struct UnitFileChange {
+struct UnitFileChange {
         UnitFileChangeType type;
         char *path;
         char *source;
-} UnitFileChange;
+};
 
-typedef struct UnitFileList {
+struct UnitFileList {
         char *path;
         UnitFileState state;
-} UnitFileList;
+};
 
-typedef struct {
+struct UnitFileInstallInfo {
         char *name;
         char *path;
         char *user;
@@ -79,9 +90,10 @@ typedef struct {
         char **aliases;
         char **wanted_by;
         char **required_by;
+        char **also;
 
         char *default_instance;
-} InstallInfo;
+};
 
 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);
@@ -93,12 +105,22 @@ int unit_file_mask(UnitFileScope scope, bool runtime, const char *root_dir, char
 int unit_file_unmask(UnitFileScope scope, bool runtime, const char *root_dir, char **files, UnitFileChange **changes, unsigned *n_changes);
 int unit_file_set_default(UnitFileScope scope, const char *root_dir, const char *file, bool force, UnitFileChange **changes, unsigned *n_changes);
 int unit_file_get_default(UnitFileScope scope, const char *root_dir, char **name);
-
-UnitFileState unit_file_get_state(UnitFileScope scope, const char *root_dir, const char *filename);
+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);
+
+UnitFileState unit_file_lookup_state(
+                UnitFileScope scope,
+                const char *root_dir,
+                const LookupPaths *paths,
+                const char *name);
+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);
+int unit_file_changes_add(UnitFileChange **changes, unsigned *n_changes, UnitFileChangeType type, const char *path, const char *source);
 void unit_file_changes_free(UnitFileChange *changes, unsigned n_changes);
 
 int unit_file_query_preset(UnitFileScope scope, const char *root_dir, const char *name);