]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/shared/unit-name.h
hwdb: Update database of Bluetooth company identifiers
[thirdparty/systemd.git] / src / shared / unit-name.h
CommitLineData
03467c88 1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
9e2f7c11 2
c2f1db8f 3#pragma once
9e2f7c11
LP
4
5/***
6 This file is part of systemd.
7
8 Copyright 2010 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
9e2f7c11
LP
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 18 Lesser General Public License for more details.
9e2f7c11 19
5430f7f2 20 You should have received a copy of the GNU Lesser General Public License
9e2f7c11
LP
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22***/
23
71fad675 24#include <stdbool.h>
9e2f7c11 25
44a6b1b6
ZJS
26#include "macro.h"
27
71fad675 28#define UNIT_NAME_MAX 256
9e2f7c11 29
0a9f8ed0 30typedef enum UnitType UnitType;
f69614f8 31typedef enum UnitLoadState UnitLoadState;
0a9f8ed0
ZJS
32
33enum UnitType {
34 UNIT_SERVICE = 0,
35 UNIT_SOCKET,
e821075a 36 UNIT_BUSNAME,
0a9f8ed0 37 UNIT_TARGET,
e821075a 38 UNIT_SNAPSHOT,
0a9f8ed0
ZJS
39 UNIT_DEVICE,
40 UNIT_MOUNT,
41 UNIT_AUTOMOUNT,
0a9f8ed0 42 UNIT_SWAP,
e821075a 43 UNIT_TIMER,
0a9f8ed0 44 UNIT_PATH,
a016b922 45 UNIT_SLICE,
6c12b52e 46 UNIT_SCOPE,
0a9f8ed0
ZJS
47 _UNIT_TYPE_MAX,
48 _UNIT_TYPE_INVALID = -1
49};
50
f69614f8 51enum UnitLoadState {
45c0c61d 52 UNIT_STUB = 0,
f69614f8 53 UNIT_LOADED,
c2756a68 54 UNIT_NOT_FOUND,
f69614f8
ZJS
55 UNIT_ERROR,
56 UNIT_MERGED,
57 UNIT_MASKED,
58 _UNIT_LOAD_STATE_MAX,
59 _UNIT_LOAD_STATE_INVALID = -1
60};
61
44a6b1b6
ZJS
62const char *unit_type_to_string(UnitType i) _const_;
63UnitType unit_type_from_string(const char *s) _pure_;
0a9f8ed0 64
44a6b1b6
ZJS
65const char *unit_load_state_to_string(UnitLoadState i) _const_;
66UnitLoadState unit_load_state_from_string(const char *s) _pure_;
f69614f8 67
9e2f7c11
LP
68int unit_name_to_instance(const char *n, char **instance);
69char* unit_name_to_prefix(const char *n);
70char* unit_name_to_prefix_and_instance(const char *n);
71
f78e6385
ZJS
72enum template_valid {
73 TEMPLATE_INVALID,
74 TEMPLATE_VALID,
75};
76
77bool unit_name_is_valid(const char *n, enum template_valid template_ok) _pure_;
44a6b1b6
ZJS
78bool unit_prefix_is_valid(const char *p) _pure_;
79bool unit_instance_is_valid(const char *i) _pure_;
9e2f7c11 80
44a6b1b6 81UnitType unit_name_to_type(const char *n) _pure_;
5f739699 82
9e2f7c11
LP
83char *unit_name_change_suffix(const char *n, const char *suffix);
84
85char *unit_name_build(const char *prefix, const char *instance, const char *suffix);
9e2f7c11
LP
86
87char *unit_name_escape(const char *f);
88char *unit_name_unescape(const char *f);
35eb6b12 89char *unit_name_path_escape(const char *f);
9fc50704
LP
90char *unit_name_path_unescape(const char *f);
91
44a6b1b6
ZJS
92bool unit_name_is_template(const char *n) _pure_;
93bool unit_name_is_instance(const char *n) _pure_;
9e2f7c11
LP
94
95char *unit_name_replace_instance(const char *f, const char *i);
96
97char *unit_name_template(const char *f);
98
a16e1123 99char *unit_name_from_path(const char *path, const char *suffix);
9fff8a1f 100char *unit_name_from_path_instance(const char *prefix, const char *path, const char *suffix);
a16e1123
LP
101char *unit_name_to_path(const char *name);
102
48899192 103char *unit_dbus_path_from_name(const char *name);
ede3a796 104int unit_name_from_dbus_path(const char *path, char **name);
48899192 105
f78e6385
ZJS
106enum unit_name_mangle {
107 MANGLE_NOGLOB,
108 MANGLE_GLOB,
109};
110
111char *unit_name_mangle(const char *name, enum unit_name_mangle allow_globs);
112char *unit_name_mangle_with_suffix(const char *name, enum unit_name_mangle allow_globs, const char *suffix);
fb6becb4
LP
113
114int build_subslice(const char *slice, const char*name, char **subslice);