Remove dead code and unexport some calls
"make check-api-unused" informs us about code that is not used anymore or that is exported but only used internally. Fix these all over the place.
This commit is contained in:
parent
f842cd74ea
commit
9588bc3209
|
@ -155,7 +155,7 @@ _pure_ static const char *tty_path(const ExecContext *context) {
|
||||||
return "/dev/console";
|
return "/dev/console";
|
||||||
}
|
}
|
||||||
|
|
||||||
void exec_context_tty_reset(const ExecContext *context) {
|
static void exec_context_tty_reset(const ExecContext *context) {
|
||||||
assert(context);
|
assert(context);
|
||||||
|
|
||||||
if (context->tty_vhangup)
|
if (context->tty_vhangup)
|
||||||
|
|
|
@ -194,7 +194,6 @@ void exec_context_init(ExecContext *c);
|
||||||
void exec_context_done(ExecContext *c, bool reloading_or_reexecuting);
|
void exec_context_done(ExecContext *c, bool reloading_or_reexecuting);
|
||||||
void exec_context_tmp_dirs_done(ExecContext *c);
|
void exec_context_tmp_dirs_done(ExecContext *c);
|
||||||
void exec_context_dump(ExecContext *c, FILE* f, const char *prefix);
|
void exec_context_dump(ExecContext *c, FILE* f, const char *prefix);
|
||||||
void exec_context_tty_reset(const ExecContext *context);
|
|
||||||
|
|
||||||
int exec_context_load_environment(const ExecContext *c, char ***l);
|
int exec_context_load_environment(const ExecContext *c, char ***l);
|
||||||
|
|
||||||
|
|
|
@ -416,7 +416,7 @@ int job_type_merge_and_collapse(JobType *a, JobType b, Unit *u) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool job_is_runnable(Job *j) {
|
static bool job_is_runnable(Job *j) {
|
||||||
Iterator i;
|
Iterator i;
|
||||||
Unit *other;
|
Unit *other;
|
||||||
|
|
||||||
|
|
|
@ -206,8 +206,6 @@ void job_type_collapse(JobType *t, Unit *u);
|
||||||
|
|
||||||
int job_type_merge_and_collapse(JobType *a, JobType b, Unit *u);
|
int job_type_merge_and_collapse(JobType *a, JobType b, Unit *u);
|
||||||
|
|
||||||
bool job_is_runnable(Job *j);
|
|
||||||
|
|
||||||
void job_add_to_run_queue(Job *j);
|
void job_add_to_run_queue(Job *j);
|
||||||
void job_add_to_dbus_queue(Job *j);
|
void job_add_to_dbus_queue(Job *j);
|
||||||
|
|
||||||
|
|
|
@ -800,7 +800,7 @@ int manager_enumerate(Manager *m) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int manager_coldplug(Manager *m) {
|
static int manager_coldplug(Manager *m) {
|
||||||
int r = 0, q;
|
int r = 0, q;
|
||||||
Iterator i;
|
Iterator i;
|
||||||
Unit *u;
|
Unit *u;
|
||||||
|
@ -880,6 +880,29 @@ fail:
|
||||||
m->unit_path_cache = NULL;
|
m->unit_path_cache = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int manager_distribute_fds(Manager *m, FDSet *fds) {
|
||||||
|
Unit *u;
|
||||||
|
Iterator i;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
assert(m);
|
||||||
|
|
||||||
|
HASHMAP_FOREACH(u, m->units, i) {
|
||||||
|
|
||||||
|
if (fdset_size(fds) <= 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (UNIT_VTABLE(u)->distribute_fds) {
|
||||||
|
r = UNIT_VTABLE(u)->distribute_fds(u, fds);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int manager_startup(Manager *m, FILE *serialization, FDSet *fds) {
|
int manager_startup(Manager *m, FILE *serialization, FDSet *fds) {
|
||||||
int r, q;
|
int r, q;
|
||||||
|
|
||||||
|
@ -1187,7 +1210,7 @@ void manager_clear_jobs(Manager *m) {
|
||||||
job_finish_and_invalidate(j, JOB_CANCELED, false);
|
job_finish_and_invalidate(j, JOB_CANCELED, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned manager_dispatch_run_queue(Manager *m) {
|
static unsigned manager_dispatch_run_queue(Manager *m) {
|
||||||
Job *j;
|
Job *j;
|
||||||
unsigned n = 0;
|
unsigned n = 0;
|
||||||
|
|
||||||
|
@ -1215,7 +1238,7 @@ unsigned manager_dispatch_run_queue(Manager *m) {
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned manager_dispatch_dbus_queue(Manager *m) {
|
static unsigned manager_dispatch_dbus_queue(Manager *m) {
|
||||||
Job *j;
|
Job *j;
|
||||||
Unit *u;
|
Unit *u;
|
||||||
unsigned n = 0;
|
unsigned n = 0;
|
||||||
|
@ -2298,28 +2321,6 @@ finish:
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int manager_distribute_fds(Manager *m, FDSet *fds) {
|
|
||||||
Unit *u;
|
|
||||||
Iterator i;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
assert(m);
|
|
||||||
|
|
||||||
HASHMAP_FOREACH(u, m->units, i) {
|
|
||||||
|
|
||||||
if (fdset_size(fds) <= 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (UNIT_VTABLE(u)->distribute_fds) {
|
|
||||||
r = UNIT_VTABLE(u)->distribute_fds(u, fds);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int manager_reload(Manager *m) {
|
int manager_reload(Manager *m) {
|
||||||
int r, q;
|
int r, q;
|
||||||
_cleanup_fclose_ FILE *f = NULL;
|
_cleanup_fclose_ FILE *f = NULL;
|
||||||
|
|
|
@ -265,7 +265,6 @@ int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **m);
|
||||||
void manager_free(Manager *m);
|
void manager_free(Manager *m);
|
||||||
|
|
||||||
int manager_enumerate(Manager *m);
|
int manager_enumerate(Manager *m);
|
||||||
int manager_coldplug(Manager *m);
|
|
||||||
int manager_startup(Manager *m, FILE *serialization, FDSet *fds);
|
int manager_startup(Manager *m, FILE *serialization, FDSet *fds);
|
||||||
|
|
||||||
Job *manager_get_job(Manager *m, uint32_t id);
|
Job *manager_get_job(Manager *m, uint32_t id);
|
||||||
|
@ -288,8 +287,6 @@ void manager_dump_jobs(Manager *s, FILE *f, const char *prefix);
|
||||||
void manager_clear_jobs(Manager *m);
|
void manager_clear_jobs(Manager *m);
|
||||||
|
|
||||||
unsigned manager_dispatch_load_queue(Manager *m);
|
unsigned manager_dispatch_load_queue(Manager *m);
|
||||||
unsigned manager_dispatch_run_queue(Manager *m);
|
|
||||||
unsigned manager_dispatch_dbus_queue(Manager *m);
|
|
||||||
|
|
||||||
int manager_environment_add(Manager *m, char **environment);
|
int manager_environment_add(Manager *m, char **environment);
|
||||||
int manager_set_default_rlimits(Manager *m, struct rlimit **default_rlimit);
|
int manager_set_default_rlimits(Manager *m, struct rlimit **default_rlimit);
|
||||||
|
@ -303,7 +300,6 @@ int manager_open_serialization(Manager *m, FILE **_f);
|
||||||
|
|
||||||
int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool switching_root);
|
int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool switching_root);
|
||||||
int manager_deserialize(Manager *m, FILE *f, FDSet *fds);
|
int manager_deserialize(Manager *m, FILE *f, FDSet *fds);
|
||||||
int manager_distribute_fds(Manager *m, FDSet *fds);
|
|
||||||
|
|
||||||
int manager_reload(Manager *m);
|
int manager_reload(Manager *m);
|
||||||
|
|
||||||
|
|
100
src/core/unit.c
100
src/core/unit.c
|
@ -946,6 +946,44 @@ static int unit_add_default_dependencies(Unit *u) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int unit_add_mount_links(Unit *u) {
|
||||||
|
char **i;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
assert(u);
|
||||||
|
|
||||||
|
STRV_FOREACH(i, u->requires_mounts_for) {
|
||||||
|
char prefix[strlen(*i) + 1];
|
||||||
|
|
||||||
|
PATH_FOREACH_PREFIX_MORE(prefix, *i) {
|
||||||
|
Unit *m;
|
||||||
|
|
||||||
|
r = manager_get_unit_by_path(u->manager, prefix, ".mount", &m);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
if (r == 0)
|
||||||
|
continue;
|
||||||
|
if (m == u)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (m->load_state != UNIT_LOADED)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
r = unit_add_dependency(u, UNIT_AFTER, m, true);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
|
if (m->fragment_path) {
|
||||||
|
r = unit_add_dependency(u, UNIT_REQUIRES, m, true);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int unit_load(Unit *u) {
|
int unit_load(Unit *u) {
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
|
@ -1015,7 +1053,7 @@ fail:
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool unit_condition_test(Unit *u) {
|
static bool unit_condition_test(Unit *u) {
|
||||||
assert(u);
|
assert(u);
|
||||||
|
|
||||||
dual_timestamp_get(&u->condition_timestamp);
|
dual_timestamp_get(&u->condition_timestamp);
|
||||||
|
@ -2118,28 +2156,6 @@ int unit_load_related_unit(Unit *u, const char *type, Unit **_found) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int unit_get_related_unit(Unit *u, const char *type, Unit **_found) {
|
|
||||||
_cleanup_free_ char *t = NULL;
|
|
||||||
Unit *found;
|
|
||||||
|
|
||||||
assert(u);
|
|
||||||
assert(type);
|
|
||||||
assert(_found);
|
|
||||||
|
|
||||||
t = unit_name_change_suffix(u->id, type);
|
|
||||||
if (!t)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
assert(!unit_has_name(u, t));
|
|
||||||
|
|
||||||
found = manager_get_unit(u->manager, t);
|
|
||||||
if (!found)
|
|
||||||
return -ENOENT;
|
|
||||||
|
|
||||||
*_found = found;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int unit_watch_bus_name(Unit *u, const char *name) {
|
int unit_watch_bus_name(Unit *u, const char *name) {
|
||||||
assert(u);
|
assert(u);
|
||||||
assert(name);
|
assert(name);
|
||||||
|
@ -2684,44 +2700,6 @@ void unit_ref_unset(UnitRef *ref) {
|
||||||
ref->unit = NULL;
|
ref->unit = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int unit_add_mount_links(Unit *u) {
|
|
||||||
char **i;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
assert(u);
|
|
||||||
|
|
||||||
STRV_FOREACH(i, u->requires_mounts_for) {
|
|
||||||
char prefix[strlen(*i) + 1];
|
|
||||||
|
|
||||||
PATH_FOREACH_PREFIX_MORE(prefix, *i) {
|
|
||||||
Unit *m;
|
|
||||||
|
|
||||||
r = manager_get_unit_by_path(u->manager, prefix, ".mount", &m);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
if (r == 0)
|
|
||||||
continue;
|
|
||||||
if (m == u)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (m->load_state != UNIT_LOADED)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
r = unit_add_dependency(u, UNIT_AFTER, m, true);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
if (m->fragment_path) {
|
|
||||||
r = unit_add_dependency(u, UNIT_REQUIRES, m, true);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int unit_exec_context_defaults(Unit *u, ExecContext *c) {
|
int unit_exec_context_defaults(Unit *u, ExecContext *c) {
|
||||||
unsigned i;
|
unsigned i;
|
||||||
int r;
|
int r;
|
||||||
|
|
|
@ -545,7 +545,6 @@ int set_unit_path(const char *p);
|
||||||
char *unit_dbus_path(Unit *u);
|
char *unit_dbus_path(Unit *u);
|
||||||
|
|
||||||
int unit_load_related_unit(Unit *u, const char *type, Unit **_found);
|
int unit_load_related_unit(Unit *u, const char *type, Unit **_found);
|
||||||
int unit_get_related_unit(Unit *u, const char *type, Unit **_found);
|
|
||||||
|
|
||||||
bool unit_can_serialize(Unit *u) _pure_;
|
bool unit_can_serialize(Unit *u) _pure_;
|
||||||
int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs);
|
int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs);
|
||||||
|
@ -580,8 +579,6 @@ int unit_following_set(Unit *u, Set **s);
|
||||||
void unit_start_on_failure(Unit *u);
|
void unit_start_on_failure(Unit *u);
|
||||||
void unit_trigger_notify(Unit *u);
|
void unit_trigger_notify(Unit *u);
|
||||||
|
|
||||||
bool unit_condition_test(Unit *u);
|
|
||||||
|
|
||||||
UnitFileState unit_get_unit_file_state(Unit *u);
|
UnitFileState unit_get_unit_file_state(Unit *u);
|
||||||
|
|
||||||
Unit* unit_ref_set(UnitRef *ref, Unit *u);
|
Unit* unit_ref_set(UnitRef *ref, Unit *u);
|
||||||
|
@ -590,8 +587,6 @@ void unit_ref_unset(UnitRef *ref);
|
||||||
#define UNIT_DEREF(ref) ((ref).unit)
|
#define UNIT_DEREF(ref) ((ref).unit)
|
||||||
#define UNIT_ISSET(ref) (!!(ref).unit)
|
#define UNIT_ISSET(ref) (!!(ref).unit)
|
||||||
|
|
||||||
int unit_add_mount_links(Unit *u);
|
|
||||||
|
|
||||||
int unit_exec_context_defaults(Unit *u, ExecContext *c);
|
int unit_exec_context_defaults(Unit *u, ExecContext *c);
|
||||||
|
|
||||||
ExecContext *unit_get_exec_context(Unit *u) _pure_;
|
ExecContext *unit_get_exec_context(Unit *u) _pure_;
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
/* How many entries to keep in the entry array chain cache at max */
|
/* How many entries to keep in the entry array chain cache at max */
|
||||||
#define CHAIN_CACHE_MAX 20
|
#define CHAIN_CACHE_MAX 20
|
||||||
|
|
||||||
int journal_file_set_online(JournalFile *f) {
|
static int journal_file_set_online(JournalFile *f) {
|
||||||
assert(f);
|
assert(f);
|
||||||
|
|
||||||
if (!f->writable)
|
if (!f->writable)
|
||||||
|
|
|
@ -111,7 +111,6 @@ int journal_file_open(
|
||||||
JournalFile **ret);
|
JournalFile **ret);
|
||||||
|
|
||||||
int journal_file_set_offline(JournalFile *f);
|
int journal_file_set_offline(JournalFile *f);
|
||||||
int journal_file_set_online(JournalFile *f);
|
|
||||||
void journal_file_close(JournalFile *j);
|
void journal_file_close(JournalFile *j);
|
||||||
|
|
||||||
int journal_file_open_reliably(
|
int journal_file_open_reliably(
|
||||||
|
|
|
@ -28,7 +28,7 @@ static inline void set_bit(uint64_t filter[], unsigned b) {
|
||||||
filter[b >> 6] |= 1ULL << (b & 63);
|
filter[b >> 6] |= 1ULL << (b & 63);
|
||||||
}
|
}
|
||||||
|
|
||||||
void bloom_add_data(uint64_t filter[BLOOM_SIZE/8], const void *data, size_t n) {
|
static void bloom_add_data(uint64_t filter[BLOOM_SIZE/8], const void *data, size_t n) {
|
||||||
uint16_t hash[8];
|
uint16_t hash[8];
|
||||||
unsigned k = 0;
|
unsigned k = 0;
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,5 @@
|
||||||
|
|
||||||
#define BLOOM_SIZE 64
|
#define BLOOM_SIZE 64
|
||||||
|
|
||||||
void bloom_add_data(uint64_t filter[BLOOM_SIZE/8], const void *data, size_t n);
|
|
||||||
void bloom_add_pair(uint64_t filter[BLOOM_SIZE/8], const char *a, const char *b);
|
void bloom_add_pair(uint64_t filter[BLOOM_SIZE/8], const char *a, const char *b);
|
||||||
void bloom_add_prefixes(uint64_t filter[BLOOM_SIZE/8], const char *a, const char *b, char sep);
|
void bloom_add_prefixes(uint64_t filter[BLOOM_SIZE/8], const char *a, const char *b, char sep);
|
||||||
|
|
|
@ -54,18 +54,7 @@ Device* device_new(Manager *m, const char *sysfs, bool master) {
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
void device_free(Device *d) {
|
static void device_detach(Device *d) {
|
||||||
assert(d);
|
|
||||||
|
|
||||||
device_detach(d);
|
|
||||||
|
|
||||||
hashmap_remove(d->manager->devices, d->sysfs);
|
|
||||||
|
|
||||||
free(d->sysfs);
|
|
||||||
free(d);
|
|
||||||
}
|
|
||||||
|
|
||||||
void device_detach(Device *d) {
|
|
||||||
Seat *s;
|
Seat *s;
|
||||||
SessionDevice *sd;
|
SessionDevice *sd;
|
||||||
|
|
||||||
|
@ -87,6 +76,17 @@ void device_detach(Device *d) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void device_free(Device *d) {
|
||||||
|
assert(d);
|
||||||
|
|
||||||
|
device_detach(d);
|
||||||
|
|
||||||
|
hashmap_remove(d->manager->devices, d->sysfs);
|
||||||
|
|
||||||
|
free(d->sysfs);
|
||||||
|
free(d);
|
||||||
|
}
|
||||||
|
|
||||||
void device_attach(Device *d, Seat *s) {
|
void device_attach(Device *d, Seat *s) {
|
||||||
Device *i;
|
Device *i;
|
||||||
bool had_master;
|
bool had_master;
|
||||||
|
|
|
@ -45,4 +45,3 @@ struct Device {
|
||||||
Device* device_new(Manager *m, const char *sysfs, bool master);
|
Device* device_new(Manager *m, const char *sysfs, bool master);
|
||||||
void device_free(Device *d);
|
void device_free(Device *d);
|
||||||
void device_attach(Device *d, Seat *s);
|
void device_attach(Device *d, Seat *s);
|
||||||
void device_detach(Device *d);
|
|
||||||
|
|
|
@ -177,7 +177,7 @@ void manager_free(Manager *m) {
|
||||||
free(m);
|
free(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
int manager_enumerate_devices(Manager *m) {
|
static int manager_enumerate_devices(Manager *m) {
|
||||||
struct udev_list_entry *item = NULL, *first = NULL;
|
struct udev_list_entry *item = NULL, *first = NULL;
|
||||||
struct udev_enumerate *e;
|
struct udev_enumerate *e;
|
||||||
int r;
|
int r;
|
||||||
|
@ -226,7 +226,7 @@ finish:
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int manager_enumerate_buttons(Manager *m) {
|
static int manager_enumerate_buttons(Manager *m) {
|
||||||
struct udev_list_entry *item = NULL, *first = NULL;
|
struct udev_list_entry *item = NULL, *first = NULL;
|
||||||
struct udev_enumerate *e;
|
struct udev_enumerate *e;
|
||||||
int r;
|
int r;
|
||||||
|
@ -284,7 +284,7 @@ finish:
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int manager_enumerate_seats(Manager *m) {
|
static int manager_enumerate_seats(Manager *m) {
|
||||||
_cleanup_closedir_ DIR *d = NULL;
|
_cleanup_closedir_ DIR *d = NULL;
|
||||||
struct dirent *de;
|
struct dirent *de;
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
@ -357,7 +357,7 @@ static int manager_enumerate_linger_users(Manager *m) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int manager_enumerate_users(Manager *m) {
|
static int manager_enumerate_users(Manager *m) {
|
||||||
_cleanup_closedir_ DIR *d = NULL;
|
_cleanup_closedir_ DIR *d = NULL;
|
||||||
struct dirent *de;
|
struct dirent *de;
|
||||||
int r, k;
|
int r, k;
|
||||||
|
@ -401,7 +401,7 @@ int manager_enumerate_users(Manager *m) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int manager_enumerate_sessions(Manager *m) {
|
static int manager_enumerate_sessions(Manager *m) {
|
||||||
_cleanup_closedir_ DIR *d = NULL;
|
_cleanup_closedir_ DIR *d = NULL;
|
||||||
struct dirent *de;
|
struct dirent *de;
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
@ -449,7 +449,7 @@ int manager_enumerate_sessions(Manager *m) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int manager_enumerate_inhibitors(Manager *m) {
|
static int manager_enumerate_inhibitors(Manager *m) {
|
||||||
_cleanup_closedir_ DIR *d = NULL;
|
_cleanup_closedir_ DIR *d = NULL;
|
||||||
struct dirent *de;
|
struct dirent *de;
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
|
|
@ -135,13 +135,6 @@ int manager_add_inhibitor(Manager *m, const char* id, Inhibitor **_inhibitor);
|
||||||
int manager_process_seat_device(Manager *m, struct udev_device *d);
|
int manager_process_seat_device(Manager *m, struct udev_device *d);
|
||||||
int manager_process_button_device(Manager *m, struct udev_device *d);
|
int manager_process_button_device(Manager *m, struct udev_device *d);
|
||||||
|
|
||||||
int manager_enumerate_devices(Manager *m);
|
|
||||||
int manager_enumerate_buttons(Manager *m);
|
|
||||||
int manager_enumerate_seats(Manager *m);
|
|
||||||
int manager_enumerate_sessions(Manager *m);
|
|
||||||
int manager_enumerate_users(Manager *m);
|
|
||||||
int manager_enumerate_inhibitors(Manager *m);
|
|
||||||
|
|
||||||
int manager_startup(Manager *m);
|
int manager_startup(Manager *m);
|
||||||
int manager_run(Manager *m);
|
int manager_run(Manager *m);
|
||||||
int manager_spawn_autovt(Manager *m, int vtnr);
|
int manager_spawn_autovt(Manager *m, int vtnr);
|
||||||
|
|
|
@ -279,37 +279,6 @@ int cg_kill_recursive(const char *controller, const char *path, int sig, bool si
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cg_kill_recursive_and_wait(const char *controller, const char *path, bool rem) {
|
|
||||||
unsigned i;
|
|
||||||
|
|
||||||
assert(path);
|
|
||||||
|
|
||||||
/* This safely kills all processes; first it sends a SIGTERM,
|
|
||||||
* then checks 8 times after 200ms whether the group is now
|
|
||||||
* empty, then kills everything that is left with SIGKILL and
|
|
||||||
* finally checks 5 times after 200ms each whether the group
|
|
||||||
* is finally empty. */
|
|
||||||
|
|
||||||
for (i = 0; i < 15; i++) {
|
|
||||||
int sig, r;
|
|
||||||
|
|
||||||
if (i <= 0)
|
|
||||||
sig = SIGTERM;
|
|
||||||
else if (i == 9)
|
|
||||||
sig = SIGKILL;
|
|
||||||
else
|
|
||||||
sig = 0;
|
|
||||||
|
|
||||||
r = cg_kill_recursive(controller, path, sig, true, true, rem, NULL);
|
|
||||||
if (r <= 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
usleep(200 * USEC_PER_MSEC);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int cg_migrate(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self) {
|
int cg_migrate(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self) {
|
||||||
bool done = false;
|
bool done = false;
|
||||||
_cleanup_set_free_ Set *s = NULL;
|
_cleanup_set_free_ Set *s = NULL;
|
||||||
|
@ -941,19 +910,6 @@ int cg_is_empty(const char *controller, const char *path, bool ignore_self) {
|
||||||
return !found;
|
return !found;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cg_is_empty_by_spec(const char *spec, bool ignore_self) {
|
|
||||||
_cleanup_free_ char *controller = NULL, *path = NULL;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
assert(spec);
|
|
||||||
|
|
||||||
r = cg_split_spec(spec, &controller, &path);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
return cg_is_empty(controller, path, ignore_self);
|
|
||||||
}
|
|
||||||
|
|
||||||
int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_self) {
|
int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_self) {
|
||||||
_cleanup_closedir_ DIR *d = NULL;
|
_cleanup_closedir_ DIR *d = NULL;
|
||||||
char *fn;
|
char *fn;
|
||||||
|
@ -1080,33 +1036,6 @@ int cg_split_spec(const char *spec, char **controller, char **path) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cg_join_spec(const char *controller, const char *path, char **spec) {
|
|
||||||
char *s;
|
|
||||||
|
|
||||||
assert(path);
|
|
||||||
|
|
||||||
if (!controller)
|
|
||||||
controller = "systemd";
|
|
||||||
else {
|
|
||||||
if (!cg_controller_is_valid(controller, true))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
controller = normalize_controller(controller);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!path_is_absolute(path))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
s = strjoin(controller, ":", path, NULL);
|
|
||||||
if (!s)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
path_kill_slashes(s + strlen(controller) + 1);
|
|
||||||
|
|
||||||
*spec = s;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int cg_mangle_path(const char *path, char **result) {
|
int cg_mangle_path(const char *path, char **result) {
|
||||||
_cleanup_free_ char *c = NULL, *p = NULL;
|
_cleanup_free_ char *c = NULL, *p = NULL;
|
||||||
char *t;
|
char *t;
|
||||||
|
@ -1153,43 +1082,6 @@ int cg_get_root_path(char **path) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char **cg_shorten_controllers(char **controllers) {
|
|
||||||
char **f, **t;
|
|
||||||
|
|
||||||
if (!controllers)
|
|
||||||
return controllers;
|
|
||||||
|
|
||||||
for (f = controllers, t = controllers; *f; f++) {
|
|
||||||
const char *p;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
p = normalize_controller(*f);
|
|
||||||
|
|
||||||
if (streq(p, "systemd")) {
|
|
||||||
free(*f);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cg_controller_is_valid(p, true)) {
|
|
||||||
log_warning("Controller %s is not valid, removing from controllers list.", p);
|
|
||||||
free(*f);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = check_hierarchy(p);
|
|
||||||
if (r < 0) {
|
|
||||||
log_debug("Controller %s is not available, removing from controllers list.", p);
|
|
||||||
free(*f);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
*(t++) = *f;
|
|
||||||
}
|
|
||||||
|
|
||||||
*t = NULL;
|
|
||||||
return strv_uniq(controllers);
|
|
||||||
}
|
|
||||||
|
|
||||||
int cg_pid_get_path_shifted(pid_t pid, char **root, char **cgroup) {
|
int cg_pid_get_path_shifted(pid_t pid, char **root, char **cgroup) {
|
||||||
_cleanup_free_ char *cg_root = NULL;
|
_cleanup_free_ char *cg_root = NULL;
|
||||||
char *cg_process, *p;
|
char *cg_process, *p;
|
||||||
|
@ -1529,35 +1421,6 @@ int cg_pid_get_slice(pid_t pid, char **slice) {
|
||||||
return cg_path_get_slice(cgroup, slice);
|
return cg_path_get_slice(cgroup, slice);
|
||||||
}
|
}
|
||||||
|
|
||||||
int cg_controller_from_attr(const char *attr, char **controller) {
|
|
||||||
const char *dot;
|
|
||||||
char *c;
|
|
||||||
|
|
||||||
assert(attr);
|
|
||||||
assert(controller);
|
|
||||||
|
|
||||||
if (!filename_is_safe(attr))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
dot = strchr(attr, '.');
|
|
||||||
if (!dot) {
|
|
||||||
*controller = NULL;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
c = strndup(attr, dot - attr);
|
|
||||||
if (!c)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
if (!cg_controller_is_valid(c, false)) {
|
|
||||||
free(c);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
*controller = c;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *cg_escape(const char *p) {
|
char *cg_escape(const char *p) {
|
||||||
bool need_prefix = false;
|
bool need_prefix = false;
|
||||||
|
|
||||||
|
|
|
@ -60,14 +60,12 @@ int cg_read_subgroup(DIR *d, char **fn);
|
||||||
|
|
||||||
int cg_kill(const char *controller, const char *path, int sig, bool sigcont, bool ignore_self, Set *s);
|
int cg_kill(const char *controller, const char *path, int sig, bool sigcont, bool ignore_self, Set *s);
|
||||||
int cg_kill_recursive(const char *controller, const char *path, int sig, bool sigcont, bool ignore_self, bool remove, Set *s);
|
int cg_kill_recursive(const char *controller, const char *path, int sig, bool sigcont, bool ignore_self, bool remove, Set *s);
|
||||||
int cg_kill_recursive_and_wait(const char *controller, const char *path, bool remove);
|
|
||||||
|
|
||||||
int cg_migrate(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self);
|
int cg_migrate(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self);
|
||||||
int cg_migrate_recursive(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self, bool remove);
|
int cg_migrate_recursive(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self, bool remove);
|
||||||
int cg_migrate_recursive_fallback(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self, bool rem);
|
int cg_migrate_recursive_fallback(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self, bool rem);
|
||||||
|
|
||||||
int cg_split_spec(const char *spec, char **controller, char **path);
|
int cg_split_spec(const char *spec, char **controller, char **path);
|
||||||
int cg_join_spec(const char *controller, const char *path, char **spec);
|
|
||||||
int cg_mangle_path(const char *path, char **result);
|
int cg_mangle_path(const char *path, char **result);
|
||||||
|
|
||||||
int cg_get_path(const char *controller, const char *path, const char *suffix, char **fs);
|
int cg_get_path(const char *controller, const char *path, const char *suffix, char **fs);
|
||||||
|
@ -94,7 +92,6 @@ int cg_install_release_agent(const char *controller, const char *agent);
|
||||||
int cg_uninstall_release_agent(const char *controller);
|
int cg_uninstall_release_agent(const char *controller);
|
||||||
|
|
||||||
int cg_is_empty(const char *controller, const char *path, bool ignore_self);
|
int cg_is_empty(const char *controller, const char *path, bool ignore_self);
|
||||||
int cg_is_empty_by_spec(const char *spec, bool ignore_self);
|
|
||||||
int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_self);
|
int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_self);
|
||||||
|
|
||||||
int cg_get_root_path(char **path);
|
int cg_get_root_path(char **path);
|
||||||
|
@ -117,10 +114,6 @@ int cg_pid_get_slice(pid_t pid, char **slice);
|
||||||
|
|
||||||
int cg_path_decode_unit(const char *cgroup, char **unit);
|
int cg_path_decode_unit(const char *cgroup, char **unit);
|
||||||
|
|
||||||
char **cg_shorten_controllers(char **controllers);
|
|
||||||
|
|
||||||
int cg_controller_from_attr(const char *attr, char **controller);
|
|
||||||
|
|
||||||
char *cg_escape(const char *p);
|
char *cg_escape(const char *p);
|
||||||
char *cg_unescape(const char *p) _pure_;
|
char *cg_unescape(const char *p) _pure_;
|
||||||
|
|
||||||
|
|
|
@ -517,37 +517,6 @@ int config_parse_bool(const char* unit,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int config_parse_tristate(const char *unit,
|
|
||||||
const char *filename,
|
|
||||||
unsigned line,
|
|
||||||
const char *section,
|
|
||||||
const char *lvalue,
|
|
||||||
int ltype,
|
|
||||||
const char *rvalue,
|
|
||||||
void *data,
|
|
||||||
void *userdata) {
|
|
||||||
|
|
||||||
int k;
|
|
||||||
int *b = data;
|
|
||||||
|
|
||||||
assert(filename);
|
|
||||||
assert(lvalue);
|
|
||||||
assert(rvalue);
|
|
||||||
assert(data);
|
|
||||||
|
|
||||||
/* Tristates are like booleans, but can also take the 'default' value, i.e. "-1" */
|
|
||||||
|
|
||||||
k = parse_boolean(rvalue);
|
|
||||||
if (k < 0) {
|
|
||||||
log_syntax(unit, LOG_ERR, filename, line, -k,
|
|
||||||
"Failed to parse boolean value, ignoring: %s", rvalue);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
*b = !!k;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int config_parse_string(const char *unit,
|
int config_parse_string(const char *unit,
|
||||||
const char *filename,
|
const char *filename,
|
||||||
unsigned line,
|
unsigned line,
|
||||||
|
|
|
@ -99,7 +99,6 @@ int config_parse_double(const char *unit, const char *filename, unsigned line, c
|
||||||
int config_parse_bytes_size(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
int config_parse_bytes_size(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||||
int config_parse_bytes_off(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
int config_parse_bytes_off(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||||
int config_parse_bool(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
int config_parse_bool(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||||
int config_parse_tristate(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
|
||||||
int config_parse_string(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
int config_parse_string(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||||
int config_parse_path(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
int config_parse_path(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||||
int config_parse_strv(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
int config_parse_strv(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
||||||
|
|
|
@ -2924,11 +2924,13 @@ int fchmod_and_fchown(int fd, mode_t mode, uid_t uid, gid_t gid) {
|
||||||
* first change the access mode and only then hand out
|
* first change the access mode and only then hand out
|
||||||
* ownership to avoid a window where access is too open. */
|
* ownership to avoid a window where access is too open. */
|
||||||
|
|
||||||
if (fchmod(fd, mode) < 0)
|
if (mode != (mode_t) -1)
|
||||||
return -errno;
|
if (fchmod(fd, mode) < 0)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
if (fchown(fd, uid, gid) < 0)
|
if (uid != (uid_t) -1 || gid != (gid_t) -1)
|
||||||
return -errno;
|
if (fchown(fd, uid, gid) < 0)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -3040,13 +3042,14 @@ int status_printf(const char *status, bool ellipse, bool ephemeral, const char *
|
||||||
}
|
}
|
||||||
|
|
||||||
int status_welcome(void) {
|
int status_welcome(void) {
|
||||||
int r;
|
|
||||||
_cleanup_free_ char *pretty_name = NULL, *ansi_color = NULL;
|
_cleanup_free_ char *pretty_name = NULL, *ansi_color = NULL;
|
||||||
|
int r;
|
||||||
|
|
||||||
r = parse_env_file("/etc/os-release", NEWLINE,
|
r = parse_env_file("/etc/os-release", NEWLINE,
|
||||||
"PRETTY_NAME", &pretty_name,
|
"PRETTY_NAME", &pretty_name,
|
||||||
"ANSI_COLOR", &ansi_color,
|
"ANSI_COLOR", &ansi_color,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (r < 0 && r != -ENOENT)
|
if (r < 0 && r != -ENOENT)
|
||||||
log_warning("Failed to read /etc/os-release: %s", strerror(-r));
|
log_warning("Failed to read /etc/os-release: %s", strerror(-r));
|
||||||
|
|
||||||
|
@ -3700,8 +3703,7 @@ char *resolve_dev_console(char **active) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool tty_is_vc_resolve(const char *tty) {
|
bool tty_is_vc_resolve(const char *tty) {
|
||||||
char *active = NULL;
|
_cleanup_free_ char *active = NULL;
|
||||||
bool b;
|
|
||||||
|
|
||||||
assert(tty);
|
assert(tty);
|
||||||
|
|
||||||
|
@ -3714,10 +3716,7 @@ bool tty_is_vc_resolve(const char *tty) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
b = tty_is_vc(tty);
|
return tty_is_vc(tty);
|
||||||
free(active);
|
|
||||||
|
|
||||||
return b;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *default_term_for_tty(const char *tty) {
|
const char *default_term_for_tty(const char *tty) {
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
#include "udev.h"
|
#include "udev.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
link_config_ctx *ctx;
|
static link_config_ctx *ctx = NULL;
|
||||||
|
|
||||||
static int builtin_net_setup_link(struct udev_device *dev, int argc, char **argv, bool test) {
|
static int builtin_net_setup_link(struct udev_device *dev, int argc, char **argv, bool test) {
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
Loading…
Reference in a new issue