bootchart.h | bootchart.h | |||
---|---|---|---|---|
/* | /*** | |||
* bootchart.h | bootchart.h - This file is part of systemd-bootchart | |||
* | ||||
* Copyright (C) 2009-2012 Intel Coproration | Copyright (C) 2009-2013 Intel Coproration | |||
* | ||||
* Authors: | Authors: | |||
* Auke Kok <auke-jan.h.kok@intel.com> | Auke Kok <auke-jan.h.kok@intel.com> | |||
* | ||||
* This program is free software; you can redistribute it and/or | systemd is free software; you can redistribute it and/or modify it | |||
* modify it under the terms of the GNU General Public License | under the terms of the GNU Lesser General Public License as published by | |||
* as published by the Free Software Foundation; version 2 | the Free Software Foundation; either version 2.1 of the License, or | |||
* of the License. | (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 | ||||
Lesser General Public License for more details. | ||||
You should have received a copy of the GNU Lesser General Public License | ||||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | ||||
***/ | ||||
#include <dirent.h> | #include <dirent.h> | |||
#include <stdbool.h> | ||||
#define MAXCPUS 16 | #define MAXCPUS 16 | |||
#define MAXPIDS 65535 | #define MAXPIDS 65535 | |||
#define MAXSAMPLES 8192 | #define MAXSAMPLES 8192 | |||
struct block_stat_struct { | struct block_stat_struct { | |||
/* /proc/vmstat pgpgin & pgpgout */ | /* /proc/vmstat pgpgin & pgpgout */ | |||
int bi; | int bi; | |||
int bo; | int bo; | |||
}; | }; | |||
struct cpu_stat_sample_struct { | struct cpu_stat_sample_struct { | |||
/* /proc/schedstat fields 10 & 11 (after name) */ | /* /proc/schedstat fields 10 & 11 (after name) */ | |||
double runtime; | double runtime; | |||
double waittime; | double waittime; | |||
}; | }; | |||
struct cpu_stat_struct { | struct cpu_stat_struct { | |||
/* per cpu array */ | /* per cpu array */ | |||
struct cpu_stat_sample_struct sample[MAXSAMPLES]; | struct cpu_stat_sample_struct sample[MAXSAMPLES]; | |||
}; | }; | |||
/* per process, per sample data we will log */ | /* per process, per sample data we will log */ | |||
struct ps_sched_struct { | struct ps_sched_struct { | |||
/* /proc/<n>/schedstat fields 1 & 2 */ | /* /proc/<n>/schedstat fields 1 & 2 */ | |||
double runtime; | double runtime; | |||
double waittime; | double waittime; | |||
int pss; | int pss; | |||
}; | }; | |||
/* process info */ | /* process info */ | |||
struct ps_struct { | struct ps_struct { | |||
struct ps_struct *next_ps; /* SLL pointer */ | struct ps_struct *next_ps; /* SLL pointer */ | |||
struct ps_struct *parent; /* ppid ref */ | struct ps_struct *parent; /* ppid ref */ | |||
struct ps_struct *children; /* children */ | struct ps_struct *children; /* children */ | |||
struct ps_struct *next; /* siblings */ | struct ps_struct *next; /* siblings */ | |||
/* must match - otherwise it's a new process with same PID */ | /* must match - otherwise it's a new process with same PID */ | |||
char name[16]; | char name[256]; | |||
int pid; | int pid; | |||
int ppid; | int ppid; | |||
/* cache fd's */ | /* cache fd's */ | |||
int sched; | int sched; | |||
int schedstat; | int schedstat; | |||
FILE *smaps; | FILE *smaps; | |||
/* index to first/last seen timestamps */ | /* index to first/last seen timestamps */ | |||
int first; | int first; | |||
int last; | int last; | |||
/* records actual start time, may be way before bootchart runs */ | /* records actual start time, may be way before bootchart runs */ | |||
double starttime; | double starttime; | |||
/* record human readable total cpu time */ | /* record human readable total cpu time */ | |||
double total; | double total; | |||
/* largest PSS size found */ | /* largest PSS size found */ | |||
int pss_max; | int pss_max; | |||
/* for drawing connection lines later */ | /* for drawing connection lines later */ | |||
double pos_x; | double pos_x; | |||
double pos_y; | double pos_y; | |||
struct ps_sched_struct *sample; | struct ps_sched_struct *sample; | |||
}; | }; | |||
extern int entropy_avail[]; | extern int entropy_avail[]; | |||
extern double graph_start; | extern double graph_start; | |||
extern double log_start; | extern double log_start; | |||
extern double sampletime[]; | extern double sampletime[]; | |||
extern struct ps_struct *ps_first; | extern struct ps_struct *ps_first; | |||
extern struct block_stat_struct blockstat[]; | extern struct block_stat_struct blockstat[]; | |||
extern struct cpu_stat_struct cpustat[]; | extern struct cpu_stat_struct cpustat[]; | |||
extern int pscount; | extern int pscount; | |||
extern int relative; | extern bool relative; | |||
extern int filter; | extern bool filter; | |||
extern int pss; | extern bool show_cmdline; | |||
extern int entropy; | extern bool pss; | |||
extern int initcall; | extern bool entropy; | |||
extern bool initcall; | ||||
extern int samples; | extern int samples; | |||
extern int cpus; | extern int cpus; | |||
extern int len; | extern int samples_len; | |||
extern double hz; | extern double hz; | |||
extern double scale_x; | extern double scale_x; | |||
extern double scale_y; | extern double scale_y; | |||
extern int overrun; | extern int overrun; | |||
extern double interval; | extern double interval; | |||
extern char output_path[PATH_MAX]; | extern char output_path[PATH_MAX]; | |||
extern char init_path[PATH_MAX]; | extern char init_path[PATH_MAX]; | |||
extern FILE *of; | extern FILE *of; | |||
extern DIR *proc; | extern DIR *proc; | |||
extern int procfd; | ||||
extern int sysfd; | ||||
extern double gettime_ns(void); | extern double gettime_ns(void); | |||
extern void log_uptime(void); | extern void log_uptime(void); | |||
extern void log_sample(int sample); | extern void log_sample(int sample); | |||
extern void svg_do(void); | extern void svg_do(const char *build); | |||
End of changes. 12 change blocks. | ||||
63 lines changed or deleted | 75 lines changed or added | |||
cgroup-attr.h | cgroup-attr.h | |||
---|---|---|---|---|
skipping to change at line 26 | skipping to change at line 26 | |||
WITHOUT ANY WARRANTY; without even the implied warranty of | WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
Lesser General Public License for more details. | Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | You should have received a copy of the GNU Lesser General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
typedef struct CGroupAttribute CGroupAttribute; | typedef struct CGroupAttribute CGroupAttribute; | |||
typedef int (*CGroupAttributeMapCallback)(const char *controller, const cha | ||||
r*name, const char *value, char **ret); | ||||
#include "unit.h" | #include "unit.h" | |||
#include "cgroup.h" | #include "cgroup.h" | |||
#include "cgroup-semantics.h" | ||||
struct CGroupAttribute { | struct CGroupAttribute { | |||
char *controller; | char *controller; | |||
char *name; | char *name; | |||
char *value; | char *value; | |||
CGroupAttributeMapCallback map_callback; | Unit *unit; | |||
const CGroupSemantics *semantics; | ||||
LIST_FIELDS(CGroupAttribute, by_unit); | LIST_FIELDS(CGroupAttribute, by_unit); | |||
}; | }; | |||
int cgroup_attribute_apply(CGroupAttribute *a, CGroupBonding *b); | int cgroup_attribute_apply(CGroupAttribute *a, CGroupBonding *b); | |||
int cgroup_attribute_apply_list(CGroupAttribute *first, CGroupBonding *b); | int cgroup_attribute_apply_list(CGroupAttribute *first, CGroupBonding *b); | |||
bool cgroup_attribute_matches(CGroupAttribute *a, const char *controller, c onst char *name); | ||||
CGroupAttribute *cgroup_attribute_find_list(CGroupAttribute *first, const c har *controller, const char *name); | CGroupAttribute *cgroup_attribute_find_list(CGroupAttribute *first, const c har *controller, const char *name); | |||
void cgroup_attribute_free(CGroupAttribute *a); | ||||
void cgroup_attribute_free_list(CGroupAttribute *first); | void cgroup_attribute_free_list(CGroupAttribute *first); | |||
void cgroup_attribute_free_some(CGroupAttribute *first, const char *control ler, const char *name); | ||||
End of changes. 6 change blocks. | ||||
4 lines changed or deleted | 6 lines changed or added | |||
cgroup-show.h | cgroup-show.h | |||
---|---|---|---|---|
skipping to change at line 27 | skipping to change at line 27 | |||
WITHOUT ANY WARRANTY; without even the implied warranty of | WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
Lesser General Public License for more details. | Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | You should have received a copy of the GNU Lesser General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include <stdbool.h> | #include <stdbool.h> | |||
#include <sys/types.h> | #include <sys/types.h> | |||
#include "util.h" | ||||
#include "logs-show.h" | ||||
int show_cgroup_by_path(const char *path, const char *prefix, unsigned colu | int show_cgroup_by_path(const char *path, const char *prefix, unsigned colu | |||
mns, bool kernel_threads, bool all); | mns, bool kernel_threads, OutputFlags flags); | |||
int show_cgroup(const char *controller, const char *path, const char *prefi | int show_cgroup(const char *controller, const char *path, const char *prefi | |||
x, unsigned columns, bool kernel_threads, bool all); | x, unsigned columns, bool kernel_threads, OutputFlags flags); | |||
int show_cgroup_and_extra_by_spec(const char *spec, const char *prefix, uns | int show_cgroup_and_extra_by_spec(const char *spec, const char *prefix, uns | |||
igned n_columns, bool kernel_threads, bool all, const pid_t extra_pids[], u | igned n_columns, bool kernel_threads, const pid_t extra_pids[], unsigned n_ | |||
nsigned n_extra_pids); | extra_pids, OutputFlags flags); | |||
int show_cgroup_and_extra(const char *controller, const char *path, const c | int show_cgroup_and_extra(const char *controller, const char *path, const c | |||
har *prefix, unsigned n_columns, bool kernel_threads, bool all, const pid_t | har *prefix, unsigned n_columns, bool kernel_threads, const pid_t extra_pid | |||
extra_pids[], unsigned n_extra_pids); | s[], unsigned n_extra_pids, OutputFlags flags); | |||
#endif | #endif | |||
End of changes. 3 change blocks. | ||||
10 lines changed or deleted | 12 lines changed or added | |||
cgroup-util.h | cgroup-util.h | |||
---|---|---|---|---|
skipping to change at line 42 | skipping to change at line 42 | |||
int cg_enumerate_tasks(const char *controller, const char *path, FILE **_f) ; | int cg_enumerate_tasks(const char *controller, const char *path, FILE **_f) ; | |||
int cg_read_pid(FILE *f, pid_t *_pid); | int cg_read_pid(FILE *f, pid_t *_pid); | |||
int cg_enumerate_subgroups(const char *controller, const char *path, DIR ** _d); | int cg_enumerate_subgroups(const char *controller, const char *path, DIR ** _d); | |||
int cg_read_subgroup(DIR *d, char **fn); | 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, bo ol sigcont, bool ignore_self, bool remove, Set *s); | int cg_kill_recursive(const char *controller, const char *path, int sig, bo ol sigcont, bool ignore_self, bool remove, Set *s); | |||
int cg_kill_recursive_and_wait(const char *controller, const char *path, bo ol remove); | int cg_kill_recursive_and_wait(const char *controller, const char *path, bo ol remove); | |||
int cg_migrate(const char *controller, const char *from, const char *to, bo | int cg_migrate(const char *cfrom, const char *pfrom, const char *cto, const | |||
ol ignore_self); | char *pto, bool ignore_self); | |||
int cg_migrate_recursive(const char *controller, const char *from, const ch | int cg_migrate_recursive(const char *cfrom, const char *pfrom, const char * | |||
ar *to, bool ignore_self, bool remove); | cto, const char *pto, bool ignore_self, bool remove); | |||
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_join_spec(const char *controller, const char *path, char **spec); | |||
int cg_fix_path(const char *path, char **result); | int cg_fix_path(const char *path, char **result); | |||
int cg_get_path(const char *controller, const char *path, const char *suffi x, char **fs); | int cg_get_path(const char *controller, const char *path, const char *suffi x, char **fs); | |||
int cg_get_path_and_check(const char *controller, const char *path, const c har *suffix, char **fs); | int cg_get_path_and_check(const char *controller, const char *path, const c har *suffix, char **fs); | |||
int cg_get_by_pid(const char *controller, pid_t pid, char **path); | int cg_get_by_pid(const char *controller, pid_t pid, char **path); | |||
int cg_trim(const char *controller, const char *path, bool delete_root); | int cg_trim(const char *controller, const char *path, bool delete_root); | |||
skipping to change at line 74 | skipping to change at line 74 | |||
int cg_install_release_agent(const char *controller, const char *agent); | int cg_install_release_agent(const char *controller, const char *agent); | |||
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_by_spec(const char *spec, bool ignore_self); | |||
int cg_is_empty_recursive(const char *controller, const char *path, bool ig nore_self); | int cg_is_empty_recursive(const char *controller, const char *path, bool ig nore_self); | |||
int cg_get_user_path(char **path); | int cg_get_user_path(char **path); | |||
int cg_pid_get_cgroup(pid_t pid, char **root, char **cgroup); | int cg_pid_get_cgroup(pid_t pid, char **root, char **cgroup); | |||
int cg_pid_get_unit(pid_t pid, char **unit); | int cg_pid_get_unit(pid_t pid, char **unit); | |||
int cg_pid_get_user_unit(pid_t pid, char **unit); | ||||
int cgroup_to_unit(char *cgroup, char **unit); | ||||
char **cg_shorten_controllers(char **controllers); | char **cg_shorten_controllers(char **controllers); | |||
int cg_controller_from_attr(const char *attr, char **controller); | ||||
End of changes. 3 change blocks. | ||||
4 lines changed or deleted | 7 lines changed or added | |||
cgroup.h | cgroup.h | |||
---|---|---|---|---|
skipping to change at line 61 | skipping to change at line 61 | |||
int cgroup_bonding_realize(CGroupBonding *b); | int cgroup_bonding_realize(CGroupBonding *b); | |||
int cgroup_bonding_realize_list(CGroupBonding *first); | int cgroup_bonding_realize_list(CGroupBonding *first); | |||
void cgroup_bonding_free(CGroupBonding *b, bool trim); | void cgroup_bonding_free(CGroupBonding *b, bool trim); | |||
void cgroup_bonding_free_list(CGroupBonding *first, bool trim); | void cgroup_bonding_free_list(CGroupBonding *first, bool trim); | |||
int cgroup_bonding_install(CGroupBonding *b, pid_t pid, const char *suffix) ; | int cgroup_bonding_install(CGroupBonding *b, pid_t pid, const char *suffix) ; | |||
int cgroup_bonding_install_list(CGroupBonding *first, pid_t pid, const char *suffix); | int cgroup_bonding_install_list(CGroupBonding *first, pid_t pid, const char *suffix); | |||
int cgroup_bonding_migrate(CGroupBonding *b, CGroupBonding *list); | ||||
int cgroup_bonding_migrate_to(CGroupBonding *b, const char *target, bool re | ||||
m); | ||||
int cgroup_bonding_set_group_access(CGroupBonding *b, mode_t mode, uid_t ui d, gid_t gid); | int cgroup_bonding_set_group_access(CGroupBonding *b, mode_t mode, uid_t ui d, gid_t gid); | |||
int cgroup_bonding_set_group_access_list(CGroupBonding *b, mode_t mode, uid _t uid, gid_t gid); | int cgroup_bonding_set_group_access_list(CGroupBonding *b, mode_t mode, uid _t uid, gid_t gid); | |||
int cgroup_bonding_set_task_access(CGroupBonding *b, mode_t mode, uid_t uid , gid_t gid, int sticky); | int cgroup_bonding_set_task_access(CGroupBonding *b, mode_t mode, uid_t uid , gid_t gid, int sticky); | |||
int cgroup_bonding_set_task_access_list(CGroupBonding *b, mode_t mode, uid_ t uid, gid_t gid, int sticky); | int cgroup_bonding_set_task_access_list(CGroupBonding *b, mode_t mode, uid_ t uid, gid_t gid, int sticky); | |||
int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, bool rem, Set *s, const char *suffix); | int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, bool rem, Set *s, const char *suffix); | |||
int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, b ool rem, Set *s, const char *suffix); | int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, b ool rem, Set *s, const char *suffix); | |||
void cgroup_bonding_trim(CGroupBonding *first, bool delete_root); | void cgroup_bonding_trim(CGroupBonding *first, bool delete_root); | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 4 lines changed or added | |||
conf-files.h | conf-files.h | |||
---|---|---|---|---|
skipping to change at line 28 | skipping to change at line 28 | |||
WITHOUT ANY WARRANTY; without even the implied warranty of | WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
Lesser General Public License for more details. | Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | You should have received a copy of the GNU Lesser General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include "macro.h" | #include "macro.h" | |||
int conf_files_list(char ***strv, const char *suffix, const char *dir, ...) | int conf_files_list(char ***strv, const char *suffix, const char *root, con | |||
; | st char *dir, ...); | |||
int conf_files_list_strv(char ***strv, const char *suffix, const char **dir | int conf_files_list_strv(char ***strv, const char *suffix, const char *root | |||
s); | , const char **dirs); | |||
int conf_files_list_nulstr(char ***strv, const char *suffix, const char *ro | ||||
ot, const char *dirs); | ||||
#endif | #endif | |||
End of changes. 1 change blocks. | ||||
4 lines changed or deleted | 6 lines changed or added | |||
conf-parser.h | conf-parser.h | |||
---|---|---|---|---|
skipping to change at line 95 | skipping to change at line 95 | |||
ConfigItemLookup lookup, | ConfigItemLookup lookup, | |||
void *table, | void *table, | |||
bool relaxed, | bool relaxed, | |||
void *userdata); | void *userdata); | |||
/* Generic parsers */ | /* Generic parsers */ | |||
int config_parse_int(const char *filename, unsigned line, const char *secti on, const char *lvalue, int ltype, const char *rvalue, void *data, void *us erdata); | int config_parse_int(const char *filename, unsigned line, const char *secti on, const char *lvalue, int ltype, const char *rvalue, void *data, void *us erdata); | |||
int config_parse_unsigned(const char *filename, unsigned line, const char * section, const char *lvalue, int ltype, const char *rvalue, void *data, voi d *userdata); | int config_parse_unsigned(const char *filename, unsigned line, const char * section, const char *lvalue, int ltype, const char *rvalue, void *data, voi d *userdata); | |||
int config_parse_long(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_long(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
int config_parse_uint64(const char *filename, unsigned line, const char *se ction, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | int config_parse_uint64(const char *filename, unsigned line, const char *se ction, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | |||
int config_parse_double(const char *filename, unsigned line, const char *se ction, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | ||||
int config_parse_bytes_size(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, v oid *userdata); | int config_parse_bytes_size(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, v oid *userdata); | |||
int config_parse_bytes_off(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, vo id *userdata); | int config_parse_bytes_off(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, vo id *userdata); | |||
int config_parse_bool(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_bool(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
int config_parse_tristate(const char *filename, unsigned line, const char * section, const char *lvalue, int ltype, const char *rvalue, void *data, voi d *userdata); | int config_parse_tristate(const char *filename, unsigned line, const char * section, const char *lvalue, int ltype, const char *rvalue, void *data, voi d *userdata); | |||
int config_parse_string(const char *filename, unsigned line, const char *se ction, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | int config_parse_string(const char *filename, unsigned line, const char *se ction, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | |||
int config_parse_path(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_path(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
int config_parse_strv(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_strv(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
int config_parse_path_strv(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, vo id *userdata); | int config_parse_path_strv(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, vo id *userdata); | |||
int config_parse_usec(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_usec(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
int config_parse_nsec(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | int config_parse_nsec(const char *filename, unsigned line, const char *sect ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u serdata); | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 1 lines changed or added | |||
config.h | config.h | |||
---|---|---|---|---|
/* config.h. Generated from config.h.in by configure. */ | /* config.h. Generated from config.h.in by configure. */ | |||
/* config.h.in. Generated from configure.ac by autoheader. */ | /* config.h.in. Generated from configure.ac by autoheader. */ | |||
/* Whether on mips arch */ | /* Whether on mips arch */ | |||
/* #undef ARCH_MIPS */ | /* #undef ARCH_MIPS */ | |||
/* Canonical host string. */ | /* Canonical host string. */ | |||
#define CANONICAL_HOST "i686-pc-linux-gnu" | #define CANONICAL_HOST "i686-pc-linux-gnu" | |||
/* Define if EFI support is to be enabled */ | ||||
#define ENABLE_EFI 1 | ||||
/* Define if PolicyKit support is to be enabled */ | ||||
#define ENABLE_POLKIT 1 | ||||
/* ACL available */ | /* ACL available */ | |||
#define HAVE_ACL 1 | #define HAVE_ACL 1 | |||
/* Define to 1 if you have the <acl/libacl.h> header file. */ | /* Define to 1 if you have the <acl/libacl.h> header file. */ | |||
#define HAVE_ACL_LIBACL_H 1 | #define HAVE_ACL_LIBACL_H 1 | |||
/* Define to 1 if you have the <arpa/inet.h> header file. */ | /* Define to 1 if you have the <arpa/inet.h> header file. */ | |||
#define HAVE_ARPA_INET_H 1 | #define HAVE_ARPA_INET_H 1 | |||
/* Define to 1 if you have the <attr/xattr.h> header file. */ | /* Define to 1 if you have the <attr/xattr.h> header file. */ | |||
skipping to change at line 235 | skipping to change at line 241 | |||
/* Name of package */ | /* Name of package */ | |||
#define PACKAGE "systemd" | #define PACKAGE "systemd" | |||
/* Define to the address where bug reports for this package should be sent. */ | /* Define to the address where bug reports for this package should be sent. */ | |||
#define PACKAGE_BUGREPORT "http://bugs.freedesktop.org/enter_bug.cgi?produc t=systemd" | #define PACKAGE_BUGREPORT "http://bugs.freedesktop.org/enter_bug.cgi?produc t=systemd" | |||
/* Define to the full name of this package. */ | /* Define to the full name of this package. */ | |||
#define PACKAGE_NAME "systemd" | #define PACKAGE_NAME "systemd" | |||
/* Define to the full name and version of this package. */ | /* Define to the full name and version of this package. */ | |||
#define PACKAGE_STRING "systemd 197" | #define PACKAGE_STRING "systemd 198" | |||
/* Define to the one symbol short name of this package. */ | /* Define to the one symbol short name of this package. */ | |||
#define PACKAGE_TARNAME "systemd" | #define PACKAGE_TARNAME "systemd" | |||
/* Define to the home page for this package. */ | /* Define to the home page for this package. */ | |||
#define PACKAGE_URL "http://www.freedesktop.org/wiki/Software/systemd" | #define PACKAGE_URL "http://www.freedesktop.org/wiki/Software/systemd" | |||
/* Define to the version of this package. */ | /* Define to the version of this package. */ | |||
#define PACKAGE_VERSION "197" | #define PACKAGE_VERSION "198" | |||
/* Path of /etc/rc.local script */ | /* Path of /etc/rc.local script */ | |||
#define RC_LOCAL_SCRIPT_PATH_START "/etc/rc.local" | #define RC_LOCAL_SCRIPT_PATH_START "/etc/rc.local" | |||
/* Path of /usr/sbin/halt.local script */ | /* Path of /usr/sbin/halt.local script */ | |||
#define RC_LOCAL_SCRIPT_PATH_STOP "/usr/sbin/halt.local" | #define RC_LOCAL_SCRIPT_PATH_STOP "/usr/sbin/halt.local" | |||
/* Define to the type of arg 1 for `select'. */ | /* Define to the type of arg 1 for `select'. */ | |||
#define SELECT_TYPE_ARG1 int | #define SELECT_TYPE_ARG1 int | |||
skipping to change at line 292 | skipping to change at line 298 | |||
/* Enable extensions on HP NonStop. */ | /* Enable extensions on HP NonStop. */ | |||
#ifndef _TANDEM_SOURCE | #ifndef _TANDEM_SOURCE | |||
# define _TANDEM_SOURCE 1 | # define _TANDEM_SOURCE 1 | |||
#endif | #endif | |||
/* Enable general extensions on Solaris. */ | /* Enable general extensions on Solaris. */ | |||
#ifndef __EXTENSIONS__ | #ifndef __EXTENSIONS__ | |||
# define __EXTENSIONS__ 1 | # define __EXTENSIONS__ 1 | |||
#endif | #endif | |||
/* Version number of package */ | /* Version number of package */ | |||
#define VERSION "197" | #define VERSION "198" | |||
/* Enable large inode numbers on Mac OS X 10.5. */ | /* Enable large inode numbers on Mac OS X 10.5. */ | |||
#ifndef _DARWIN_USE_64_BIT_INODE | #ifndef _DARWIN_USE_64_BIT_INODE | |||
# define _DARWIN_USE_64_BIT_INODE 1 | # define _DARWIN_USE_64_BIT_INODE 1 | |||
#endif | #endif | |||
/* Number of bits in a file offset, on hosts where this is settable. */ | /* Number of bits in a file offset, on hosts where this is settable. */ | |||
#define _FILE_OFFSET_BITS 64 | #define _FILE_OFFSET_BITS 64 | |||
/* Define for large files, on AIX-style hosts. */ | /* Define for large files, on AIX-style hosts. */ | |||
End of changes. 4 change blocks. | ||||
3 lines changed or deleted | 9 lines changed or added | |||
dbus-common.h | dbus-common.h | |||
---|---|---|---|---|
skipping to change at line 200 | skipping to change at line 200 | |||
const char *bus_errno_to_dbus(int error); | const char *bus_errno_to_dbus(int error); | |||
DBusMessage* bus_properties_changed_new(const char *path, const char *inter face, const char *properties); | DBusMessage* bus_properties_changed_new(const char *path, const char *inter face, const char *properties); | |||
DBusMessage* bus_properties_changed_one_new(const char *path, const char *i nterface, const char *property); | DBusMessage* bus_properties_changed_one_new(const char *path, const char *i nterface, const char *property); | |||
uint32_t bus_flags_to_events(DBusWatch *bus_watch); | uint32_t bus_flags_to_events(DBusWatch *bus_watch); | |||
unsigned bus_events_to_flags(uint32_t events); | unsigned bus_events_to_flags(uint32_t events); | |||
int bus_parse_strv(DBusMessage *m, char ***_l); | int bus_parse_strv(DBusMessage *m, char ***_l); | |||
int bus_parse_strv_iter(DBusMessageIter *iter, char ***_l); | int bus_parse_strv_iter(DBusMessageIter *iter, char ***_l); | |||
int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l); | ||||
struct unit_info { | ||||
const char *id; | ||||
const char *description; | ||||
const char *load_state; | ||||
const char *active_state; | ||||
const char *sub_state; | ||||
const char *following; | ||||
const char *unit_path; | ||||
uint32_t job_id; | ||||
const char *job_type; | ||||
const char *job_path; | ||||
}; | ||||
int bus_parse_unit_info(DBusMessageIter *iter, struct unit_info *u); | ||||
int bus_append_strv_iter(DBusMessageIter *iter, char **l); | int bus_append_strv_iter(DBusMessageIter *iter, char **l); | |||
int bus_iter_get_basic_and_next(DBusMessageIter *iter, int type, void *data , bool next); | int bus_iter_get_basic_and_next(DBusMessageIter *iter, int type, void *data , bool next); | |||
int generic_print_property(const char *name, DBusMessageIter *iter, bool al l); | int generic_print_property(const char *name, DBusMessageIter *iter, bool al l); | |||
void bus_async_unregister_and_exit(DBusConnection *bus, const char *name); | void bus_async_unregister_and_exit(DBusConnection *bus, const char *name); | |||
DBusHandlerResult bus_exit_idle_filter(DBusConnection *bus, DBusMessage *m, void *userdata); | DBusHandlerResult bus_exit_idle_filter(DBusConnection *bus, DBusMessage *m, void *userdata); | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 16 lines changed or added | |||
dbus-unit.h | dbus-unit.h | |||
---|---|---|---|---|
skipping to change at line 72 | skipping to change at line 72 | |||
" </method>\n" \ | " </method>\n" \ | |||
" <method name=\"ResetFailed\"/>\n" \ | " <method name=\"ResetFailed\"/>\n" \ | |||
" <property name=\"Id\" type=\"s\" access=\"read\"/>\n" \ | " <property name=\"Id\" type=\"s\" access=\"read\"/>\n" \ | |||
" <property name=\"Names\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"Names\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"Following\" type=\"s\" access=\"read\"/>\n" \ | " <property name=\"Following\" type=\"s\" access=\"read\"/>\n" \ | |||
" <property name=\"Requires\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"Requires\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"RequiresOverridable\" type=\"as\" access=\"read \"/>\n" \ | " <property name=\"RequiresOverridable\" type=\"as\" access=\"read \"/>\n" \ | |||
" <property name=\"Requisite\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"Requisite\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"RequisiteOverridable\" type=\"as\" access=\"rea d\"/>\n" \ | " <property name=\"RequisiteOverridable\" type=\"as\" access=\"rea d\"/>\n" \ | |||
" <property name=\"Wants\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"Wants\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"BindsTo\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"BindsTo\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"PartOf\" type=\"as\" access=\"read\"/>\n" \ | ||||
" <property name=\"RequiredBy\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"RequiredBy\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"RequiredByOverridable\" type=\"as\" access=\"re ad\"/>\n" \ | " <property name=\"RequiredByOverridable\" type=\"as\" access=\"re ad\"/>\n" \ | |||
" <property name=\"WantedBy\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"WantedBy\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"BoundBy\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"BoundBy\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"ConsistsOf\" type=\"as\" access=\"read\"/>\n" \ | ||||
" <property name=\"Conflicts\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"Conflicts\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"ConflictedBy\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"ConflictedBy\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"Before\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"Before\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"After\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"After\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"OnFailure\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"OnFailure\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"Triggers\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"Triggers\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"TriggeredBy\" type=\"as\" access=\"read\"/>\n" \ | " <property name=\"TriggeredBy\" type=\"as\" access=\"read\"/>\n" \ | |||
" <property name=\"PropagatesReloadTo\" type=\"as\" access=\"read\ "/>\n" \ | " <property name=\"PropagatesReloadTo\" type=\"as\" access=\"read\ "/>\n" \ | |||
" <property name=\"ReloadPropagatedFrom\" type=\"as\" access=\"rea d\"/>\n" \ | " <property name=\"ReloadPropagatedFrom\" type=\"as\" access=\"rea d\"/>\n" \ | |||
" <property name=\"RequiresMountsFor\" type=\"as\" access=\"read\" />\n" \ | " <property name=\"RequiresMountsFor\" type=\"as\" access=\"read\" />\n" \ | |||
skipping to change at line 116 | skipping to change at line 118 | |||
" <property name=\"CanIsolate\" type=\"b\" access=\"read\"/>\n" \ | " <property name=\"CanIsolate\" type=\"b\" access=\"read\"/>\n" \ | |||
" <property name=\"Job\" type=\"(uo)\" access=\"read\"/>\n" \ | " <property name=\"Job\" type=\"(uo)\" access=\"read\"/>\n" \ | |||
" <property name=\"StopWhenUnneeded\" type=\"b\" access=\"read\"/> \n" \ | " <property name=\"StopWhenUnneeded\" type=\"b\" access=\"read\"/> \n" \ | |||
" <property name=\"RefuseManualStart\" type=\"b\" access=\"read\"/ >\n" \ | " <property name=\"RefuseManualStart\" type=\"b\" access=\"read\"/ >\n" \ | |||
" <property name=\"RefuseManualStop\" type=\"b\" access=\"read\"/> \n" \ | " <property name=\"RefuseManualStop\" type=\"b\" access=\"read\"/> \n" \ | |||
" <property name=\"AllowIsolate\" type=\"b\" access=\"read\"/>\n" \ | " <property name=\"AllowIsolate\" type=\"b\" access=\"read\"/>\n" \ | |||
" <property name=\"DefaultDependencies\" type=\"b\" access=\"read\ "/>\n" \ | " <property name=\"DefaultDependencies\" type=\"b\" access=\"read\ "/>\n" \ | |||
" <property name=\"OnFailureIsolate\" type=\"b\" access=\"read\"/> \n" \ | " <property name=\"OnFailureIsolate\" type=\"b\" access=\"read\"/> \n" \ | |||
" <property name=\"IgnoreOnIsolate\" type=\"b\" access=\"read\"/>\ n" \ | " <property name=\"IgnoreOnIsolate\" type=\"b\" access=\"read\"/>\ n" \ | |||
" <property name=\"IgnoreOnSnapshot\" type=\"b\" access=\"read\"/> \n" \ | " <property name=\"IgnoreOnSnapshot\" type=\"b\" access=\"read\"/> \n" \ | |||
" <property name=\"DefaultControlGroup\" type=\"s\" access=\"read\ | ||||
"/>\n" \ | ||||
" <property name=\"ControlGroup\" type=\"as\" access=\"read\"/>\n" | ||||
\ | ||||
" <property name=\"ControlGroupAttributes\" type=\"a(sss)\" access | ||||
=\"read\"/>\n" \ | ||||
" <property name=\"NeedDaemonReload\" type=\"b\" access=\"read\"/> \n" \ | " <property name=\"NeedDaemonReload\" type=\"b\" access=\"read\"/> \n" \ | |||
" <property name=\"JobTimeoutUSec\" type=\"t\" access=\"read\"/>\n " \ | " <property name=\"JobTimeoutUSec\" type=\"t\" access=\"read\"/>\n " \ | |||
" <property name=\"ConditionTimestamp\" type=\"t\" access=\"read\" />\n" \ | " <property name=\"ConditionTimestamp\" type=\"t\" access=\"read\" />\n" \ | |||
" <property name=\"ConditionTimestampMonotonic\" type=\"t\" access =\"read\"/>\n" \ | " <property name=\"ConditionTimestampMonotonic\" type=\"t\" access =\"read\"/>\n" \ | |||
" <property name=\"ConditionResult\" type=\"b\" access=\"read\"/>\ n" \ | " <property name=\"ConditionResult\" type=\"b\" access=\"read\"/>\ n" \ | |||
" <property name=\"LoadError\" type=\"(ss)\" access=\"read\"/>\n" \ | " <property name=\"LoadError\" type=\"(ss)\" access=\"read\"/>\n" \ | |||
" </interface>\n" | " </interface>\n" | |||
#define BUS_UNIT_CGROUP_INTERFACE \ | ||||
" <property name=\"DefaultControlGroup\" type=\"s\" access=\"read\ | ||||
"/>\n" \ | ||||
" <property name=\"ControlGroups\" type=\"as\" access=\"read\"/>\n | ||||
" \ | ||||
" <property name=\"ControlGroupAttributes\" type=\"a(sss)\" access | ||||
=\"read\"/>\n" \ | ||||
" <method name=\"SetControlGroup\">\n" \ | ||||
" <arg name=\"group\" type=\"s\" direction=\"in\"/>\n" \ | ||||
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \ | ||||
" </method>\n" \ | ||||
" <method name=\"UnsetControlGroup\">\n" \ | ||||
" <arg name=\"group\" type=\"s\" direction=\"in\"/>\n" \ | ||||
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \ | ||||
" </method>\n" \ | ||||
" <method name=\"GetControlGroupAttribute\">\n" \ | ||||
" <arg name=\"attribute\" type=\"s\" direction=\"in\"/>\n" \ | ||||
" <arg name=\"values\" type=\"as\" direction=\"out\"/>\n" \ | ||||
" </method>\n" \ | ||||
" <method name=\"SetControlGroupAttribute\">\n" \ | ||||
" <arg name=\"attribute\" type=\"s\" direction=\"in\"/>\n" \ | ||||
" <arg name=\"values\" type=\"as\" direction=\"in\"/>\n" \ | ||||
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \ | ||||
" </method>\n" \ | ||||
" <method name=\"UnsetControlGroupAttribute\">\n" \ | ||||
" <arg name=\"attribute\" type=\"s\" direction=\"in\"/>\n" \ | ||||
" <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \ | ||||
" </method>\n" | ||||
#define BUS_UNIT_INTERFACES_LIST \ | #define BUS_UNIT_INTERFACES_LIST \ | |||
BUS_GENERIC_INTERFACES_LIST \ | BUS_GENERIC_INTERFACES_LIST \ | |||
"org.freedesktop.systemd1.Unit\0" | "org.freedesktop.systemd1.Unit\0" | |||
extern const BusProperty bus_unit_properties[]; | extern const BusProperty bus_unit_properties[]; | |||
extern const BusProperty bus_unit_cgroup_properties[]; | ||||
void bus_unit_send_change_signal(Unit *u); | void bus_unit_send_change_signal(Unit *u); | |||
void bus_unit_send_removed_signal(Unit *u); | void bus_unit_send_removed_signal(Unit *u); | |||
DBusHandlerResult bus_unit_queue_job( | DBusHandlerResult bus_unit_queue_job( | |||
DBusConnection *connection, | DBusConnection *connection, | |||
DBusMessage *message, | DBusMessage *message, | |||
Unit *u, | Unit *u, | |||
JobType type, | JobType type, | |||
JobMode mode, | JobMode mode, | |||
bool reload_if_possible); | bool reload_if_possible); | |||
int bus_unit_cgroup_set(Unit *u, DBusMessageIter *iter); | ||||
int bus_unit_cgroup_unset(Unit *u, DBusMessageIter *iter); | ||||
int bus_unit_cgroup_attribute_get(Unit *u, DBusMessageIter *iter, char ***_ | ||||
result); | ||||
int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter); | ||||
int bus_unit_cgroup_attribute_unset(Unit *u, DBusMessageIter *iter); | ||||
extern const DBusObjectPathVTable bus_unit_vtable; | extern const DBusObjectPathVTable bus_unit_vtable; | |||
extern const char bus_unit_interface[]; | extern const char bus_unit_interface[]; | |||
End of changes. 6 change blocks. | ||||
7 lines changed or deleted | 40 lines changed or added | |||
execute.h | execute.h | |||
---|---|---|---|---|
skipping to change at line 201 | skipping to change at line 201 | |||
void exec_command_append_list(ExecCommand **l, ExecCommand *e); | void exec_command_append_list(ExecCommand **l, ExecCommand *e); | |||
int exec_command_set(ExecCommand *c, const char *path, ...); | int exec_command_set(ExecCommand *c, const char *path, ...); | |||
void exec_context_init(ExecContext *c); | void exec_context_init(ExecContext *c); | |||
void exec_context_done(ExecContext *c); | void exec_context_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); | 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); | |||
bool exec_context_may_touch_console(ExecContext *c); | ||||
void exec_status_start(ExecStatus *s, pid_t pid); | void exec_status_start(ExecStatus *s, pid_t pid); | |||
void exec_status_exit(ExecStatus *s, ExecContext *context, pid_t pid, int c ode, int status); | void exec_status_exit(ExecStatus *s, ExecContext *context, pid_t pid, int c ode, int status); | |||
void exec_status_dump(ExecStatus *s, FILE *f, const char *prefix); | void exec_status_dump(ExecStatus *s, FILE *f, const char *prefix); | |||
const char* exec_output_to_string(ExecOutput i); | const char* exec_output_to_string(ExecOutput i); | |||
ExecOutput exec_output_from_string(const char *s); | ExecOutput exec_output_from_string(const char *s); | |||
const char* exec_input_to_string(ExecInput i); | const char* exec_input_to_string(ExecInput i); | |||
ExecInput exec_input_from_string(const char *s); | ExecInput exec_input_from_string(const char *s); | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 2 lines changed or added | |||
hashmap.h | hashmap.h | |||
---|---|---|---|---|
skipping to change at line 53 | skipping to change at line 53 | |||
unsigned trivial_hash_func(const void *p); | unsigned trivial_hash_func(const void *p); | |||
int trivial_compare_func(const void *a, const void *b); | int trivial_compare_func(const void *a, const void *b); | |||
unsigned uint64_hash_func(const void *p); | unsigned uint64_hash_func(const void *p); | |||
int uint64_compare_func(const void *a, const void *b); | int uint64_compare_func(const void *a, const void *b); | |||
Hashmap *hashmap_new(hash_func_t hash_func, compare_func_t compare_func); | Hashmap *hashmap_new(hash_func_t hash_func, compare_func_t compare_func); | |||
void hashmap_free(Hashmap *h); | void hashmap_free(Hashmap *h); | |||
void hashmap_free_free(Hashmap *h); | void hashmap_free_free(Hashmap *h); | |||
void hashmap_free_free_free(Hashmap *h); | ||||
Hashmap *hashmap_copy(Hashmap *h); | Hashmap *hashmap_copy(Hashmap *h); | |||
int hashmap_ensure_allocated(Hashmap **h, hash_func_t hash_func, compare_fu nc_t compare_func); | int hashmap_ensure_allocated(Hashmap **h, hash_func_t hash_func, compare_fu nc_t compare_func); | |||
int hashmap_put(Hashmap *h, const void *key, void *value); | int hashmap_put(Hashmap *h, const void *key, void *value); | |||
int hashmap_update(Hashmap *h, const void *key, void *value); | int hashmap_update(Hashmap *h, const void *key, void *value); | |||
int hashmap_replace(Hashmap *h, const void *key, void *value); | int hashmap_replace(Hashmap *h, const void *key, void *value); | |||
void* hashmap_get(Hashmap *h, const void *key); | void* hashmap_get(Hashmap *h, const void *key); | |||
void* hashmap_get2(Hashmap *h, const void *key, void **rkey); | void* hashmap_get2(Hashmap *h, const void *key, void **rkey); | |||
bool hashmap_contains(Hashmap *h, const void *key); | bool hashmap_contains(Hashmap *h, const void *key); | |||
void* hashmap_remove(Hashmap *h, const void *key); | void* hashmap_remove(Hashmap *h, const void *key); | |||
skipping to change at line 80 | skipping to change at line 81 | |||
unsigned hashmap_size(Hashmap *h); | unsigned hashmap_size(Hashmap *h); | |||
bool hashmap_isempty(Hashmap *h); | bool hashmap_isempty(Hashmap *h); | |||
void *hashmap_iterate(Hashmap *h, Iterator *i, const void **key); | void *hashmap_iterate(Hashmap *h, Iterator *i, const void **key); | |||
void *hashmap_iterate_backwards(Hashmap *h, Iterator *i, const void **key); | void *hashmap_iterate_backwards(Hashmap *h, Iterator *i, const void **key); | |||
void *hashmap_iterate_skip(Hashmap *h, const void *key, Iterator *i); | void *hashmap_iterate_skip(Hashmap *h, const void *key, Iterator *i); | |||
void hashmap_clear(Hashmap *h); | void hashmap_clear(Hashmap *h); | |||
void hashmap_clear_free(Hashmap *h); | void hashmap_clear_free(Hashmap *h); | |||
void hashmap_clear_free_free(Hashmap *h); | ||||
void *hashmap_steal_first(Hashmap *h); | void *hashmap_steal_first(Hashmap *h); | |||
void *hashmap_steal_first_key(Hashmap *h); | void *hashmap_steal_first_key(Hashmap *h); | |||
void* hashmap_first(Hashmap *h); | void* hashmap_first(Hashmap *h); | |||
void* hashmap_first_key(Hashmap *h); | void* hashmap_first_key(Hashmap *h); | |||
void* hashmap_last(Hashmap *h); | void* hashmap_last(Hashmap *h); | |||
void *hashmap_next(Hashmap *h, const void *key); | void *hashmap_next(Hashmap *h, const void *key); | |||
char **hashmap_get_strv(Hashmap *h); | char **hashmap_get_strv(Hashmap *h); | |||
End of changes. 2 change blocks. | ||||
0 lines changed or deleted | 2 lines changed or added | |||
install.h | install.h | |||
---|---|---|---|---|
skipping to change at line 66 | skipping to change at line 66 | |||
UnitFileChangeType type; | UnitFileChangeType type; | |||
char *path; | char *path; | |||
char *source; | char *source; | |||
} UnitFileChange; | } UnitFileChange; | |||
typedef struct UnitFileList { | typedef struct UnitFileList { | |||
char *path; | char *path; | |||
UnitFileState state; | UnitFileState state; | |||
} UnitFileList; | } UnitFileList; | |||
typedef struct { | ||||
char *name; | ||||
char *path; | ||||
char *user; | ||||
char **aliases; | ||||
char **wanted_by; | ||||
char **required_by; | ||||
} InstallInfo; | ||||
int unit_file_enable(UnitFileScope scope, bool runtime, const char *root_di r, char *files[], bool force, UnitFileChange **changes, unsigned *n_changes ); | int unit_file_enable(UnitFileScope scope, bool runtime, const char *root_di r, char *files[], bool force, UnitFileChange **changes, unsigned *n_changes ); | |||
int unit_file_disable(UnitFileScope scope, bool runtime, const char *root_d ir, char *files[], UnitFileChange **changes, unsigned *n_changes); | int unit_file_disable(UnitFileScope scope, bool runtime, const char *root_d ir, 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_chang es); | int unit_file_reenable(UnitFileScope scope, bool runtime, const char *root_ dir, char *files[], bool force, UnitFileChange **changes, unsigned *n_chang es); | |||
int unit_file_link(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); | |||
int unit_file_preset(UnitFileScope scope, bool runtime, const char *root_di r, char *files[], bool force, UnitFileChange **changes, unsigned *n_changes ); | int unit_file_preset(UnitFileScope scope, bool runtime, const char *root_di r, char *files[], bool force, UnitFileChange **changes, unsigned *n_changes ); | |||
int unit_file_mask(UnitFileScope scope, bool runtime, const char *root_dir, char *files[], bool force, UnitFileChange **changes, unsigned *n_changes); | 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_di r, char *files[], UnitFileChange **changes, unsigned *n_changes); | int unit_file_unmask(UnitFileScope scope, bool runtime, const char *root_di r, char *files[], UnitFileChange **changes, unsigned *n_changes); | |||
UnitFileState unit_file_get_state(UnitFileScope scope, const char *root_dir , const char *filename); | UnitFileState unit_file_get_state(UnitFileScope scope, const char *root_dir , const char *filename); | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 10 lines changed or added | |||
job.h | job.h | |||
---|---|---|---|---|
skipping to change at line 86 | skipping to change at line 86 | |||
enum JobState { | enum JobState { | |||
JOB_WAITING, | JOB_WAITING, | |||
JOB_RUNNING, | JOB_RUNNING, | |||
_JOB_STATE_MAX, | _JOB_STATE_MAX, | |||
_JOB_STATE_INVALID = -1 | _JOB_STATE_INVALID = -1 | |||
}; | }; | |||
enum JobMode { | enum JobMode { | |||
JOB_FAIL, /* Fail if a conflicting job is already qu eued */ | JOB_FAIL, /* Fail if a conflicting job is already qu eued */ | |||
JOB_REPLACE, /* Replace an existing conflicting job */ | JOB_REPLACE, /* Replace an existing conflicting job */ | |||
JOB_REPLACE_IRREVERSIBLY, /* Like JOB_REPLACE + produce irreversibl e jobs */ | ||||
JOB_ISOLATE, /* Start a unit, and stop all others */ | JOB_ISOLATE, /* Start a unit, and stop all others */ | |||
JOB_IGNORE_DEPENDENCIES, /* Ignore both requirement and ordering de pendencies */ | JOB_IGNORE_DEPENDENCIES, /* Ignore both requirement and ordering de pendencies */ | |||
JOB_IGNORE_REQUIREMENTS, /* Ignore requirement dependencies */ | JOB_IGNORE_REQUIREMENTS, /* Ignore requirement dependencies */ | |||
_JOB_MODE_MAX, | _JOB_MODE_MAX, | |||
_JOB_MODE_INVALID = -1 | _JOB_MODE_INVALID = -1 | |||
}; | }; | |||
enum JobResult { | enum JobResult { | |||
JOB_DONE, /* Job completed successfully */ | JOB_DONE, /* Job completed successfully */ | |||
JOB_CANCELED, /* Job canceled by a conflicting job insta llation or by explicit cancel request */ | JOB_CANCELED, /* Job canceled by a conflicting job insta llation or by explicit cancel request */ | |||
skipping to change at line 164 | skipping to change at line 165 | |||
JobResult result; | JobResult result; | |||
bool installed:1; | bool installed:1; | |||
bool in_run_queue:1; | bool in_run_queue:1; | |||
bool matters_to_anchor:1; | bool matters_to_anchor:1; | |||
bool override:1; | bool override:1; | |||
bool in_dbus_queue:1; | bool in_dbus_queue:1; | |||
bool sent_dbus_new_signal:1; | bool sent_dbus_new_signal:1; | |||
bool ignore_order:1; | bool ignore_order:1; | |||
bool forgot_bus_clients:1; | bool forgot_bus_clients:1; | |||
bool irreversible:1; | ||||
}; | }; | |||
JobBusClient* job_bus_client_new(DBusConnection *connection, const char *na me); | JobBusClient* job_bus_client_new(DBusConnection *connection, const char *na me); | |||
Job* job_new(Unit *unit, JobType type); | Job* job_new(Unit *unit, JobType type); | |||
Job* job_new_raw(Unit *unit); | Job* job_new_raw(Unit *unit); | |||
void job_free(Job *job); | void job_free(Job *job); | |||
Job* job_install(Job *j); | Job* job_install(Job *j); | |||
int job_install_deserialized(Job *j); | int job_install_deserialized(Job *j); | |||
void job_uninstall(Job *j); | void job_uninstall(Job *j); | |||
skipping to change at line 220 | skipping to change at line 222 | |||
void job_add_to_dbus_queue(Job *j); | void job_add_to_dbus_queue(Job *j); | |||
int job_start_timer(Job *j); | int job_start_timer(Job *j); | |||
void job_timer_event(Job *j, uint64_t n_elapsed, Watch *w); | void job_timer_event(Job *j, uint64_t n_elapsed, Watch *w); | |||
int job_run_and_invalidate(Job *j); | int job_run_and_invalidate(Job *j); | |||
int job_finish_and_invalidate(Job *j, JobResult result, bool recursive); | int job_finish_and_invalidate(Job *j, JobResult result, bool recursive); | |||
char *job_dbus_path(Job *j); | char *job_dbus_path(Job *j); | |||
void job_shutdown_magic(Job *j); | ||||
const char* job_type_to_string(JobType t); | const char* job_type_to_string(JobType t); | |||
JobType job_type_from_string(const char *s); | JobType job_type_from_string(const char *s); | |||
const char* job_state_to_string(JobState t); | const char* job_state_to_string(JobState t); | |||
JobState job_state_from_string(const char *s); | JobState job_state_from_string(const char *s); | |||
const char* job_mode_to_string(JobMode t); | const char* job_mode_to_string(JobMode t); | |||
JobMode job_mode_from_string(const char *s); | JobMode job_mode_from_string(const char *s); | |||
const char* job_result_to_string(JobResult t); | const char* job_result_to_string(JobResult t); | |||
End of changes. 3 change blocks. | ||||
0 lines changed or deleted | 4 lines changed or added | |||
label.h | label.h | |||
---|---|---|---|---|
skipping to change at line 48 | skipping to change at line 48 | |||
void label_free(const char *label); | void label_free(const char *label); | |||
int label_get_create_label_from_exe(const char *exe, char **label); | int label_get_create_label_from_exe(const char *exe, char **label); | |||
int label_mkdir(const char *path, mode_t mode, bool apply); | int label_mkdir(const char *path, mode_t mode, bool apply); | |||
void label_retest_selinux(void); | void label_retest_selinux(void); | |||
int label_bind(int fd, const struct sockaddr *addr, socklen_t addrlen); | int label_bind(int fd, const struct sockaddr *addr, socklen_t addrlen); | |||
int label_write_one_line_file_atomic(const char *fn, const char *line); | ||||
int label_write_env_file(const char *fname, char **l); | ||||
int label_fopen_temporary(const char *path, FILE **_f, char **_temp_path); | ||||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 0 lines changed or added | |||
libudev-private.h | libudev-private.h | |||
---|---|---|---|---|
skipping to change at line 32 | skipping to change at line 32 | |||
#include <syslog.h> | #include <syslog.h> | |||
#include <signal.h> | #include <signal.h> | |||
#include <stdint.h> | #include <stdint.h> | |||
#include <stdbool.h> | #include <stdbool.h> | |||
#include "libudev.h" | #include "libudev.h" | |||
#include "macro.h" | #include "macro.h" | |||
#include "util.h" | #include "util.h" | |||
#include "mkdir.h" | #include "mkdir.h" | |||
#include "strxcpyx.h" | ||||
#define READ_END 0 | #define READ_END 0 | |||
#define WRITE_END 1 | #define WRITE_END 1 | |||
/* avoid (sometimes expensive) calculations of parameters for debug output */ | /* avoid (sometimes expensive) calculations of parameters for debug output */ | |||
#define udev_log_cond(udev, prio, arg...) \ | #define udev_log_cond(udev, prio, arg...) \ | |||
do { \ | do { \ | |||
if (udev_get_log_priority(udev) >= prio) \ | if (udev_get_log_priority(udev) >= prio) \ | |||
udev_log(udev, prio, __FILE__, __LINE__, __FUNCTION__, ## arg); \ | udev_log(udev, prio, __FILE__, __LINE__, __FUNCTION__, ## arg); \ | |||
} while (0) | } while (0) | |||
skipping to change at line 167 | skipping to change at line 168 | |||
/* libudev-util.c */ | /* libudev-util.c */ | |||
#define UTIL_PATH_SIZE 1024 | #define UTIL_PATH_SIZE 1024 | |||
#define UTIL_NAME_SIZE 512 | #define UTIL_NAME_SIZE 512 | |||
#define UTIL_LINE_SIZE 16384 | #define UTIL_LINE_SIZE 16384 | |||
#define UDEV_ALLOWED_CHARS_INPUT "/ $%?," | #define UDEV_ALLOWED_CHARS_INPUT "/ $%?," | |||
ssize_t util_get_sys_core_link_value(struct udev *udev, const char *slink, const char *syspath, char *value, size_t size); | ssize_t util_get_sys_core_link_value(struct udev *udev, const char *slink, const char *syspath, char *value, size_t size); | |||
int util_resolve_sys_link(struct udev *udev, char *syspath, size_t size); | int util_resolve_sys_link(struct udev *udev, char *syspath, size_t size); | |||
int util_log_priority(const char *priority); | int util_log_priority(const char *priority); | |||
size_t util_path_encode(const char *src, char *dest, size_t size); | size_t util_path_encode(const char *src, char *dest, size_t size); | |||
void util_remove_trailing_chars(char *path, char c); | void util_remove_trailing_chars(char *path, char c); | |||
size_t util_strpcpy(char **dest, size_t size, const char *src); | ||||
size_t util_strpcpyf(char **dest, size_t size, const char *src, ...) __attr | ||||
ibute__((format(printf, 3, 4))); | ||||
size_t util_strpcpyl(char **dest, size_t size, const char *src, ...) __attr | ||||
ibute__((sentinel)); | ||||
size_t util_strscpy(char *dest, size_t size, const char *src); | ||||
size_t util_strscpyl(char *dest, size_t size, const char *src, ...) __attri | ||||
bute__((sentinel)); | ||||
int util_replace_whitespace(const char *str, char *to, size_t len); | int util_replace_whitespace(const char *str, char *to, size_t len); | |||
int util_replace_chars(char *str, const char *white); | int util_replace_chars(char *str, const char *white); | |||
unsigned int util_string_hash32(const char *key); | unsigned int util_string_hash32(const char *key); | |||
uint64_t util_string_bloom64(const char *str); | uint64_t util_string_bloom64(const char *str); | |||
/* libudev-util-private.c */ | /* libudev-util-private.c */ | |||
int util_delete_path(struct udev *udev, const char *path); | int util_delete_path(struct udev *udev, const char *path); | |||
uid_t util_lookup_user(struct udev *udev, const char *user); | uid_t util_lookup_user(struct udev *udev, const char *user); | |||
gid_t util_lookup_group(struct udev *udev, const char *group); | gid_t util_lookup_group(struct udev *udev, const char *group); | |||
int util_resolve_subsys_kernel(struct udev *udev, const char *string, char *result, size_t maxsize, int read_value); | int util_resolve_subsys_kernel(struct udev *udev, const char *string, char *result, size_t maxsize, int read_value); | |||
End of changes. 2 change blocks. | ||||
8 lines changed or deleted | 1 lines changed or added | |||
load-fragment.h | load-fragment.h | |||
---|---|---|---|---|
skipping to change at line 78 | skipping to change at line 78 | |||
int config_parse_service_sockets(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *da ta, void *userdata); | int config_parse_service_sockets(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *da ta, void *userdata); | |||
int config_parse_unit_env_file(const char *filename, unsigned line, const c har *section, const char *lvalue, int ltype, const char *rvalue, void *data , void *userdata); | int config_parse_unit_env_file(const char *filename, unsigned line, const c har *section, const char *lvalue, int ltype, const char *rvalue, void *data , void *userdata); | |||
int config_parse_ip_tos(const char *filename, unsigned line, const char *se ction, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | int config_parse_ip_tos(const char *filename, unsigned line, const char *se ction, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | |||
int config_parse_unit_condition_path(const char *filename, unsigned line, c onst char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | int config_parse_unit_condition_path(const char *filename, unsigned line, c onst char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | |||
int config_parse_unit_condition_string(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, vo id *data, void *userdata); | int config_parse_unit_condition_string(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, vo id *data, void *userdata); | |||
int config_parse_unit_condition_null(const char *filename, unsigned line, c onst char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | int config_parse_unit_condition_null(const char *filename, unsigned line, c onst char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | |||
int config_parse_kill_mode(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, vo id *userdata); | int config_parse_kill_mode(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, vo id *userdata); | |||
int config_parse_notify_access(const char *filename, unsigned line, const c har *section, const char *lvalue, int ltype, const char *rvalue, void *data , void *userdata); | int config_parse_notify_access(const char *filename, unsigned line, const c har *section, const char *lvalue, int ltype, const char *rvalue, void *data , void *userdata); | |||
int config_parse_start_limit_action(const char *filename, unsigned line, co nst char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | int config_parse_start_limit_action(const char *filename, unsigned line, co nst char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | |||
int config_parse_unit_cgroup_attr(const char *filename, unsigned line, cons t char *section, const char *lvalue, int ltype, const char *rvalue, void *d ata, void *userdata); | int config_parse_unit_cgroup_attr(const char *filename, unsigned line, cons t char *section, const char *lvalue, int ltype, const char *rvalue, void *d ata, void *userdata); | |||
int config_parse_unit_cpu_shares(const char *filename, unsigned line, const | int config_parse_unit_cgroup_attr_pretty(const char *filename, unsigned lin | |||
char *section, const char *lvalue, int ltype, const char *rvalue, void *da | e, const char *section, const char *lvalue, int ltype, const char *rvalue, | |||
ta, void *userdata); | void *data, void *userdata); | |||
int config_parse_unit_memory_limit(const char *filename, unsigned line, con | ||||
st char *section, const char *lvalue, int ltype, const char *rvalue, void * | ||||
data, void *userdata); | ||||
int config_parse_unit_device_allow(const char *filename, unsigned line, con | ||||
st char *section, const char *lvalue, int ltype, const char *rvalue, void * | ||||
data, void *userdata); | ||||
int config_parse_unit_blkio_weight(const char *filename, unsigned line, con | ||||
st char *section, const char *lvalue, int ltype, const char *rvalue, void * | ||||
data, void *userdata); | ||||
int config_parse_unit_blkio_bandwidth(const char *filename, unsigned line, | ||||
const char *section, const char *lvalue, int ltype, const char *rvalue, voi | ||||
d *data, void *userdata); | ||||
int config_parse_unit_requires_mounts_for(const char *filename, unsigned li ne, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | int config_parse_unit_requires_mounts_for(const char *filename, unsigned li ne, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | |||
int config_parse_syscall_filter(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *dat a, void *userdata); | int config_parse_syscall_filter(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *dat a, void *userdata); | |||
int config_parse_environ(const char *filename, unsigned line, const char *s ection, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); | ||||
/* gperf prototypes */ | /* gperf prototypes */ | |||
const struct ConfigPerfItem* load_fragment_gperf_lookup(const char *key, un signed length); | const struct ConfigPerfItem* load_fragment_gperf_lookup(const char *key, un signed length); | |||
extern const char load_fragment_gperf_nulstr[]; | extern const char load_fragment_gperf_nulstr[]; | |||
End of changes. 2 change blocks. | ||||
15 lines changed or deleted | 4 lines changed or added | |||
logind.h | logind.h | |||
---|---|---|---|---|
skipping to change at line 94 | skipping to change at line 94 | |||
unsigned long session_counter; | unsigned long session_counter; | |||
unsigned long inhibit_counter; | unsigned long inhibit_counter; | |||
Hashmap *session_cgroups; | Hashmap *session_cgroups; | |||
Hashmap *user_cgroups; | Hashmap *user_cgroups; | |||
Hashmap *session_fds; | Hashmap *session_fds; | |||
Hashmap *inhibitor_fds; | Hashmap *inhibitor_fds; | |||
Hashmap *button_fds; | Hashmap *button_fds; | |||
/* If a shutdown was delayed due to a inhibitor this contains | ||||
the unit name we are supposed to start after the delay is | ||||
over */ | ||||
const char *delayed_unit; | ||||
InhibitWhat delayed_what; | ||||
usec_t delayed_timestamp; | ||||
usec_t inhibit_delay_max; | usec_t inhibit_delay_max; | |||
int idle_action_fd; | /* If an action is currently being executed or is delayed, | |||
* this is != 0 and encodes what is being done */ | ||||
InhibitWhat action_what; | ||||
/* If a shutdown/suspend was delayed due to a inhibitor this | ||||
contains the unit name we are supposed to start after the | ||||
delay is over */ | ||||
const char *action_unit; | ||||
/* If a shutdown/suspend is currently executed, then this is | ||||
* the job of it */ | ||||
char *action_job; | ||||
usec_t action_timestamp; | ||||
int idle_action_fd; /* the timer_fd */ | ||||
usec_t idle_action_usec; | usec_t idle_action_usec; | |||
usec_t idle_action_not_before_usec; | usec_t idle_action_not_before_usec; | |||
HandleAction idle_action; | HandleAction idle_action; | |||
HandleAction handle_power_key; | HandleAction handle_power_key; | |||
HandleAction handle_suspend_key; | HandleAction handle_suspend_key; | |||
HandleAction handle_hibernate_key; | HandleAction handle_hibernate_key; | |||
HandleAction handle_lid_switch; | HandleAction handle_lid_switch; | |||
bool power_key_ignore_inhibited; | bool power_key_ignore_inhibited; | |||
End of changes. 2 change blocks. | ||||
8 lines changed or deleted | 15 lines changed or added | |||
logs-show.h | logs-show.h | |||
---|---|---|---|---|
skipping to change at line 25 | skipping to change at line 25 | |||
systemd is distributed in the hope that it will be useful, but | systemd is distributed in the hope that it will be useful, but | |||
WITHOUT ANY WARRANTY; without even the implied warranty of | WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
Lesser General Public License for more details. | Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | You should have received a copy of the GNU Lesser General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include <stdbool.h> | #include <stdbool.h> | |||
#include <unistd.h> | ||||
#include <sys/types.h> | ||||
#include <systemd/sd-journal.h> | #include <systemd/sd-journal.h> | |||
#include "util.h" | #include "util.h" | |||
#include "output-mode.h" | ||||
typedef enum OutputMode { | ||||
OUTPUT_SHORT, | ||||
OUTPUT_SHORT_MONOTONIC, | ||||
OUTPUT_VERBOSE, | ||||
OUTPUT_EXPORT, | ||||
OUTPUT_JSON, | ||||
OUTPUT_JSON_PRETTY, | ||||
OUTPUT_JSON_SSE, | ||||
OUTPUT_CAT, | ||||
_OUTPUT_MODE_MAX, | ||||
_OUTPUT_MODE_INVALID = -1 | ||||
} OutputMode; | ||||
typedef enum OutputFlags { | ||||
OUTPUT_SHOW_ALL = 1 << 0, | ||||
OUTPUT_FOLLOW = 1 << 1, | ||||
OUTPUT_WARN_CUTOFF = 1 << 2, | ||||
OUTPUT_FULL_WIDTH = 1 << 3, | ||||
OUTPUT_COLOR = 1 << 4, | ||||
OUTPUT_CATALOG = 1 << 5 | ||||
} OutputFlags; | ||||
int output_journal( | int output_journal( | |||
FILE *f, | FILE *f, | |||
sd_journal *j, | sd_journal *j, | |||
OutputMode mode, | OutputMode mode, | |||
unsigned n_columns, | unsigned n_columns, | |||
OutputFlags flags); | OutputFlags flags); | |||
int show_journal_by_unit( | int show_journal_by_unit( | |||
FILE *f, | FILE *f, | |||
const char *unit, | const char *unit, | |||
OutputMode mode, | OutputMode mode, | |||
unsigned n_columns, | unsigned n_columns, | |||
usec_t not_before, | usec_t not_before, | |||
unsigned how_many, | unsigned how_many, | |||
OutputFlags flags); | OutputFlags flags); | |||
int show_journal_by_user_unit( | ||||
FILE *f, | ||||
const char *unit, | ||||
OutputMode mode, | ||||
unsigned n_columns, | ||||
usec_t not_before, | ||||
unsigned how_many, | ||||
uid_t uid, | ||||
OutputFlags flags); | ||||
void json_escape( | void json_escape( | |||
FILE *f, | FILE *f, | |||
const char* p, | const char* p, | |||
size_t l, | size_t l, | |||
OutputFlags flags); | OutputFlags flags); | |||
const char* output_mode_to_string(OutputMode m); | const char* output_mode_to_string(OutputMode m); | |||
OutputMode output_mode_from_string(const char *s); | OutputMode output_mode_from_string(const char *s); | |||
End of changes. 3 change blocks. | ||||
22 lines changed or deleted | 13 lines changed or added | |||
macro.h | macro.h | |||
---|---|---|---|---|
skipping to change at line 199 | skipping to change at line 199 | |||
i[j].iov_len -= sub; | i[j].iov_len -= sub; | |||
i[j].iov_base = (uint8_t*) i[j].iov_base + sub; | i[j].iov_base = (uint8_t*) i[j].iov_base + sub; | |||
k -= sub; | k -= sub; | |||
} | } | |||
return k; | return k; | |||
} | } | |||
#define _cleanup_free_ __attribute__((cleanup(freep))) | #define _cleanup_free_ __attribute__((cleanup(freep))) | |||
#define _cleanup_fclose_ __attribute__((cleanup(fclosep))) | #define _cleanup_fclose_ __attribute__((cleanup(fclosep))) | |||
#define _cleanup_pclose_ __attribute__((cleanup(pclosep))) | ||||
#define _cleanup_close_ __attribute__((cleanup(closep))) | #define _cleanup_close_ __attribute__((cleanup(closep))) | |||
#define _cleanup_closedir_ __attribute__((cleanup(closedirp))) | #define _cleanup_closedir_ __attribute__((cleanup(closedirp))) | |||
#define _cleanup_umask_ __attribute__((cleanup(umaskp))) | #define _cleanup_umask_ __attribute__((cleanup(umaskp))) | |||
#define _cleanup_set_free_ __attribute__((cleanup(set_freep))) | #define _cleanup_set_free_ __attribute__((cleanup(set_freep))) | |||
#define _cleanup_set_free_free_ __attribute__((cleanup(set_free_freep))) | ||||
#define _cleanup_strv_free_ __attribute__((cleanup(strv_freep))) | #define _cleanup_strv_free_ __attribute__((cleanup(strv_freep))) | |||
#define VA_FORMAT_ADVANCE(format, ap) \ | #define VA_FORMAT_ADVANCE(format, ap) \ | |||
do { \ | do { \ | |||
int _argtypes[128]; \ | int _argtypes[128]; \ | |||
size_t _i, _k; \ | size_t _i, _k; \ | |||
_k = parse_printf_format((format), ELEMENTSOF(_argtypes), _argtypes ); \ | _k = parse_printf_format((format), ELEMENTSOF(_argtypes), _argtypes ); \ | |||
assert(_k < ELEMENTSOF(_argtypes)); \ | assert(_k < ELEMENTSOF(_argtypes)); \ | |||
for (_i = 0; _i < _k; _i++) { \ | for (_i = 0; _i < _k; _i++) { \ | |||
if (_argtypes[_i] & PA_FLAG_PTR) { \ | if (_argtypes[_i] & PA_FLAG_PTR) { \ | |||
End of changes. 2 change blocks. | ||||
0 lines changed or deleted | 2 lines changed or added | |||
manager.h | manager.h | |||
---|---|---|---|---|
skipping to change at line 64 | skipping to change at line 64 | |||
WATCH_SIGNAL, | WATCH_SIGNAL, | |||
WATCH_NOTIFY, | WATCH_NOTIFY, | |||
WATCH_FD, | WATCH_FD, | |||
WATCH_UNIT_TIMER, | WATCH_UNIT_TIMER, | |||
WATCH_JOB_TIMER, | WATCH_JOB_TIMER, | |||
WATCH_MOUNT, | WATCH_MOUNT, | |||
WATCH_SWAP, | WATCH_SWAP, | |||
WATCH_UDEV, | WATCH_UDEV, | |||
WATCH_DBUS_WATCH, | WATCH_DBUS_WATCH, | |||
WATCH_DBUS_TIMEOUT, | WATCH_DBUS_TIMEOUT, | |||
WATCH_TIME_CHANGE | WATCH_TIME_CHANGE, | |||
WATCH_JOBS_IN_PROGRESS | ||||
}; | }; | |||
struct Watch { | struct Watch { | |||
int fd; | int fd; | |||
WatchType type; | WatchType type; | |||
union { | union { | |||
struct Unit *unit; | struct Unit *unit; | |||
struct Job *job; | struct Job *job; | |||
DBusWatch *bus_watch; | DBusWatch *bus_watch; | |||
DBusTimeout *bus_timeout; | DBusTimeout *bus_timeout; | |||
skipping to change at line 130 | skipping to change at line 131 | |||
/* Units to check when doing GC */ | /* Units to check when doing GC */ | |||
LIST_HEAD(Unit, gc_queue); | LIST_HEAD(Unit, gc_queue); | |||
Hashmap *watch_pids; /* pid => Unit object n:1 */ | Hashmap *watch_pids; /* pid => Unit object n:1 */ | |||
char *notify_socket; | char *notify_socket; | |||
Watch notify_watch; | Watch notify_watch; | |||
Watch signal_watch; | Watch signal_watch; | |||
Watch time_change_watch; | Watch time_change_watch; | |||
Watch jobs_in_progress_watch; | ||||
int epoll_fd; | int epoll_fd; | |||
unsigned n_snapshots; | unsigned n_snapshots; | |||
LookupPaths lookup_paths; | LookupPaths lookup_paths; | |||
Set *unit_path_cache; | Set *unit_path_cache; | |||
char **environment; | char **environment; | |||
char **default_controllers; | char **default_controllers; | |||
skipping to change at line 228 | skipping to change at line 230 | |||
ExecOutput default_std_output, default_std_error; | ExecOutput default_std_output, default_std_error; | |||
struct rlimit *rlimit[RLIMIT_NLIMITS]; | struct rlimit *rlimit[RLIMIT_NLIMITS]; | |||
/* non-zero if we are reloading or reexecuting, */ | /* non-zero if we are reloading or reexecuting, */ | |||
int n_reloading; | int n_reloading; | |||
unsigned n_installed_jobs; | unsigned n_installed_jobs; | |||
unsigned n_failed_jobs; | unsigned n_failed_jobs; | |||
/* Jobs in progress watching */ | ||||
unsigned n_running_jobs; | ||||
unsigned n_on_console; | ||||
unsigned jobs_in_progress_iteration; | ||||
/* Type=idle pipes */ | /* Type=idle pipes */ | |||
int idle_pipe[2]; | int idle_pipe[2]; | |||
char *switch_root; | char *switch_root; | |||
char *switch_root_init; | char *switch_root_init; | |||
}; | }; | |||
int manager_new(SystemdRunningAs running_as, Manager **m); | int manager_new(SystemdRunningAs running_as, Manager **m); | |||
void manager_free(Manager *m); | void manager_free(Manager *m); | |||
skipping to change at line 279 | skipping to change at line 286 | |||
void manager_dispatch_bus_query_pid_done(Manager *m, const char *name, pid_ t pid); | void manager_dispatch_bus_query_pid_done(Manager *m, const char *name, pid_ t pid); | |||
int manager_open_serialization(Manager *m, FILE **_f); | int manager_open_serialization(Manager *m, FILE **_f); | |||
int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool serialize_jobs) ; | int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool serialize_jobs) ; | |||
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_distribute_fds(Manager *m, FDSet *fds); | |||
int manager_reload(Manager *m); | int manager_reload(Manager *m); | |||
bool manager_is_booting_or_shutting_down(Manager *m); | ||||
void manager_reset_failed(Manager *m); | void manager_reset_failed(Manager *m); | |||
void manager_send_unit_audit(Manager *m, Unit *u, int type, bool success); | void manager_send_unit_audit(Manager *m, Unit *u, int type, bool success); | |||
void manager_send_unit_plymouth(Manager *m, Unit *u); | void manager_send_unit_plymouth(Manager *m, Unit *u); | |||
bool manager_unit_pending_inactive(Manager *m, const char *name); | bool manager_unit_pending_inactive(Manager *m, const char *name); | |||
void manager_check_finished(Manager *m); | void manager_check_finished(Manager *m); | |||
void manager_run_generators(Manager *m); | void manager_run_generators(Manager *m); | |||
void manager_undo_generators(Manager *m); | void manager_undo_generators(Manager *m); | |||
void manager_recheck_journal(Manager *m); | void manager_recheck_journal(Manager *m); | |||
void manager_set_show_status(Manager *m, bool b); | void manager_set_show_status(Manager *m, bool b); | |||
bool manager_get_show_status(Manager *m); | void manager_status_printf(Manager *m, bool ephemeral, const char *status, const char *format, ...); | |||
void watch_init(Watch *w); | void watch_init(Watch *w); | |||
End of changes. 5 change blocks. | ||||
4 lines changed or deleted | 9 lines changed or added | |||
missing.h | missing.h | |||
---|---|---|---|---|
skipping to change at line 199 | skipping to change at line 199 | |||
#endif | #endif | |||
#ifndef SCM_SECURITY | #ifndef SCM_SECURITY | |||
#define SCM_SECURITY 0x03 | #define SCM_SECURITY 0x03 | |||
#endif | #endif | |||
#ifndef MS_STRICTATIME | #ifndef MS_STRICTATIME | |||
#define MS_STRICTATIME (1<<24) | #define MS_STRICTATIME (1<<24) | |||
#endif | #endif | |||
#ifndef MS_REC | ||||
#define MS_REC 16384 | ||||
#endif | ||||
#ifndef MS_SHARED | ||||
#define MS_SHARED (1<<20) | ||||
#endif | ||||
#ifndef PR_SET_NO_NEW_PRIVS | #ifndef PR_SET_NO_NEW_PRIVS | |||
#define PR_SET_NO_NEW_PRIVS 38 | #define PR_SET_NO_NEW_PRIVS 38 | |||
#endif | #endif | |||
#ifndef PR_SET_CHILD_SUBREAPER | #ifndef PR_SET_CHILD_SUBREAPER | |||
#define PR_SET_CHILD_SUBREAPER 36 | #define PR_SET_CHILD_SUBREAPER 36 | |||
#endif | #endif | |||
#ifndef MAX_HANDLE_SZ | #ifndef MAX_HANDLE_SZ | |||
#define MAX_HANDLE_SZ 128 | #define MAX_HANDLE_SZ 128 | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 8 lines changed or added | |||
pager.h | pager.h | |||
---|---|---|---|---|
skipping to change at line 26 | skipping to change at line 26 | |||
WITHOUT ANY WARRANTY; without even the implied warranty of | WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
Lesser General Public License for more details. | Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | You should have received a copy of the GNU Lesser General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include <stdbool.h> | #include <stdbool.h> | |||
int pager_open(void); | int pager_open(bool jump_to_end); | |||
void pager_close(void); | void pager_close(void); | |||
bool pager_have(void); | bool pager_have(void); | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
path-util.h | path-util.h | |||
---|---|---|---|---|
skipping to change at line 40 | skipping to change at line 40 | |||
int path_get_parent(const char *path, char **parent); | int path_get_parent(const char *path, char **parent); | |||
bool path_is_absolute(const char *p); | bool path_is_absolute(const char *p); | |||
char *path_make_absolute(const char *p, const char *prefix); | char *path_make_absolute(const char *p, const char *prefix); | |||
char *path_make_absolute_cwd(const char *p); | char *path_make_absolute_cwd(const char *p); | |||
char *path_kill_slashes(char *path); | char *path_kill_slashes(char *path); | |||
char *path_startswith(const char *path, const char *prefix); | char *path_startswith(const char *path, const char *prefix); | |||
bool path_equal(const char *a, const char *b); | bool path_equal(const char *a, const char *b); | |||
char **path_strv_make_absolute_cwd(char **l); | char **path_strv_make_absolute_cwd(char **l); | |||
char **path_strv_canonicalize(char **l); | char **path_strv_canonicalize(char **l); | |||
char **path_strv_remove_empty(char **l); | char **path_strv_canonicalize_uniq(char **l); | |||
int path_is_mount_point(const char *path, bool allow_symlink); | int path_is_mount_point(const char *path, bool allow_symlink); | |||
int path_is_read_only_fs(const char *path); | int path_is_read_only_fs(const char *path); | |||
#endif | #endif | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
path.h | path.h | |||
---|---|---|---|---|
skipping to change at line 101 | skipping to change at line 101 | |||
PathResult result; | PathResult result; | |||
}; | }; | |||
void path_unit_notify(Unit *u, UnitActiveState new_state); | void path_unit_notify(Unit *u, UnitActiveState new_state); | |||
/* Called from the mount code figure out if a mount is a dependency of | /* Called from the mount code figure out if a mount is a dependency of | |||
* any of the paths of this path object */ | * any of the paths of this path object */ | |||
int path_add_one_mount_link(Path *p, Mount *m); | int path_add_one_mount_link(Path *p, Mount *m); | |||
void path_free_specs(Path *p); | ||||
extern const UnitVTable path_vtable; | extern const UnitVTable path_vtable; | |||
const char* path_state_to_string(PathState i); | const char* path_state_to_string(PathState i); | |||
PathState path_state_from_string(const char *s); | PathState path_state_from_string(const char *s); | |||
const char* path_type_to_string(PathType i); | const char* path_type_to_string(PathType i); | |||
PathType path_type_from_string(const char *s); | PathType path_type_from_string(const char *s); | |||
const char* path_result_to_string(PathResult i); | const char* path_result_to_string(PathResult i); | |||
PathResult path_result_from_string(const char *s); | PathResult path_result_from_string(const char *s); | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 2 lines changed or added | |||
sd-login.h | sd-login.h | |||
---|---|---|---|---|
skipping to change at line 111 | skipping to change at line 111 | |||
/* Determine the type of this session, i.e. one of "tty", "x11" or "unspeci fied". */ | /* Determine the type of this session, i.e. one of "tty", "x11" or "unspeci fied". */ | |||
int sd_session_get_type(const char *session, char **type); | int sd_session_get_type(const char *session, char **type); | |||
/* Determine the class of this session, i.e. one of "user", "greeter" or "l ock-screen". */ | /* Determine the class of this session, i.e. one of "user", "greeter" or "l ock-screen". */ | |||
int sd_session_get_class(const char *session, char **clazz); | int sd_session_get_class(const char *session, char **clazz); | |||
/* Determine the X11 display of this session. */ | /* Determine the X11 display of this session. */ | |||
int sd_session_get_display(const char *session, char **display); | int sd_session_get_display(const char *session, char **display); | |||
/* Determine the TTY of this session. */ | ||||
int sd_session_get_tty(const char *session, char **display); | ||||
/* Return active session and user of seat */ | /* Return active session and user of seat */ | |||
int sd_seat_get_active(const char *seat, char **session, uid_t *uid); | int sd_seat_get_active(const char *seat, char **session, uid_t *uid); | |||
/* Return sessions and users on seat. Returns number of sessions as | /* Return sessions and users on seat. Returns number of sessions as | |||
* return value. If sessions is NULL returns only the number of | * return value. If sessions is NULL returns only the number of | |||
* sessions. */ | * sessions. */ | |||
int sd_seat_get_sessions(const char *seat, char ***sessions, uid_t **uid, u nsigned *n_uids); | int sd_seat_get_sessions(const char *seat, char ***sessions, uid_t **uid, u nsigned *n_uids); | |||
/* Return whether the seat is multi-session capable */ | /* Return whether the seat is multi-session capable */ | |||
int sd_seat_can_multi_session(const char *seat); | int sd_seat_can_multi_session(const char *seat); | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 3 lines changed or added | |||
sd-messages.h | sd-messages.h | |||
---|---|---|---|---|
skipping to change at line 70 | skipping to change at line 70 | |||
#define SD_MESSAGE_UNIT_FAILED SD_ID128_MAKE(be,02,cf,68,55,d2,42,8b,a 4,0d,f7,e9,d0,22,f0,3d) | #define SD_MESSAGE_UNIT_FAILED SD_ID128_MAKE(be,02,cf,68,55,d2,42,8b,a 4,0d,f7,e9,d0,22,f0,3d) | |||
#define SD_MESSAGE_UNIT_RELOADING SD_ID128_MAKE(d3,4d,03,7f,ff,18,47,e6,a e,66,9a,37,0e,69,47,25) | #define SD_MESSAGE_UNIT_RELOADING SD_ID128_MAKE(d3,4d,03,7f,ff,18,47,e6,a e,66,9a,37,0e,69,47,25) | |||
#define SD_MESSAGE_UNIT_RELOADED SD_ID128_MAKE(7b,05,eb,c6,68,38,42,22,b a,a8,88,11,79,cf,da,54) | #define SD_MESSAGE_UNIT_RELOADED SD_ID128_MAKE(7b,05,eb,c6,68,38,42,22,b a,a8,88,11,79,cf,da,54) | |||
#define SD_MESSAGE_SPAWN_FAILED SD_ID128_MAKE(64,12,57,65,1c,1b,4e,c9,a 8,62,4d,7a,40,a9,e1,e7) | #define SD_MESSAGE_SPAWN_FAILED SD_ID128_MAKE(64,12,57,65,1c,1b,4e,c9,a 8,62,4d,7a,40,a9,e1,e7) | |||
#define SD_MESSAGE_FORWARD_SYSLOG_MISSED SD_ID128_MAKE(00,27,22,9c,a0,64,41 ,81,a7,6c,4e,92,45,8a,fa,2e) | #define SD_MESSAGE_FORWARD_SYSLOG_MISSED SD_ID128_MAKE(00,27,22,9c,a0,64,41 ,81,a7,6c,4e,92,45,8a,fa,2e) | |||
#define SD_MESSAGE_OVERMOUNTING SD_ID128_MAKE(1d,ee,03,69,c7,fc,47,36,b 7,09,9b,38,ec,b4,6e,e7) | #define SD_MESSAGE_OVERMOUNTING SD_ID128_MAKE(1d,ee,03,69,c7,fc,47,36,b 7,09,9b,38,ec,b4,6e,e7) | |||
#define SD_MESSAGE_LID_OPENED SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b | ||||
5,0e,20,0e,55,b9,b0,6f) | ||||
#define SD_MESSAGE_LID_CLOSED SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b | ||||
5,0e,20,0e,55,b9,b0,70) | ||||
#define SD_MESSAGE_POWER_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b | ||||
5,0e,20,0e,55,b9,b0,71) | ||||
#define SD_MESSAGE_SUSPEND_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b | ||||
5,0e,20,0e,55,b9,b0,72) | ||||
#define SD_MESSAGE_HIBERNATE_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b | ||||
5,0e,20,0e,55,b9,b0,73) | ||||
#ifdef __cplusplus | #ifdef __cplusplus | |||
} | } | |||
#endif | #endif | |||
#endif | #endif | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 11 lines changed or added | |||
set.h | set.h | |||
---|---|---|---|---|
skipping to change at line 38 | skipping to change at line 38 | |||
* for each set use. */ | * for each set use. */ | |||
#include "hashmap.h" | #include "hashmap.h" | |||
typedef struct Set Set; | typedef struct Set Set; | |||
Set *set_new(hash_func_t hash_func, compare_func_t compare_func); | Set *set_new(hash_func_t hash_func, compare_func_t compare_func); | |||
void set_free(Set* s); | void set_free(Set* s); | |||
void set_freep(Set **s); | void set_freep(Set **s); | |||
void set_free_free(Set *s); | void set_free_free(Set *s); | |||
void set_free_freep(Set **s); | ||||
Set* set_copy(Set *s); | Set* set_copy(Set *s); | |||
int set_ensure_allocated(Set **s, hash_func_t hash_func, compare_func_t com pare_func); | int set_ensure_allocated(Set **s, hash_func_t hash_func, compare_func_t com pare_func); | |||
int set_put(Set *s, void *value); | int set_put(Set *s, void *value); | |||
int set_replace(Set *s, void *value); | int set_replace(Set *s, void *value); | |||
void *set_get(Set *s, void *value); | void *set_get(Set *s, void *value); | |||
bool set_contains(Set *s, void *value); | bool set_contains(Set *s, void *value); | |||
void *set_remove(Set *s, void *value); | void *set_remove(Set *s, void *value); | |||
int set_remove_and_put(Set *s, void *old_value, void *new_value); | int set_remove_and_put(Set *s, void *old_value, void *new_value); | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 1 lines changed or added | |||
socket-util.h | socket-util.h | |||
---|---|---|---|---|
skipping to change at line 91 | skipping to change at line 91 | |||
mode_t directory_mode, | mode_t directory_mode, | |||
mode_t socket_mode, | mode_t socket_mode, | |||
const char *label, | const char *label, | |||
int *ret); | int *ret); | |||
bool socket_address_is(const SocketAddress *a, const char *s, int type); | bool socket_address_is(const SocketAddress *a, const char *s, int type); | |||
bool socket_address_is_netlink(const SocketAddress *a, const char *s); | bool socket_address_is_netlink(const SocketAddress *a, const char *s); | |||
bool socket_address_matches_fd(const SocketAddress *a, int fd); | bool socket_address_matches_fd(const SocketAddress *a, int fd); | |||
int make_socket_fd(const char* address, int flags); | ||||
bool socket_address_equal(const SocketAddress *a, const SocketAddress *b); | bool socket_address_equal(const SocketAddress *a, const SocketAddress *b); | |||
bool socket_address_needs_mount(const SocketAddress *a, const char *prefix) ; | bool socket_address_needs_mount(const SocketAddress *a, const char *prefix) ; | |||
const char* socket_address_bind_ipv6_only_to_string(SocketAddressBindIPv6On ly b); | const char* socket_address_bind_ipv6_only_to_string(SocketAddressBindIPv6On ly b); | |||
SocketAddressBindIPv6Only socket_address_bind_ipv6_only_from_string(const c har *s); | SocketAddressBindIPv6Only socket_address_bind_ipv6_only_from_string(const c har *s); | |||
int netlink_family_to_string_alloc(int b, char **s); | int netlink_family_to_string_alloc(int b, char **s); | |||
int netlink_family_from_string(const char *s); | int netlink_family_from_string(const char *s); | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 2 lines changed or added | |||
socket.h | socket.h | |||
---|---|---|---|---|
skipping to change at line 166 | skipping to change at line 166 | |||
/* Called from the service when it shut down */ | /* Called from the service when it shut down */ | |||
void socket_notify_service_dead(Socket *s, bool failed_permanent); | void socket_notify_service_dead(Socket *s, bool failed_permanent); | |||
/* Called from the mount code figure out if a mount is a dependency of | /* Called from the mount code figure out if a mount is a dependency of | |||
* any of the sockets of this socket */ | * any of the sockets of this socket */ | |||
int socket_add_one_mount_link(Socket *s, Mount *m); | int socket_add_one_mount_link(Socket *s, Mount *m); | |||
/* Called from the service code when a per-connection service ended */ | /* Called from the service code when a per-connection service ended */ | |||
void socket_connection_unref(Socket *s); | void socket_connection_unref(Socket *s); | |||
void socket_free_ports(Socket *s); | ||||
extern const UnitVTable socket_vtable; | extern const UnitVTable socket_vtable; | |||
const char* socket_state_to_string(SocketState i); | const char* socket_state_to_string(SocketState i); | |||
SocketState socket_state_from_string(const char *s); | SocketState socket_state_from_string(const char *s); | |||
const char* socket_exec_command_to_string(SocketExecCommand i); | const char* socket_exec_command_to_string(SocketExecCommand i); | |||
SocketExecCommand socket_exec_command_from_string(const char *s); | SocketExecCommand socket_exec_command_from_string(const char *s); | |||
const char* socket_result_to_string(SocketResult i); | const char* socket_result_to_string(SocketResult i); | |||
SocketResult socket_result_from_string(const char *s); | SocketResult socket_result_from_string(const char *s); | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 2 lines changed or added | |||
special.h | special.h | |||
---|---|---|---|---|
skipping to change at line 49 | skipping to change at line 49 | |||
#define SPECIAL_HIBERNATE_TARGET "hibernate.target" | #define SPECIAL_HIBERNATE_TARGET "hibernate.target" | |||
#define SPECIAL_HYBRID_SLEEP_TARGET "hybrid-sleep.target" | #define SPECIAL_HYBRID_SLEEP_TARGET "hybrid-sleep.target" | |||
/* Special boot targets */ | /* Special boot targets */ | |||
#define SPECIAL_RESCUE_TARGET "rescue.target" | #define SPECIAL_RESCUE_TARGET "rescue.target" | |||
#define SPECIAL_EMERGENCY_TARGET "emergency.target" | #define SPECIAL_EMERGENCY_TARGET "emergency.target" | |||
/* Early boot targets */ | /* Early boot targets */ | |||
#define SPECIAL_SYSINIT_TARGET "sysinit.target" | #define SPECIAL_SYSINIT_TARGET "sysinit.target" | |||
#define SPECIAL_SOCKETS_TARGET "sockets.target" | #define SPECIAL_SOCKETS_TARGET "sockets.target" | |||
#define SPECIAL_LOCAL_FS_TARGET "local-fs.target" /* LSB's $local_f s */ | #define SPECIAL_LOCAL_FS_TARGET "local-fs.target" | |||
#define SPECIAL_LOCAL_FS_PRE_TARGET "local-fs-pre.target" | #define SPECIAL_LOCAL_FS_PRE_TARGET "local-fs-pre.target" | |||
#define SPECIAL_REMOTE_FS_TARGET "remote-fs.target" /* LSB's $remote_ fs */ | #define SPECIAL_REMOTE_FS_TARGET "remote-fs.target" /* LSB's $remote_ fs */ | |||
#define SPECIAL_REMOTE_FS_PRE_TARGET "remote-fs-pre.target" | #define SPECIAL_REMOTE_FS_PRE_TARGET "remote-fs-pre.target" | |||
#define SPECIAL_SWAP_TARGET "swap.target" | #define SPECIAL_SWAP_TARGET "swap.target" | |||
#define SPECIAL_BASIC_TARGET "basic.target" | #define SPECIAL_BASIC_TARGET "basic.target" | |||
/* LSB compatibility */ | /* LSB compatibility */ | |||
#define SPECIAL_NETWORK_TARGET "network.target" /* LSB's $network */ | #define SPECIAL_NETWORK_TARGET "network.target" /* LSB's $network */ | |||
#define SPECIAL_NSS_LOOKUP_TARGET "nss-lookup.target" /* LSB's $named * / | #define SPECIAL_NSS_LOOKUP_TARGET "nss-lookup.target" /* LSB's $named * / | |||
#define SPECIAL_RPCBIND_TARGET "rpcbind.target" /* LSB's $portmap */ | #define SPECIAL_RPCBIND_TARGET "rpcbind.target" /* LSB's $portmap */ | |||
#define SPECIAL_SYSLOG_TARGET "syslog.target" /* LSB's $syslog */ | ||||
#define SPECIAL_TIME_SYNC_TARGET "time-sync.target" /* LSB's $time */ | #define SPECIAL_TIME_SYNC_TARGET "time-sync.target" /* LSB's $time */ | |||
#define SPECIAL_DISPLAY_MANAGER_SERVICE "display-manager.service" /* Common | ||||
extension of LSB */ | ||||
#define SPECIAL_MAIL_TRANSFER_AGENT_TARGET "mail-transfer-agent.target" /* | ||||
Common extension of LSB */ | ||||
/* | /* | |||
* Rules regarding adding further high level targets like the above: | * Rules regarding adding further high level targets like the above: | |||
* | * | |||
* - Be conservative, only add more of these when we really need | * - Be conservative, only add more of these when we really need | |||
* them. We need strong usecases for further additions. | * them. We need strong usecases for further additions. | |||
* | * | |||
* - When there can be multiple implementations running side-by-side, | * - When there can be multiple implementations running side-by-side, | |||
* it needs to be a .target unit which can pull in all | * it needs to be a .target unit which can pull in all | |||
* implementations. | * implementations. | |||
End of changes. 3 change blocks. | ||||
6 lines changed or deleted | 1 lines changed or added | |||
specifier.h | specifier.h | |||
---|---|---|---|---|
skipping to change at line 34 | skipping to change at line 34 | |||
typedef char* (*SpecifierCallback)(char specifier, void *data, void *userda ta); | typedef char* (*SpecifierCallback)(char specifier, void *data, void *userda ta); | |||
typedef struct Specifier { | typedef struct Specifier { | |||
const char specifier; | const char specifier; | |||
const SpecifierCallback lookup; | const SpecifierCallback lookup; | |||
void *data; | void *data; | |||
} Specifier; | } Specifier; | |||
char *specifier_printf(const char *text, const Specifier table[], void *use rdata); | char *specifier_printf(const char *text, const Specifier table[], void *use rdata); | |||
char* specifier_string(char specifier, void *data, void *userdata); | char *specifier_string(char specifier, void *data, void *userdata); | |||
char *specifier_machine_id(char specifier, void *data, void *userdata); | ||||
char *specifier_boot_id(char specifier, void *data, void *userdata); | ||||
char *specifier_host_name(char specifier, void *data, void *userdata); | ||||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 0 lines changed or added | |||
strv.h | strv.h | |||
---|---|---|---|---|
skipping to change at line 40 | skipping to change at line 40 | |||
char *strv_find_prefix(char **l, const char *name); | char *strv_find_prefix(char **l, const char *name); | |||
void strv_free(char **l); | void strv_free(char **l); | |||
void strv_freep(char ***l); | void strv_freep(char ***l); | |||
char **strv_copy(char **l) _malloc_; | char **strv_copy(char **l) _malloc_; | |||
unsigned strv_length(char **l); | unsigned strv_length(char **l); | |||
char **strv_merge(char **a, char **b); | char **strv_merge(char **a, char **b); | |||
char **strv_merge_concat(char **a, char **b, const char *suffix); | char **strv_merge_concat(char **a, char **b, const char *suffix); | |||
char **strv_append(char **l, const char *s); | char **strv_append(char **l, const char *s); | |||
int strv_extend(char ***l, const char *value); | ||||
char **strv_remove(char **l, const char *s); | char **strv_remove(char **l, const char *s); | |||
char **strv_remove_prefix(char **l, const char *s); | char **strv_remove_prefix(char **l, const char *s); | |||
char **strv_uniq(char **l); | char **strv_uniq(char **l); | |||
#define strv_contains(l, s) (!!strv_find((l), (s))) | #define strv_contains(l, s) (!!strv_find((l), (s))) | |||
char **strv_new(const char *x, ...) _sentinel_ _malloc_; | char **strv_new(const char *x, ...) _sentinel_ _malloc_; | |||
char **strv_new_ap(const char *x, va_list ap) _malloc_; | char **strv_new_ap(const char *x, va_list ap) _malloc_; | |||
static inline const char* STRV_IFNOTNULL(const char *x) { | static inline const char* STRV_IFNOTNULL(const char *x) { | |||
return x ? x : (const char *) -1; | return x ? x : (const char *) -1; | |||
} | } | |||
static inline bool strv_isempty(char **l) { | static inline bool strv_isempty(char **l) { | |||
return !l || !*l; | return !l || !*l; | |||
} | } | |||
char **strv_split(const char *s, const char *separator) _malloc_; | char **strv_split(const char *s, const char *separator) _malloc_; | |||
char **strv_split_quoted(const char *s) _malloc_; | char **strv_split_quoted(const char *s) _malloc_; | |||
char **strv_split_newlines(const char *s) _malloc_; | ||||
char *strv_join(char **l, const char *separator) _malloc_; | char *strv_join(char **l, const char *separator) _malloc_; | |||
char **strv_env_merge(unsigned n_lists, ...); | ||||
char **strv_env_delete(char **x, unsigned n_lists, ...); | ||||
char **strv_env_set(char **x, const char *p); | ||||
char **strv_env_unset(char **l, const char *p); | ||||
char *strv_env_get_with_length(char **l, const char *name, size_t k); | ||||
char *strv_env_get(char **x, const char *n); | ||||
char **strv_env_clean(char **l); | ||||
char **strv_parse_nulstr(const char *s, size_t l); | char **strv_parse_nulstr(const char *s, size_t l); | |||
char **strv_split_nulstr(const char *s); | ||||
bool strv_overlap(char **a, char **b); | bool strv_overlap(char **a, char **b); | |||
#define STRV_FOREACH(s, l) \ | #define STRV_FOREACH(s, l) \ | |||
for ((s) = (l); (s) && *(s); (s)++) | for ((s) = (l); (s) && *(s); (s)++) | |||
#define STRV_FOREACH_BACKWARDS(s, l) \ | #define STRV_FOREACH_BACKWARDS(s, l) \ | |||
for (; (l) && ((s) >= (l)); (s)--) | for (; (l) && ((s) >= (l)); (s)--) | |||
#define STRV_FOREACH_PAIR(x, y, l) \ | ||||
for ((x) = (l), (y) = (x+1); (x) && *(x) && *(y); (x) += 2) | ||||
char **strv_sort(char **l); | char **strv_sort(char **l); | |||
void strv_print(char **l); | ||||
End of changes. 6 change blocks. | ||||
11 lines changed or deleted | 6 lines changed or added | |||
syscall-list.h | syscall-list.h | |||
---|---|---|---|---|
skipping to change at line 25 | skipping to change at line 25 | |||
systemd is distributed in the hope that it will be useful, but | systemd is distributed in the hope that it will be useful, but | |||
WITHOUT ANY WARRANTY; without even the implied warranty of | WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
Lesser General Public License for more details. | Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | You should have received a copy of the GNU Lesser General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#if defined __x86_64__ && defined __ILP32__ | ||||
/* The x32 ABI defines all of its syscalls with bit 30 set, which causes | ||||
issues when attempting to use syscalls as simple indicies into an array. | ||||
Instead, use the syscall id & ~SYSCALL_MASK as the index, and | the | ||||
internal id with the syscall mask as needed. | ||||
*/ | ||||
#include <asm/unistd.h> | ||||
#define SYSCALL_TO_INDEX(x) ((x) & ~__X32_SYSCALL_BIT) | ||||
#define INDEX_TO_SYSCALL(x) ((x) | __X32_SYSCALL_BIT) | ||||
#else | ||||
#define SYSCALL_TO_INDEX(x) (x) | ||||
#define INDEX_TO_SYSCALL(x) (x) | ||||
#endif | ||||
const char *syscall_to_name(int id); | const char *syscall_to_name(int id); | |||
int syscall_from_name(const char *name); | int syscall_from_name(const char *name); | |||
int syscall_max(void); | int syscall_max(void); | |||
#endif | #endif | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 14 lines changed or added | |||
syscall-to-name.h | syscall-to-name.h | |||
---|---|---|---|---|
const char* const syscall_names[] = { | const char* const syscall_names[] = { | |||
[__NR_waitid] = "waitid", | [SYSCALL_TO_INDEX(__NR_waitid)] = "waitid", | |||
[__NR_fdatasync] = "fdatasync", | [SYSCALL_TO_INDEX(__NR_fdatasync)] = "fdatasync", | |||
[__NR_mq_getsetattr] = "mq_getsetattr", | [SYSCALL_TO_INDEX(__NR_mq_getsetattr)] = "mq_getsetattr", | |||
[__NR_sched_getaffinity] = "sched_getaffinity", | [SYSCALL_TO_INDEX(__NR_sched_getaffinity)] = "sched_getaffinity", | |||
[__NR_epoll_pwait] = "epoll_pwait", | [SYSCALL_TO_INDEX(__NR_epoll_pwait)] = "epoll_pwait", | |||
[__NR_init_module] = "init_module", | [SYSCALL_TO_INDEX(__NR_init_module)] = "init_module", | |||
[__NR_delete_module] = "delete_module", | [SYSCALL_TO_INDEX(__NR_delete_module)] = "delete_module", | |||
[__NR_setresgid32] = "setresgid32", | [SYSCALL_TO_INDEX(__NR_setresgid32)] = "setresgid32", | |||
[__NR_mkdirat] = "mkdirat", | [SYSCALL_TO_INDEX(__NR_mkdirat)] = "mkdirat", | |||
[__NR_rt_sigsuspend] = "rt_sigsuspend", | [SYSCALL_TO_INDEX(__NR_rt_sigsuspend)] = "rt_sigsuspend", | |||
[__NR_openat] = "openat", | [SYSCALL_TO_INDEX(__NR_openat)] = "openat", | |||
[__NR_rt_tgsigqueueinfo] = "rt_tgsigqueueinfo", | [SYSCALL_TO_INDEX(__NR_rt_tgsigqueueinfo)] = "rt_tgsigqueueinfo", | |||
[__NR_name_to_handle_at] = "name_to_handle_at", | [SYSCALL_TO_INDEX(__NR_name_to_handle_at)] = "name_to_handle_at", | |||
[__NR_create_module] = "create_module", | [SYSCALL_TO_INDEX(__NR_create_module)] = "create_module", | |||
[__NR_setdomainname] = "setdomainname", | [SYSCALL_TO_INDEX(__NR_setdomainname)] = "setdomainname", | |||
[__NR_open] = "open", | [SYSCALL_TO_INDEX(__NR_open)] = "open", | |||
[__NR_timerfd_settime] = "timerfd_settime", | [SYSCALL_TO_INDEX(__NR_timerfd_settime)] = "timerfd_settime", | |||
[__NR_getxattr] = "getxattr", | [SYSCALL_TO_INDEX(__NR_getxattr)] = "getxattr", | |||
[__NR_pause] = "pause", | [SYSCALL_TO_INDEX(__NR_pause)] = "pause", | |||
[__NR_swapoff] = "swapoff", | [SYSCALL_TO_INDEX(__NR_swapoff)] = "swapoff", | |||
[__NR_ftruncate64] = "ftruncate64", | [SYSCALL_TO_INDEX(__NR_ftruncate64)] = "ftruncate64", | |||
[__NR_mmap2] = "mmap2", | [SYSCALL_TO_INDEX(__NR_mmap2)] = "mmap2", | |||
[__NR_ioperm] = "ioperm", | [SYSCALL_TO_INDEX(__NR_ioperm)] = "ioperm", | |||
[__NR_ioprio_get] = "ioprio_get", | [SYSCALL_TO_INDEX(__NR_ioprio_get)] = "ioprio_get", | |||
[__NR_setpriority] = "setpriority", | [SYSCALL_TO_INDEX(__NR_setpriority)] = "setpriority", | |||
[__NR_rt_sigqueueinfo] = "rt_sigqueueinfo", | [SYSCALL_TO_INDEX(__NR_rt_sigqueueinfo)] = "rt_sigqueueinfo", | |||
[__NR_nanosleep] = "nanosleep", | [SYSCALL_TO_INDEX(__NR_nanosleep)] = "nanosleep", | |||
[__NR_fanotify_init] = "fanotify_init", | [SYSCALL_TO_INDEX(__NR_fanotify_init)] = "fanotify_init", | |||
[__NR_lremovexattr] = "lremovexattr", | [SYSCALL_TO_INDEX(__NR_lremovexattr)] = "lremovexattr", | |||
[__NR_read] = "read", | [SYSCALL_TO_INDEX(__NR_read)] = "read", | |||
[__NR_fadvise64_64] = "fadvise64_64", | [SYSCALL_TO_INDEX(__NR_fadvise64_64)] = "fadvise64_64", | |||
[__NR_sched_setparam] = "sched_setparam", | [SYSCALL_TO_INDEX(__NR_sched_setparam)] = "sched_setparam", | |||
[__NR_swapon] = "swapon", | [SYSCALL_TO_INDEX(__NR_swapon)] = "swapon", | |||
[__NR_io_getevents] = "io_getevents", | [SYSCALL_TO_INDEX(__NR_io_getevents)] = "io_getevents", | |||
[__NR_olduname] = "olduname", | [SYSCALL_TO_INDEX(__NR_olduname)] = "olduname", | |||
[__NR_link] = "link", | [SYSCALL_TO_INDEX(__NR_link)] = "link", | |||
[__NR_timer_gettime] = "timer_gettime", | [SYSCALL_TO_INDEX(__NR_timer_gettime)] = "timer_gettime", | |||
[__NR_sendmmsg] = "sendmmsg", | [SYSCALL_TO_INDEX(__NR_sendmmsg)] = "sendmmsg", | |||
[__NR_ulimit] = "ulimit", | [SYSCALL_TO_INDEX(__NR_ulimit)] = "ulimit", | |||
[__NR_truncate64] = "truncate64", | [SYSCALL_TO_INDEX(__NR_truncate64)] = "truncate64", | |||
[__NR_timerfd_create] = "timerfd_create", | [SYSCALL_TO_INDEX(__NR_timerfd_create)] = "timerfd_create", | |||
[__NR_gettid] = "gettid", | [SYSCALL_TO_INDEX(__NR_gettid)] = "gettid", | |||
[__NR_madvise1] = "madvise1", | [SYSCALL_TO_INDEX(__NR_madvise1)] = "madvise1", | |||
[__NR_set_tid_address] = "set_tid_address", | [SYSCALL_TO_INDEX(__NR_set_tid_address)] = "set_tid_address", | |||
[__NR_setregid] = "setregid", | [SYSCALL_TO_INDEX(__NR_setregid)] = "setregid", | |||
[__NR_inotify_rm_watch] = "inotify_rm_watch", | [SYSCALL_TO_INDEX(__NR_inotify_rm_watch)] = "inotify_rm_watch", | |||
[__NR_mq_unlink] = "mq_unlink", | [SYSCALL_TO_INDEX(__NR_mq_unlink)] = "mq_unlink", | |||
[__NR_oldfstat] = "oldfstat", | [SYSCALL_TO_INDEX(__NR_oldfstat)] = "oldfstat", | |||
[__NR_ioprio_set] = "ioprio_set", | [SYSCALL_TO_INDEX(__NR_ioprio_set)] = "ioprio_set", | |||
[__NR_lchown] = "lchown", | [SYSCALL_TO_INDEX(__NR_lchown)] = "lchown", | |||
[__NR_request_key] = "request_key", | [SYSCALL_TO_INDEX(__NR_request_key)] = "request_key", | |||
[__NR_fremovexattr] = "fremovexattr", | [SYSCALL_TO_INDEX(__NR_fremovexattr)] = "fremovexattr", | |||
[__NR_get_kernel_syms] = "get_kernel_syms", | [SYSCALL_TO_INDEX(__NR_get_kernel_syms)] = "get_kernel_syms", | |||
[__NR_mkdir] = "mkdir", | [SYSCALL_TO_INDEX(__NR_mkdir)] = "mkdir", | |||
[__NR_sysinfo] = "sysinfo", | [SYSCALL_TO_INDEX(__NR_sysinfo)] = "sysinfo", | |||
[__NR_utime] = "utime", | [SYSCALL_TO_INDEX(__NR_utime)] = "utime", | |||
[__NR_poll] = "poll", | [SYSCALL_TO_INDEX(__NR_poll)] = "poll", | |||
[__NR_inotify_add_watch] = "inotify_add_watch", | [SYSCALL_TO_INDEX(__NR_inotify_add_watch)] = "inotify_add_watch", | |||
[__NR_mq_timedsend] = "mq_timedsend", | [SYSCALL_TO_INDEX(__NR_mq_timedsend)] = "mq_timedsend", | |||
[__NR_prlimit64] = "prlimit64", | [SYSCALL_TO_INDEX(__NR_prlimit64)] = "prlimit64", | |||
[__NR_stat64] = "stat64", | [SYSCALL_TO_INDEX(__NR_stat64)] = "stat64", | |||
[__NR_timerfd_gettime] = "timerfd_gettime", | [SYSCALL_TO_INDEX(__NR_timerfd_gettime)] = "timerfd_gettime", | |||
[__NR_removexattr] = "removexattr", | [SYSCALL_TO_INDEX(__NR_removexattr)] = "removexattr", | |||
[__NR_inotify_init1] = "inotify_init1", | [SYSCALL_TO_INDEX(__NR_inotify_init1)] = "inotify_init1", | |||
[__NR_nfsservctl] = "nfsservctl", | [SYSCALL_TO_INDEX(__NR_nfsservctl)] = "nfsservctl", | |||
[__NR_perf_event_open] = "perf_event_open", | [SYSCALL_TO_INDEX(__NR_perf_event_open)] = "perf_event_open", | |||
[__NR_io_destroy] = "io_destroy", | [SYSCALL_TO_INDEX(__NR_io_destroy)] = "io_destroy", | |||
[__NR_prctl] = "prctl", | [SYSCALL_TO_INDEX(__NR_prctl)] = "prctl", | |||
[__NR_rt_sigpending] = "rt_sigpending", | [SYSCALL_TO_INDEX(__NR_rt_sigpending)] = "rt_sigpending", | |||
[__NR_fchown32] = "fchown32", | [SYSCALL_TO_INDEX(__NR_fchown32)] = "fchown32", | |||
[__NR_fcntl64] = "fcntl64", | [SYSCALL_TO_INDEX(__NR_fcntl64)] = "fcntl64", | |||
[__NR_mq_notify] = "mq_notify", | [SYSCALL_TO_INDEX(__NR_mq_notify)] = "mq_notify", | |||
[__NR_pwritev] = "pwritev", | [SYSCALL_TO_INDEX(__NR_pwritev)] = "pwritev", | |||
[__NR_get_mempolicy] = "get_mempolicy", | [SYSCALL_TO_INDEX(__NR_get_mempolicy)] = "get_mempolicy", | |||
[__NR_quotactl] = "quotactl", | [SYSCALL_TO_INDEX(__NR_quotactl)] = "quotactl", | |||
[__NR_epoll_ctl] = "epoll_ctl", | [SYSCALL_TO_INDEX(__NR_epoll_ctl)] = "epoll_ctl", | |||
[__NR_setresuid] = "setresuid", | [SYSCALL_TO_INDEX(__NR_setresuid)] = "setresuid", | |||
[__NR_mincore] = "mincore", | [SYSCALL_TO_INDEX(__NR_mincore)] = "mincore", | |||
[__NR_rt_sigreturn] = "rt_sigreturn", | [SYSCALL_TO_INDEX(__NR_rt_sigreturn)] = "rt_sigreturn", | |||
[__NR_restart_syscall] = "restart_syscall", | [SYSCALL_TO_INDEX(__NR_restart_syscall)] = "restart_syscall", | |||
[__NR_setreuid32] = "setreuid32", | [SYSCALL_TO_INDEX(__NR_setreuid32)] = "setreuid32", | |||
[__NR_vhangup] = "vhangup", | [SYSCALL_TO_INDEX(__NR_vhangup)] = "vhangup", | |||
[__NR_oldstat] = "oldstat", | [SYSCALL_TO_INDEX(__NR_oldstat)] = "oldstat", | |||
[__NR_query_module] = "query_module", | [SYSCALL_TO_INDEX(__NR_query_module)] = "query_module", | |||
[__NR_pread64] = "pread64", | [SYSCALL_TO_INDEX(__NR_pread64)] = "pread64", | |||
[__NR_renameat] = "renameat", | [SYSCALL_TO_INDEX(__NR_renameat)] = "renameat", | |||
[__NR_clock_getres] = "clock_getres", | [SYSCALL_TO_INDEX(__NR_clock_getres)] = "clock_getres", | |||
[__NR_exit_group] = "exit_group", | [SYSCALL_TO_INDEX(__NR_exit_group)] = "exit_group", | |||
[__NR_lsetxattr] = "lsetxattr", | [SYSCALL_TO_INDEX(__NR_lsetxattr)] = "lsetxattr", | |||
[__NR_inotify_init] = "inotify_init", | [SYSCALL_TO_INDEX(__NR_inotify_init)] = "inotify_init", | |||
[__NR_setregid32] = "setregid32", | [SYSCALL_TO_INDEX(__NR_setregid32)] = "setregid32", | |||
[__NR_mount] = "mount", | [SYSCALL_TO_INDEX(__NR_mount)] = "mount", | |||
[__NR_wait4] = "wait4", | [SYSCALL_TO_INDEX(__NR_wait4)] = "wait4", | |||
[__NR_ftime] = "ftime", | [SYSCALL_TO_INDEX(__NR_ftime)] = "ftime", | |||
[__NR_clone] = "clone", | [SYSCALL_TO_INDEX(__NR_clone)] = "clone", | |||
[__NR_select] = "select", | [SYSCALL_TO_INDEX(__NR_select)] = "select", | |||
[__NR_syslog] = "syslog", | [SYSCALL_TO_INDEX(__NR_syslog)] = "syslog", | |||
[__NR_setuid32] = "setuid32", | [SYSCALL_TO_INDEX(__NR_setuid32)] = "setuid32", | |||
[__NR_getresuid] = "getresuid", | [SYSCALL_TO_INDEX(__NR_getresuid)] = "getresuid", | |||
[__NR_fsync] = "fsync", | [SYSCALL_TO_INDEX(__NR_fsync)] = "fsync", | |||
[__NR_sched_getparam] = "sched_getparam", | [SYSCALL_TO_INDEX(__NR_sched_getparam)] = "sched_getparam", | |||
[__NR_close] = "close", | [SYSCALL_TO_INDEX(__NR_close)] = "close", | |||
[__NR_capset] = "capset", | [SYSCALL_TO_INDEX(__NR_capset)] = "capset", | |||
[__NR_chmod] = "chmod", | [SYSCALL_TO_INDEX(__NR_chmod)] = "chmod", | |||
[__NR_getdents] = "getdents", | [SYSCALL_TO_INDEX(__NR_getdents)] = "getdents", | |||
[__NR_ftruncate] = "ftruncate", | [SYSCALL_TO_INDEX(__NR_ftruncate)] = "ftruncate", | |||
[__NR_setgid32] = "setgid32", | [SYSCALL_TO_INDEX(__NR_setgid32)] = "setgid32", | |||
[__NR_stime] = "stime", | [SYSCALL_TO_INDEX(__NR_stime)] = "stime", | |||
[__NR_madvise] = "madvise", | [SYSCALL_TO_INDEX(__NR_madvise)] = "madvise", | |||
[__NR_sigprocmask] = "sigprocmask", | [SYSCALL_TO_INDEX(__NR_sigprocmask)] = "sigprocmask", | |||
[__NR_mbind] = "mbind", | [SYSCALL_TO_INDEX(__NR_mbind)] = "mbind", | |||
[__NR_unlinkat] = "unlinkat", | [SYSCALL_TO_INDEX(__NR_unlinkat)] = "unlinkat", | |||
[__NR_fstatat64] = "fstatat64", | [SYSCALL_TO_INDEX(__NR_fstatat64)] = "fstatat64", | |||
[__NR_pivot_root] = "pivot_root", | [SYSCALL_TO_INDEX(__NR_pivot_root)] = "pivot_root", | |||
[__NR_write] = "write", | [SYSCALL_TO_INDEX(__NR_write)] = "write", | |||
[__NR_getppid] = "getppid", | [SYSCALL_TO_INDEX(__NR_getppid)] = "getppid", | |||
[__NR_symlink] = "symlink", | [SYSCALL_TO_INDEX(__NR_symlink)] = "symlink", | |||
[__NR_lseek] = "lseek", | [SYSCALL_TO_INDEX(__NR_lseek)] = "lseek", | |||
[__NR_clock_adjtime] = "clock_adjtime", | [SYSCALL_TO_INDEX(__NR_clock_adjtime)] = "clock_adjtime", | |||
[__NR_unshare] = "unshare", | [SYSCALL_TO_INDEX(__NR_unshare)] = "unshare", | |||
[__NR_io_setup] = "io_setup", | [SYSCALL_TO_INDEX(__NR_io_setup)] = "io_setup", | |||
[__NR_gtty] = "gtty", | [SYSCALL_TO_INDEX(__NR_gtty)] = "gtty", | |||
[__NR_getresuid32] = "getresuid32", | [SYSCALL_TO_INDEX(__NR_getresuid32)] = "getresuid32", | |||
[__NR_times] = "times", | [SYSCALL_TO_INDEX(__NR_times)] = "times", | |||
[__NR_set_thread_area] = "set_thread_area", | [SYSCALL_TO_INDEX(__NR_set_thread_area)] = "set_thread_area", | |||
[__NR_statfs] = "statfs", | [SYSCALL_TO_INDEX(__NR_statfs)] = "statfs", | |||
[__NR_truncate] = "truncate", | [SYSCALL_TO_INDEX(__NR_truncate)] = "truncate", | |||
[__NR_getuid] = "getuid", | [SYSCALL_TO_INDEX(__NR_getuid)] = "getuid", | |||
[__NR_setresgid] = "setresgid", | [SYSCALL_TO_INDEX(__NR_setresgid)] = "setresgid", | |||
[__NR_getresgid32] = "getresgid32", | [SYSCALL_TO_INDEX(__NR_getresgid32)] = "getresgid32", | |||
[__NR_umount] = "umount", | [SYSCALL_TO_INDEX(__NR_umount)] = "umount", | |||
[__NR_signalfd4] = "signalfd4", | [SYSCALL_TO_INDEX(__NR_signalfd4)] = "signalfd4", | |||
[__NR_rt_sigtimedwait] = "rt_sigtimedwait", | [SYSCALL_TO_INDEX(__NR_rt_sigtimedwait)] = "rt_sigtimedwait", | |||
[__NR_get_robust_list] = "get_robust_list", | [SYSCALL_TO_INDEX(__NR_get_robust_list)] = "get_robust_list", | |||
[__NR_reboot] = "reboot", | [SYSCALL_TO_INDEX(__NR_reboot)] = "reboot", | |||
[__NR_dup] = "dup", | [SYSCALL_TO_INDEX(__NR_dup)] = "dup", | |||
[__NR_signalfd] = "signalfd", | [SYSCALL_TO_INDEX(__NR_signalfd)] = "signalfd", | |||
[__NR_geteuid32] = "geteuid32", | [SYSCALL_TO_INDEX(__NR_geteuid32)] = "geteuid32", | |||
[__NR_profil] = "profil", | [SYSCALL_TO_INDEX(__NR_profil)] = "profil", | |||
[__NR_mprotect] = "mprotect", | [SYSCALL_TO_INDEX(__NR_mprotect)] = "mprotect", | |||
[__NR_getpriority] = "getpriority", | [SYSCALL_TO_INDEX(__NR_getpriority)] = "getpriority", | |||
[__NR_rt_sigaction] = "rt_sigaction", | [SYSCALL_TO_INDEX(__NR_rt_sigaction)] = "rt_sigaction", | |||
[__NR_timer_delete] = "timer_delete", | [SYSCALL_TO_INDEX(__NR_timer_delete)] = "timer_delete", | |||
[__NR_munmap] = "munmap", | [SYSCALL_TO_INDEX(__NR_munmap)] = "munmap", | |||
[__NR_getegid32] = "getegid32", | [SYSCALL_TO_INDEX(__NR_getegid32)] = "getegid32", | |||
[__NR_lstat] = "lstat", | [SYSCALL_TO_INDEX(__NR_lstat)] = "lstat", | |||
[__NR_mremap] = "mremap", | [SYSCALL_TO_INDEX(__NR_mremap)] = "mremap", | |||
[__NR_epoll_create1] = "epoll_create1", | [SYSCALL_TO_INDEX(__NR_epoll_create1)] = "epoll_create1", | |||
[__NR_readlinkat] = "readlinkat", | [SYSCALL_TO_INDEX(__NR_readlinkat)] = "readlinkat", | |||
[__NR_fchmodat] = "fchmodat", | [SYSCALL_TO_INDEX(__NR_fchmodat)] = "fchmodat", | |||
[__NR_chroot] = "chroot", | [SYSCALL_TO_INDEX(__NR_chroot)] = "chroot", | |||
[__NR_lgetxattr] = "lgetxattr", | [SYSCALL_TO_INDEX(__NR_lgetxattr)] = "lgetxattr", | |||
[__NR_preadv] = "preadv", | [SYSCALL_TO_INDEX(__NR_preadv)] = "preadv", | |||
[__NR_getresgid] = "getresgid", | [SYSCALL_TO_INDEX(__NR_getresgid)] = "getresgid", | |||
[__NR_pselect6] = "pselect6", | [SYSCALL_TO_INDEX(__NR_pselect6)] = "pselect6", | |||
[__NR_eventfd] = "eventfd", | [SYSCALL_TO_INDEX(__NR_eventfd)] = "eventfd", | |||
[__NR_setitimer] = "setitimer", | [SYSCALL_TO_INDEX(__NR_setitimer)] = "setitimer", | |||
[__NR_vserver] = "vserver", | [SYSCALL_TO_INDEX(__NR_vserver)] = "vserver", | |||
[__NR_sched_get_priority_max] = "sched_get_priority_max", | [SYSCALL_TO_INDEX(__NR_sched_get_priority_max)] = "sched_get_priority_max", | |||
[__NR_getuid32] = "getuid32", | [SYSCALL_TO_INDEX(__NR_getuid32)] = "getuid32", | |||
[__NR_getcpu] = "getcpu", | [SYSCALL_TO_INDEX(__NR_getcpu)] = "getcpu", | |||
[__NR_sendfile] = "sendfile", | [SYSCALL_TO_INDEX(__NR_sendfile)] = "sendfile", | |||
[__NR_pipe2] = "pipe2", | [SYSCALL_TO_INDEX(__NR_pipe2)] = "pipe2", | |||
[__NR_acct] = "acct", | [SYSCALL_TO_INDEX(__NR_acct)] = "acct", | |||
[__NR_afs_syscall] = "afs_syscall", | [SYSCALL_TO_INDEX(__NR_afs_syscall)] = "afs_syscall", | |||
[__NR_fchdir] = "fchdir", | [SYSCALL_TO_INDEX(__NR_fchdir)] = "fchdir", | |||
[__NR_mlock] = "mlock", | [SYSCALL_TO_INDEX(__NR_mlock)] = "mlock", | |||
[__NR_mmap] = "mmap", | [SYSCALL_TO_INDEX(__NR_mmap)] = "mmap", | |||
[__NR_getgid32] = "getgid32", | [SYSCALL_TO_INDEX(__NR_getgid32)] = "getgid32", | |||
[__NR_utimes] = "utimes", | [SYSCALL_TO_INDEX(__NR_utimes)] = "utimes", | |||
[__NR_getcwd] = "getcwd", | [SYSCALL_TO_INDEX(__NR_getcwd)] = "getcwd", | |||
[__NR_sched_get_priority_min] = "sched_get_priority_min", | [SYSCALL_TO_INDEX(__NR_sched_get_priority_min)] = "sched_get_priority_min", | |||
[__NR_putpmsg] = "putpmsg", | [SYSCALL_TO_INDEX(__NR_putpmsg)] = "putpmsg", | |||
[__NR_rt_sigprocmask] = "rt_sigprocmask", | [SYSCALL_TO_INDEX(__NR_rt_sigprocmask)] = "rt_sigprocmask", | |||
[__NR_sigreturn] = "sigreturn", | [SYSCALL_TO_INDEX(__NR_sigreturn)] = "sigreturn", | |||
[__NR_clock_settime] = "clock_settime", | [SYSCALL_TO_INDEX(__NR_clock_settime)] = "clock_settime", | |||
[__NR_sched_yield] = "sched_yield", | [SYSCALL_TO_INDEX(__NR_sched_yield)] = "sched_yield", | |||
[__NR_access] = "access", | [SYSCALL_TO_INDEX(__NR_access)] = "access", | |||
[__NR_munlock] = "munlock", | [SYSCALL_TO_INDEX(__NR_munlock)] = "munlock", | |||
[__NR_dup2] = "dup2", | [SYSCALL_TO_INDEX(__NR_dup2)] = "dup2", | |||
[__NR_dup3] = "dup3", | [SYSCALL_TO_INDEX(__NR_dup3)] = "dup3", | |||
[__NR_pipe] = "pipe", | [SYSCALL_TO_INDEX(__NR_pipe)] = "pipe", | |||
[__NR_readdir] = "readdir", | [SYSCALL_TO_INDEX(__NR_readdir)] = "readdir", | |||
[__NR_munlockall] = "munlockall", | [SYSCALL_TO_INDEX(__NR_munlockall)] = "munlockall", | |||
[__NR_getitimer] = "getitimer", | [SYSCALL_TO_INDEX(__NR_getitimer)] = "getitimer", | |||
[__NR_vm86] = "vm86", | [SYSCALL_TO_INDEX(__NR_vm86)] = "vm86", | |||
[__NR_setuid] = "setuid", | [SYSCALL_TO_INDEX(__NR_setuid)] = "setuid", | |||
[__NR_getgid] = "getgid", | [SYSCALL_TO_INDEX(__NR_getgid)] = "getgid", | |||
[__NR_pwrite64] = "pwrite64", | [SYSCALL_TO_INDEX(__NR_pwrite64)] = "pwrite64", | |||
[__NR_getpmsg] = "getpmsg", | [SYSCALL_TO_INDEX(__NR_getpmsg)] = "getpmsg", | |||
[__NR_llistxattr] = "llistxattr", | [SYSCALL_TO_INDEX(__NR_llistxattr)] = "llistxattr", | |||
[__NR_readlink] = "readlink", | [SYSCALL_TO_INDEX(__NR_readlink)] = "readlink", | |||
[__NR_fchown] = "fchown", | [SYSCALL_TO_INDEX(__NR_fchown)] = "fchown", | |||
[__NR_stat] = "stat", | [SYSCALL_TO_INDEX(__NR_stat)] = "stat", | |||
[__NR_execve] = "execve", | [SYSCALL_TO_INDEX(__NR_execve)] = "execve", | |||
[__NR_vmsplice] = "vmsplice", | [SYSCALL_TO_INDEX(__NR_vmsplice)] = "vmsplice", | |||
[__NR_sync_file_range] = "sync_file_range", | [SYSCALL_TO_INDEX(__NR_sync_file_range)] = "sync_file_range", | |||
[__NR_splice] = "splice", | [SYSCALL_TO_INDEX(__NR_splice)] = "splice", | |||
[__NR_umask] = "umask", | [SYSCALL_TO_INDEX(__NR_umask)] = "umask", | |||
[__NR_open_by_handle_at] = "open_by_handle_at", | [SYSCALL_TO_INDEX(__NR_open_by_handle_at)] = "open_by_handle_at", | |||
[__NR_futimesat] = "futimesat", | [SYSCALL_TO_INDEX(__NR_futimesat)] = "futimesat", | |||
[__NR_fcntl] = "fcntl", | [SYSCALL_TO_INDEX(__NR_fcntl)] = "fcntl", | |||
[__NR_rmdir] = "rmdir", | [SYSCALL_TO_INDEX(__NR_rmdir)] = "rmdir", | |||
[__NR_getdents64] = "getdents64", | [SYSCALL_TO_INDEX(__NR_getdents64)] = "getdents64", | |||
[__NR_mq_open] = "mq_open", | [SYSCALL_TO_INDEX(__NR_mq_open)] = "mq_open", | |||
[__NR_alarm] = "alarm", | [SYSCALL_TO_INDEX(__NR_alarm)] = "alarm", | |||
[__NR_futex] = "futex", | [SYSCALL_TO_INDEX(__NR_futex)] = "futex", | |||
[__NR_lchown32] = "lchown32", | [SYSCALL_TO_INDEX(__NR_lchown32)] = "lchown32", | |||
[__NR_prof] = "prof", | [SYSCALL_TO_INDEX(__NR_prof)] = "prof", | |||
[__NR_umount2] = "umount2", | [SYSCALL_TO_INDEX(__NR_umount2)] = "umount2", | |||
[__NR_mknodat] = "mknodat", | [SYSCALL_TO_INDEX(__NR_mknodat)] = "mknodat", | |||
[__NR_fork] = "fork", | [SYSCALL_TO_INDEX(__NR_fork)] = "fork", | |||
[__NR_setgroups32] = "setgroups32", | [SYSCALL_TO_INDEX(__NR_setgroups32)] = "setgroups32", | |||
[__NR_creat] = "creat", | [SYSCALL_TO_INDEX(__NR_creat)] = "creat", | |||
[__NR_getrusage] = "getrusage", | [SYSCALL_TO_INDEX(__NR_getrusage)] = "getrusage", | |||
[__NR_sched_rr_get_interval] = "sched_rr_get_interval", | [SYSCALL_TO_INDEX(__NR_sched_rr_get_interval)] = "sched_rr_get_interval", | |||
[__NR_ssetmask] = "ssetmask", | [SYSCALL_TO_INDEX(__NR_ssetmask)] = "ssetmask", | |||
[__NR_stty] = "stty", | [SYSCALL_TO_INDEX(__NR_stty)] = "stty", | |||
[__NR_set_mempolicy] = "set_mempolicy", | [SYSCALL_TO_INDEX(__NR_set_mempolicy)] = "set_mempolicy", | |||
[__NR_ioctl] = "ioctl", | [SYSCALL_TO_INDEX(__NR_ioctl)] = "ioctl", | |||
[__NR_clock_gettime] = "clock_gettime", | [SYSCALL_TO_INDEX(__NR_clock_gettime)] = "clock_gettime", | |||
[__NR_modify_ldt] = "modify_ldt", | [SYSCALL_TO_INDEX(__NR_modify_ldt)] = "modify_ldt", | |||
[__NR_idle] = "idle", | [SYSCALL_TO_INDEX(__NR_idle)] = "idle", | |||
[__NR_signal] = "signal", | [SYSCALL_TO_INDEX(__NR_signal)] = "signal", | |||
[__NR_linkat] = "linkat", | [SYSCALL_TO_INDEX(__NR_linkat)] = "linkat", | |||
[__NR_lstat64] = "lstat64", | [SYSCALL_TO_INDEX(__NR_lstat64)] = "lstat64", | |||
[__NR_keyctl] = "keyctl", | [SYSCALL_TO_INDEX(__NR_keyctl)] = "keyctl", | |||
[__NR_sched_setaffinity] = "sched_setaffinity", | [SYSCALL_TO_INDEX(__NR_sched_setaffinity)] = "sched_setaffinity", | |||
[__NR_exit] = "exit", | [SYSCALL_TO_INDEX(__NR_exit)] = "exit", | |||
[__NR_sched_setscheduler] = "sched_setscheduler", | [SYSCALL_TO_INDEX(__NR_sched_setscheduler)] = "sched_setscheduler", | |||
[__NR_io_submit] = "io_submit", | [SYSCALL_TO_INDEX(__NR_io_submit)] = "io_submit", | |||
[__NR_break] = "break", | [SYSCALL_TO_INDEX(__NR_break)] = "break", | |||
[__NR_socketcall] = "socketcall", | [SYSCALL_TO_INDEX(__NR_socketcall)] = "socketcall", | |||
[__NR_lock] = "lock", | [SYSCALL_TO_INDEX(__NR_lock)] = "lock", | |||
[__NR_oldlstat] = "oldlstat", | [SYSCALL_TO_INDEX(__NR_oldlstat)] = "oldlstat", | |||
[__NR_symlinkat] = "symlinkat", | [SYSCALL_TO_INDEX(__NR_symlinkat)] = "symlinkat", | |||
[__NR_setfsuid32] = "setfsuid32", | [SYSCALL_TO_INDEX(__NR_setfsuid32)] = "setfsuid32", | |||
[__NR_setgid] = "setgid", | [SYSCALL_TO_INDEX(__NR_setgid)] = "setgid", | |||
[__NR_sigaction] = "sigaction", | [SYSCALL_TO_INDEX(__NR_sigaction)] = "sigaction", | |||
[__NR_tee] = "tee", | [SYSCALL_TO_INDEX(__NR_tee)] = "tee", | |||
[__NR__llseek] = "_llseek", | [SYSCALL_TO_INDEX(__NR__llseek)] = "_llseek", | |||
[__NR_utimensat] = "utimensat", | [SYSCALL_TO_INDEX(__NR_utimensat)] = "utimensat", | |||
[__NR_move_pages] = "move_pages", | [SYSCALL_TO_INDEX(__NR_move_pages)] = "move_pages", | |||
[__NR_fstat64] = "fstat64", | [SYSCALL_TO_INDEX(__NR_fstat64)] = "fstat64", | |||
[__NR_setfsgid32] = "setfsgid32", | [SYSCALL_TO_INDEX(__NR_setfsgid32)] = "setfsgid32", | |||
[__NR_kill] = "kill", | [SYSCALL_TO_INDEX(__NR_kill)] = "kill", | |||
[__NR_ppoll] = "ppoll", | [SYSCALL_TO_INDEX(__NR_ppoll)] = "ppoll", | |||
[__NR_mq_timedreceive] = "mq_timedreceive", | [SYSCALL_TO_INDEX(__NR_mq_timedreceive)] = "mq_timedreceive", | |||
[__NR_setpgid] = "setpgid", | [SYSCALL_TO_INDEX(__NR_setpgid)] = "setpgid", | |||
[__NR_ipc] = "ipc", | [SYSCALL_TO_INDEX(__NR_ipc)] = "ipc", | |||
[__NR_get_thread_area] = "get_thread_area", | [SYSCALL_TO_INDEX(__NR_get_thread_area)] = "get_thread_area", | |||
[__NR_sgetmask] = "sgetmask", | [SYSCALL_TO_INDEX(__NR_sgetmask)] = "sgetmask", | |||
[__NR_vfork] = "vfork", | [SYSCALL_TO_INDEX(__NR_vfork)] = "vfork", | |||
[__NR_chown32] = "chown32", | [SYSCALL_TO_INDEX(__NR_chown32)] = "chown32", | |||
[__NR_readahead] = "readahead", | [SYSCALL_TO_INDEX(__NR_readahead)] = "readahead", | |||
[__NR_writev] = "writev", | [SYSCALL_TO_INDEX(__NR_writev)] = "writev", | |||
[__NR_io_cancel] = "io_cancel", | [SYSCALL_TO_INDEX(__NR_io_cancel)] = "io_cancel", | |||
[__NR_nice] = "nice", | [SYSCALL_TO_INDEX(__NR_nice)] = "nice", | |||
[__NR_personality] = "personality", | [SYSCALL_TO_INDEX(__NR_personality)] = "personality", | |||
[__NR_flistxattr] = "flistxattr", | [SYSCALL_TO_INDEX(__NR_flistxattr)] = "flistxattr", | |||
[__NR_mlockall] = "mlockall", | [SYSCALL_TO_INDEX(__NR_mlockall)] = "mlockall", | |||
[__NR_ustat] = "ustat", | [SYSCALL_TO_INDEX(__NR_ustat)] = "ustat", | |||
[__NR_ugetrlimit] = "ugetrlimit", | [SYSCALL_TO_INDEX(__NR_ugetrlimit)] = "ugetrlimit", | |||
[__NR_geteuid] = "geteuid", | [SYSCALL_TO_INDEX(__NR_geteuid)] = "geteuid", | |||
[__NR_timer_create] = "timer_create", | [SYSCALL_TO_INDEX(__NR_timer_create)] = "timer_create", | |||
[__NR_msync] = "msync", | [SYSCALL_TO_INDEX(__NR_msync)] = "msync", | |||
[__NR_settimeofday] = "settimeofday", | [SYSCALL_TO_INDEX(__NR_settimeofday)] = "settimeofday", | |||
[__NR_fsetxattr] = "fsetxattr", | [SYSCALL_TO_INDEX(__NR_fsetxattr)] = "fsetxattr", | |||
[__NR_sigsuspend] = "sigsuspend", | [SYSCALL_TO_INDEX(__NR_sigsuspend)] = "sigsuspend", | |||
[__NR_lookup_dcookie] = "lookup_dcookie", | [SYSCALL_TO_INDEX(__NR_lookup_dcookie)] = "lookup_dcookie", | |||
[__NR_bdflush] = "bdflush", | [SYSCALL_TO_INDEX(__NR_bdflush)] = "bdflush", | |||
[__NR_readv] = "readv", | [SYSCALL_TO_INDEX(__NR_readv)] = "readv", | |||
[__NR_remap_file_pages] = "remap_file_pages", | [SYSCALL_TO_INDEX(__NR_remap_file_pages)] = "remap_file_pages", | |||
[__NR_sendfile64] = "sendfile64", | [SYSCALL_TO_INDEX(__NR_sendfile64)] = "sendfile64", | |||
[__NR_setgroups] = "setgroups", | [SYSCALL_TO_INDEX(__NR_setgroups)] = "setgroups", | |||
[__NR_sched_getscheduler] = "sched_getscheduler", | [SYSCALL_TO_INDEX(__NR_sched_getscheduler)] = "sched_getscheduler", | |||
[__NR_sysfs] = "sysfs", | [SYSCALL_TO_INDEX(__NR_sysfs)] = "sysfs", | |||
[__NR_chdir] = "chdir", | [SYSCALL_TO_INDEX(__NR_chdir)] = "chdir", | |||
[__NR_uname] = "uname", | [SYSCALL_TO_INDEX(__NR_uname)] = "uname", | |||
[__NR_setfsuid] = "setfsuid", | [SYSCALL_TO_INDEX(__NR_setfsuid)] = "setfsuid", | |||
[__NR_getsid] = "getsid", | [SYSCALL_TO_INDEX(__NR_getsid)] = "getsid", | |||
[__NR_fstatfs64] = "fstatfs64", | [SYSCALL_TO_INDEX(__NR_fstatfs64)] = "fstatfs64", | |||
[__NR_rename] = "rename", | [SYSCALL_TO_INDEX(__NR_rename)] = "rename", | |||
[__NR_brk] = "brk", | [SYSCALL_TO_INDEX(__NR_brk)] = "brk", | |||
[__NR_mpx] = "mpx", | [SYSCALL_TO_INDEX(__NR_mpx)] = "mpx", | |||
[__NR_clock_nanosleep] = "clock_nanosleep", | [SYSCALL_TO_INDEX(__NR_clock_nanosleep)] = "clock_nanosleep", | |||
[__NR_setxattr] = "setxattr", | [SYSCALL_TO_INDEX(__NR_setxattr)] = "setxattr", | |||
[__NR_adjtimex] = "adjtimex", | [SYSCALL_TO_INDEX(__NR_adjtimex)] = "adjtimex", | |||
[__NR_getpgid] = "getpgid", | [SYSCALL_TO_INDEX(__NR_getpgid)] = "getpgid", | |||
[__NR_fstat] = "fstat", | [SYSCALL_TO_INDEX(__NR_fstat)] = "fstat", | |||
[__NR_vm86old] = "vm86old", | [SYSCALL_TO_INDEX(__NR_vm86old)] = "vm86old", | |||
[__NR_getgroups] = "getgroups", | [SYSCALL_TO_INDEX(__NR_getgroups)] = "getgroups", | |||
[__NR_sigaltstack] = "sigaltstack", | [SYSCALL_TO_INDEX(__NR_sigaltstack)] = "sigaltstack", | |||
[__NR_chown] = "chown", | [SYSCALL_TO_INDEX(__NR_chown)] = "chown", | |||
[__NR_timer_getoverrun] = "timer_getoverrun", | [SYSCALL_TO_INDEX(__NR_timer_getoverrun)] = "timer_getoverrun", | |||
[__NR_fchownat] = "fchownat", | [SYSCALL_TO_INDEX(__NR_fchownat)] = "fchownat", | |||
[__NR_uselib] = "uselib", | [SYSCALL_TO_INDEX(__NR_uselib)] = "uselib", | |||
[__NR_iopl] = "iopl", | [SYSCALL_TO_INDEX(__NR_iopl)] = "iopl", | |||
[__NR_gettimeofday] = "gettimeofday", | [SYSCALL_TO_INDEX(__NR_gettimeofday)] = "gettimeofday", | |||
[__NR_fallocate] = "fallocate", | [SYSCALL_TO_INDEX(__NR_fallocate)] = "fallocate", | |||
[__NR_getpgrp] = "getpgrp", | [SYSCALL_TO_INDEX(__NR_getpgrp)] = "getpgrp", | |||
[__NR_recvmmsg] = "recvmmsg", | [SYSCALL_TO_INDEX(__NR_recvmmsg)] = "recvmmsg", | |||
[__NR_eventfd2] = "eventfd2", | [SYSCALL_TO_INDEX(__NR_eventfd2)] = "eventfd2", | |||
[__NR_mknod] = "mknod", | [SYSCALL_TO_INDEX(__NR_mknod)] = "mknod", | |||
[__NR_statfs64] = "statfs64", | [SYSCALL_TO_INDEX(__NR_statfs64)] = "statfs64", | |||
[__NR_faccessat] = "faccessat", | [SYSCALL_TO_INDEX(__NR_faccessat)] = "faccessat", | |||
[__NR_fstatfs] = "fstatfs", | [SYSCALL_TO_INDEX(__NR_fstatfs)] = "fstatfs", | |||
[__NR_kexec_load] = "kexec_load", | [SYSCALL_TO_INDEX(__NR_kexec_load)] = "kexec_load", | |||
[__NR_migrate_pages] = "migrate_pages", | [SYSCALL_TO_INDEX(__NR_migrate_pages)] = "migrate_pages", | |||
[__NR_listxattr] = "listxattr", | [SYSCALL_TO_INDEX(__NR_listxattr)] = "listxattr", | |||
[__NR_ptrace] = "ptrace", | [SYSCALL_TO_INDEX(__NR_ptrace)] = "ptrace", | |||
[__NR_fadvise64] = "fadvise64", | [SYSCALL_TO_INDEX(__NR_fadvise64)] = "fadvise64", | |||
[__NR_getegid] = "getegid", | [SYSCALL_TO_INDEX(__NR_getegid)] = "getegid", | |||
[__NR_setrlimit] = "setrlimit", | [SYSCALL_TO_INDEX(__NR_setrlimit)] = "setrlimit", | |||
[__NR_sigpending] = "sigpending", | [SYSCALL_TO_INDEX(__NR_sigpending)] = "sigpending", | |||
[__NR_time] = "time", | [SYSCALL_TO_INDEX(__NR_time)] = "time", | |||
[__NR_unlink] = "unlink", | [SYSCALL_TO_INDEX(__NR_unlink)] = "unlink", | |||
[__NR_setreuid] = "setreuid", | [SYSCALL_TO_INDEX(__NR_setreuid)] = "setreuid", | |||
[__NR__sysctl] = "_sysctl", | [SYSCALL_TO_INDEX(__NR__sysctl)] = "_sysctl", | |||
[__NR__newselect] = "_newselect", | [SYSCALL_TO_INDEX(__NR__newselect)] = "_newselect", | |||
[__NR_getgroups32] = "getgroups32", | [SYSCALL_TO_INDEX(__NR_getgroups32)] = "getgroups32", | |||
[__NR_setns] = "setns", | [SYSCALL_TO_INDEX(__NR_setns)] = "setns", | |||
[__NR_fgetxattr] = "fgetxattr", | [SYSCALL_TO_INDEX(__NR_fgetxattr)] = "fgetxattr", | |||
[__NR_fchmod] = "fchmod", | [SYSCALL_TO_INDEX(__NR_fchmod)] = "fchmod", | |||
[__NR_timer_settime] = "timer_settime", | [SYSCALL_TO_INDEX(__NR_timer_settime)] = "timer_settime", | |||
[__NR_oldolduname] = "oldolduname", | [SYSCALL_TO_INDEX(__NR_oldolduname)] = "oldolduname", | |||
[__NR_sync] = "sync", | [SYSCALL_TO_INDEX(__NR_sync)] = "sync", | |||
[__NR_fanotify_mark] = "fanotify_mark", | [SYSCALL_TO_INDEX(__NR_fanotify_mark)] = "fanotify_mark", | |||
[__NR_syncfs] = "syncfs", | [SYSCALL_TO_INDEX(__NR_syncfs)] = "syncfs", | |||
[__NR_setsid] = "setsid", | [SYSCALL_TO_INDEX(__NR_setsid)] = "setsid", | |||
[__NR_setfsgid] = "setfsgid", | [SYSCALL_TO_INDEX(__NR_setfsgid)] = "setfsgid", | |||
[__NR_epoll_create] = "epoll_create", | [SYSCALL_TO_INDEX(__NR_epoll_create)] = "epoll_create", | |||
[__NR_tgkill] = "tgkill", | [SYSCALL_TO_INDEX(__NR_tgkill)] = "tgkill", | |||
[__NR_flock] = "flock", | [SYSCALL_TO_INDEX(__NR_flock)] = "flock", | |||
[__NR_capget] = "capget", | [SYSCALL_TO_INDEX(__NR_capget)] = "capget", | |||
[__NR_getpid] = "getpid", | [SYSCALL_TO_INDEX(__NR_getpid)] = "getpid", | |||
[__NR_add_key] = "add_key", | [SYSCALL_TO_INDEX(__NR_add_key)] = "add_key", | |||
[__NR_getrlimit] = "getrlimit", | [SYSCALL_TO_INDEX(__NR_getrlimit)] = "getrlimit", | |||
[__NR_set_robust_list] = "set_robust_list", | [SYSCALL_TO_INDEX(__NR_set_robust_list)] = "set_robust_list", | |||
[__NR_setresuid32] = "setresuid32", | [SYSCALL_TO_INDEX(__NR_setresuid32)] = "setresuid32", | |||
[__NR_waitpid] = "waitpid", | [SYSCALL_TO_INDEX(__NR_waitpid)] = "waitpid", | |||
[__NR_tkill] = "tkill", | [SYSCALL_TO_INDEX(__NR_tkill)] = "tkill", | |||
[__NR_epoll_wait] = "epoll_wait", | [SYSCALL_TO_INDEX(__NR_epoll_wait)] = "epoll_wait", | |||
[__NR_sethostname] = "sethostname", | [SYSCALL_TO_INDEX(__NR_sethostname)] = "sethostname", | |||
}; | }; | |||
End of changes. 1 change blocks. | ||||
344 lines changed or deleted | 344 lines changed or added | |||
timer.h | timer.h | |||
---|---|---|---|---|
skipping to change at line 55 | skipping to change at line 55 | |||
TIMER_CALENDAR, | TIMER_CALENDAR, | |||
_TIMER_BASE_MAX, | _TIMER_BASE_MAX, | |||
_TIMER_BASE_INVALID = -1 | _TIMER_BASE_INVALID = -1 | |||
} TimerBase; | } TimerBase; | |||
typedef struct TimerValue { | typedef struct TimerValue { | |||
TimerBase base; | TimerBase base; | |||
bool disabled; | bool disabled; | |||
clockid_t clock_id; | clockid_t clock_id; | |||
usec_t value; | usec_t value; /* only for monotonic events */ | |||
CalendarSpec *calendar_spec; | CalendarSpec *calendar_spec; /* only for calendar events */ | |||
usec_t next_elapse; | usec_t next_elapse; | |||
LIST_FIELDS(struct TimerValue, value); | LIST_FIELDS(struct TimerValue, value); | |||
} TimerValue; | } TimerValue; | |||
typedef enum TimerResult { | typedef enum TimerResult { | |||
TIMER_SUCCESS, | TIMER_SUCCESS, | |||
TIMER_FAILURE_RESOURCES, | TIMER_FAILURE_RESOURCES, | |||
_TIMER_RESULT_MAX, | _TIMER_RESULT_MAX, | |||
_TIMER_RESULT_INVALID = -1 | _TIMER_RESULT_INVALID = -1 | |||
skipping to change at line 87 | skipping to change at line 87 | |||
UnitRef unit; | UnitRef unit; | |||
Watch monotonic_watch; | Watch monotonic_watch; | |||
Watch realtime_watch; | Watch realtime_watch; | |||
TimerResult result; | TimerResult result; | |||
}; | }; | |||
void timer_unit_notify(Unit *u, UnitActiveState new_state); | void timer_unit_notify(Unit *u, UnitActiveState new_state); | |||
void timer_free_values(Timer *t); | ||||
extern const UnitVTable timer_vtable; | extern const UnitVTable timer_vtable; | |||
const char *timer_state_to_string(TimerState i); | const char *timer_state_to_string(TimerState i); | |||
TimerState timer_state_from_string(const char *s); | TimerState timer_state_from_string(const char *s); | |||
const char *timer_base_to_string(TimerBase i); | const char *timer_base_to_string(TimerBase i); | |||
TimerBase timer_base_from_string(const char *s); | TimerBase timer_base_from_string(const char *s); | |||
const char* timer_result_to_string(TimerResult i); | const char* timer_result_to_string(TimerResult i); | |||
TimerResult timer_result_from_string(const char *s); | TimerResult timer_result_from_string(const char *s); | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 4 lines changed or added | |||
transaction.h | transaction.h | |||
---|---|---|---|---|
skipping to change at line 36 | skipping to change at line 36 | |||
#include "unit.h" | #include "unit.h" | |||
#include "manager.h" | #include "manager.h" | |||
#include "job.h" | #include "job.h" | |||
#include "hashmap.h" | #include "hashmap.h" | |||
struct Transaction { | struct Transaction { | |||
/* Jobs to be added */ | /* Jobs to be added */ | |||
Hashmap *jobs; /* Unit object => Job object list 1:1 */ | Hashmap *jobs; /* Unit object => Job object list 1:1 */ | |||
Job *anchor_job; /* the job the user asked for */ | Job *anchor_job; /* the job the user asked for */ | |||
bool irreversible; | ||||
}; | }; | |||
Transaction *transaction_new(void); | Transaction *transaction_new(bool irreversible); | |||
void transaction_free(Transaction *tr); | void transaction_free(Transaction *tr); | |||
int transaction_add_job_and_dependencies( | int transaction_add_job_and_dependencies( | |||
Transaction *tr, | Transaction *tr, | |||
JobType type, | JobType type, | |||
Unit *unit, | Unit *unit, | |||
Job *by, | Job *by, | |||
bool matters, | bool matters, | |||
bool override, | bool override, | |||
bool conflicts, | bool conflicts, | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 2 lines changed or added | |||
udev.h | udev.h | |||
---|---|---|---|---|
skipping to change at line 98 | skipping to change at line 98 | |||
int udev_build_argv(struct udev *udev, char *cmd, int *argc, char *argv[]); | int udev_build_argv(struct udev *udev, char *cmd, int *argc, char *argv[]); | |||
/* udev-watch.c */ | /* udev-watch.c */ | |||
int udev_watch_init(struct udev *udev); | int udev_watch_init(struct udev *udev); | |||
void udev_watch_restore(struct udev *udev); | void udev_watch_restore(struct udev *udev); | |||
void udev_watch_begin(struct udev *udev, struct udev_device *dev); | void udev_watch_begin(struct udev *udev, struct udev_device *dev); | |||
void udev_watch_end(struct udev *udev, struct udev_device *dev); | void udev_watch_end(struct udev *udev, struct udev_device *dev); | |||
struct udev_device *udev_watch_lookup(struct udev *udev, int wd); | struct udev_device *udev_watch_lookup(struct udev *udev, int wd); | |||
/* udev-node.c */ | /* udev-node.c */ | |||
void udev_node_add(struct udev_device *dev, mode_t mode, uid_t uid, gid_t g id); | void udev_node_add(struct udev_device *dev, bool apply, mode_t mode, uid_t uid, gid_t gid); | |||
void udev_node_remove(struct udev_device *dev); | void udev_node_remove(struct udev_device *dev); | |||
void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev_old); | void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev_old); | |||
/* udev-ctrl.c */ | /* udev-ctrl.c */ | |||
struct udev_ctrl; | struct udev_ctrl; | |||
struct udev_ctrl *udev_ctrl_new(struct udev *udev); | struct udev_ctrl *udev_ctrl_new(struct udev *udev); | |||
struct udev_ctrl *udev_ctrl_new_from_fd(struct udev *udev, int fd); | struct udev_ctrl *udev_ctrl_new_from_fd(struct udev *udev, int fd); | |||
int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl); | int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl); | |||
struct udev_ctrl *udev_ctrl_ref(struct udev_ctrl *uctrl); | struct udev_ctrl *udev_ctrl_ref(struct udev_ctrl *uctrl); | |||
struct udev_ctrl *udev_ctrl_unref(struct udev_ctrl *uctrl); | struct udev_ctrl *udev_ctrl_unref(struct udev_ctrl *uctrl); | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
unit-name.h | unit-name.h | |||
---|---|---|---|---|
skipping to change at line 97 | skipping to change at line 97 | |||
char *unit_name_template(const char *f); | char *unit_name_template(const char *f); | |||
char *unit_name_from_path(const char *path, const char *suffix); | char *unit_name_from_path(const char *path, const char *suffix); | |||
char *unit_name_from_path_instance(const char *prefix, const char *path, co nst char *suffix); | char *unit_name_from_path_instance(const char *prefix, const char *path, co nst char *suffix); | |||
char *unit_name_to_path(const char *name); | char *unit_name_to_path(const char *name); | |||
char *unit_dbus_path_from_name(const char *name); | char *unit_dbus_path_from_name(const char *name); | |||
char *unit_name_mangle(const char *name); | char *unit_name_mangle(const char *name); | |||
char *snapshot_name_mangle(const char *name); | ||||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 0 lines changed or added | |||
unit.h | unit.h | |||
---|---|---|---|---|
skipping to change at line 26 | skipping to change at line 26 | |||
WITHOUT ANY WARRANTY; without even the implied warranty of | WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
Lesser General Public License for more details. | Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | You should have received a copy of the GNU Lesser General Public License | |||
along with systemd; If not, see <http://www.gnu.org/licenses/>. | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |||
***/ | ***/ | |||
#include <stdbool.h> | #include <stdbool.h> | |||
#include <stdlib.h> | #include <stdlib.h> | |||
#include <unistd.h> | ||||
typedef struct Unit Unit; | typedef struct Unit Unit; | |||
typedef struct UnitVTable UnitVTable; | typedef struct UnitVTable UnitVTable; | |||
typedef enum UnitActiveState UnitActiveState; | typedef enum UnitActiveState UnitActiveState; | |||
typedef enum UnitDependency UnitDependency; | typedef enum UnitDependency UnitDependency; | |||
typedef struct UnitRef UnitRef; | typedef struct UnitRef UnitRef; | |||
typedef struct UnitStatusMessageFormats UnitStatusMessageFormats; | typedef struct UnitStatusMessageFormats UnitStatusMessageFormats; | |||
#include "set.h" | #include "set.h" | |||
#include "util.h" | #include "util.h" | |||
#include "list.h" | #include "list.h" | |||
#include "socket-util.h" | #include "socket-util.h" | |||
#include "execute.h" | #include "execute.h" | |||
#include "condition.h" | #include "condition.h" | |||
#include "install.h" | #include "install.h" | |||
#include "unit-name.h" | #include "unit-name.h" | |||
#include "cgroup-semantics.h" | ||||
enum UnitActiveState { | enum UnitActiveState { | |||
UNIT_ACTIVE, | UNIT_ACTIVE, | |||
UNIT_RELOADING, | UNIT_RELOADING, | |||
UNIT_INACTIVE, | UNIT_INACTIVE, | |||
UNIT_FAILED, | UNIT_FAILED, | |||
UNIT_ACTIVATING, | UNIT_ACTIVATING, | |||
UNIT_DEACTIVATING, | UNIT_DEACTIVATING, | |||
_UNIT_ACTIVE_STATE_MAX, | _UNIT_ACTIVE_STATE_MAX, | |||
_UNIT_ACTIVE_STATE_INVALID = -1 | _UNIT_ACTIVE_STATE_INVALID = -1 | |||
skipping to change at line 273 | skipping to change at line 275 | |||
#include "path.h" | #include "path.h" | |||
struct UnitVTable { | struct UnitVTable { | |||
/* How much memory does an object of this unit type need */ | /* How much memory does an object of this unit type need */ | |||
size_t object_size; | size_t object_size; | |||
/* If greater than 0, the offset into the object where | /* If greater than 0, the offset into the object where | |||
* ExecContext is found, if the unit type has that */ | * ExecContext is found, if the unit type has that */ | |||
size_t exec_context_offset; | size_t exec_context_offset; | |||
/* The name of the section with the exec settings of ExecContext */ | ||||
const char *exec_section; | ||||
/* Config file sections this unit type understands, separated | /* Config file sections this unit type understands, separated | |||
* by NUL chars */ | * by NUL chars */ | |||
const char *sections; | const char *sections; | |||
/* This should reset all type-specific variables. This should | /* This should reset all type-specific variables. This should | |||
* not allocate memory, and is called with zero-initialized | * not allocate memory, and is called with zero-initialized | |||
* data. It should hence only initialize variables that need | * data. It should hence only initialize variables that need | |||
* to be set != 0. */ | * to be set != 0. */ | |||
void (*init)(Unit *u); | void (*init)(Unit *u); | |||
skipping to change at line 441 | skipping to change at line 446 | |||
int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name , const char *filename, bool add_reference); | int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name , const char *filename, bool add_reference); | |||
int unit_add_two_dependencies_by_name(Unit *u, UnitDependency d, UnitDepend ency e, const char *name, const char *path, bool add_reference); | int unit_add_two_dependencies_by_name(Unit *u, UnitDependency d, UnitDepend ency e, const char *name, const char *path, bool add_reference); | |||
int unit_add_dependency_by_name_inverse(Unit *u, UnitDependency d, const ch ar *name, const char *filename, bool add_reference); | int unit_add_dependency_by_name_inverse(Unit *u, UnitDependency d, const ch ar *name, const char *filename, bool add_reference); | |||
int unit_add_two_dependencies_by_name_inverse(Unit *u, UnitDependency d, Un itDependency e, const char *name, const char *path, bool add_reference); | int unit_add_two_dependencies_by_name_inverse(Unit *u, UnitDependency d, Un itDependency e, const char *name, const char *path, bool add_reference); | |||
int unit_add_exec_dependencies(Unit *u, ExecContext *c); | int unit_add_exec_dependencies(Unit *u, ExecContext *c); | |||
int unit_add_cgroup(Unit *u, CGroupBonding *b); | int unit_add_cgroup(Unit *u, CGroupBonding *b); | |||
int unit_add_cgroup_from_text(Unit *u, const char *name); | int unit_add_cgroup_from_text(Unit *u, const char *name, bool overwrite, CG roupBonding **ret); | |||
int unit_add_default_cgroups(Unit *u); | int unit_add_default_cgroups(Unit *u); | |||
CGroupBonding* unit_get_default_cgroup(Unit *u); | CGroupBonding* unit_get_default_cgroup(Unit *u); | |||
int unit_add_cgroup_attribute(Unit *u, const char *controller, const char * name, const char *value, CGroupAttributeMapCallback map_callback); | int unit_add_cgroup_attribute(Unit *u, const CGroupSemantics *semantics, co nst char *controller, const char *name, const char *value, CGroupAttribute **ret); | |||
int unit_choose_id(Unit *u, const char *name); | int unit_choose_id(Unit *u, const char *name); | |||
int unit_set_description(Unit *u, const char *description); | int unit_set_description(Unit *u, const char *description); | |||
bool unit_check_gc(Unit *u); | bool unit_check_gc(Unit *u); | |||
void unit_add_to_load_queue(Unit *u); | void unit_add_to_load_queue(Unit *u); | |||
void unit_add_to_dbus_queue(Unit *u); | void unit_add_to_dbus_queue(Unit *u); | |||
void unit_add_to_cleanup_queue(Unit *u); | void unit_add_to_cleanup_queue(Unit *u); | |||
void unit_add_to_gc_queue(Unit *u); | void unit_add_to_gc_queue(Unit *u); | |||
skipping to change at line 518 | skipping to change at line 523 | |||
bool unit_can_serialize(Unit *u); | bool unit_can_serialize(Unit *u); | |||
int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs); | int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs); | |||
void unit_serialize_item_format(Unit *u, FILE *f, const char *key, const ch ar *value, ...) _printf_attr_(4,5); | void unit_serialize_item_format(Unit *u, FILE *f, const char *key, const ch ar *value, ...) _printf_attr_(4,5); | |||
void unit_serialize_item(Unit *u, FILE *f, const char *key, const char *val ue); | void unit_serialize_item(Unit *u, FILE *f, const char *key, const char *val ue); | |||
int unit_deserialize(Unit *u, FILE *f, FDSet *fds); | int unit_deserialize(Unit *u, FILE *f, FDSet *fds); | |||
int unit_add_node_link(Unit *u, const char *what, bool wants); | int unit_add_node_link(Unit *u, const char *what, bool wants); | |||
int unit_coldplug(Unit *u); | int unit_coldplug(Unit *u); | |||
void unit_status_printf(Unit *u, const char *status, const char *format, .. .); | void unit_status_printf(Unit *u, const char *status, const char *unit_statu s_msg_format); | |||
bool unit_need_daemon_reload(Unit *u); | bool unit_need_daemon_reload(Unit *u); | |||
void unit_reset_failed(Unit *u); | void unit_reset_failed(Unit *u); | |||
Unit *unit_following(Unit *u); | Unit *unit_following(Unit *u); | |||
bool unit_pending_inactive(Unit *u); | bool unit_pending_inactive(Unit *u); | |||
bool unit_pending_active(Unit *u); | bool unit_pending_active(Unit *u); | |||
skipping to change at line 553 | skipping to change at line 558 | |||
#define UNIT_DEREF(ref) ((ref).unit) | #define UNIT_DEREF(ref) ((ref).unit) | |||
int unit_add_one_mount_link(Unit *u, Mount *m); | int unit_add_one_mount_link(Unit *u, Mount *m); | |||
int unit_add_mount_links(Unit *u); | 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); | ExecContext *unit_get_exec_context(Unit *u); | |||
int unit_write_drop_in(Unit *u, bool runtime, const char *name, const char | ||||
*data); | ||||
int unit_remove_drop_in(Unit *u, bool runtime, const char *name); | ||||
int unit_kill_context(Unit *u, KillContext *c, bool sigkill, pid_t main_pid | ||||
, pid_t control_pid, bool main_pid_alien); | ||||
const char *unit_active_state_to_string(UnitActiveState i); | const char *unit_active_state_to_string(UnitActiveState i); | |||
UnitActiveState unit_active_state_from_string(const char *s); | UnitActiveState unit_active_state_from_string(const char *s); | |||
const char *unit_dependency_to_string(UnitDependency i); | const char *unit_dependency_to_string(UnitDependency i); | |||
UnitDependency unit_dependency_from_string(const char *s); | UnitDependency unit_dependency_from_string(const char *s); | |||
#define log_full_unit(level, unit, ...) log_meta_object(level, __FILE__, __LINE__, __func__, "UNIT=", unit, __VA_ARGS__) | #define log_full_unit(level, unit, ...) log_meta_object(level, __FILE__, __ LINE__, __func__, getpid() == 1 ? "UNIT=" : "USER_UNIT=", unit, __VA_ARGS__ ) | |||
#define log_debug_unit(unit, ...) log_full_unit(LOG_DEBUG, unit, __VA _ARGS__) | #define log_debug_unit(unit, ...) log_full_unit(LOG_DEBUG, unit, __VA _ARGS__) | |||
#define log_info_unit(unit, ...) log_full_unit(LOG_INFO, unit, __VA_ ARGS__) | #define log_info_unit(unit, ...) log_full_unit(LOG_INFO, unit, __VA_ ARGS__) | |||
#define log_notice_unit(unit, ...) log_full_unit(LOG_NOTICE, unit, __V A_ARGS__) | #define log_notice_unit(unit, ...) log_full_unit(LOG_NOTICE, unit, __V A_ARGS__) | |||
#define log_warning_unit(unit, ...) log_full_unit(LOG_WARNING, unit, __ VA_ARGS__) | #define log_warning_unit(unit, ...) log_full_unit(LOG_WARNING, unit, __ VA_ARGS__) | |||
#define log_error_unit(unit, ...) log_full_unit(LOG_ERR, unit, __VA_A RGS__) | #define log_error_unit(unit, ...) log_full_unit(LOG_ERR, unit, __VA_A RGS__) | |||
#define log_struct_unit(level, unit, ...) log_struct(level, getpid() == 1 ? | ||||
"UNIT=%s" : "USER_UNIT=%s", unit, __VA_ARGS__) | ||||
End of changes. 9 change blocks. | ||||
4 lines changed or deleted | 16 lines changed or added | |||
utf8.h | utf8.h | |||
---|---|---|---|---|
skipping to change at line 33 | skipping to change at line 33 | |||
#include "macro.h" | #include "macro.h" | |||
char *utf8_is_valid(const char *s) _pure_; | char *utf8_is_valid(const char *s) _pure_; | |||
char *ascii_is_valid(const char *s) _pure_; | char *ascii_is_valid(const char *s) _pure_; | |||
char *utf8_is_printable_n(const char* str, size_t length) _pure_; | char *utf8_is_printable_n(const char* str, size_t length) _pure_; | |||
char *utf8_filter(const char *s); | char *utf8_filter(const char *s); | |||
char *ascii_filter(const char *s); | char *ascii_filter(const char *s); | |||
char *utf16_to_utf8(const void *s, size_t length); | ||||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 0 lines changed or added | |||
util.h | util.h | |||
---|---|---|---|---|
skipping to change at line 58 | skipping to change at line 58 | |||
/* What is interpreted as whitespace? */ | /* What is interpreted as whitespace? */ | |||
#define WHITESPACE " \t\n\r" | #define WHITESPACE " \t\n\r" | |||
#define NEWLINE "\n\r" | #define NEWLINE "\n\r" | |||
#define QUOTES "\"\'" | #define QUOTES "\"\'" | |||
#define COMMENTS "#;\n" | #define COMMENTS "#;\n" | |||
#define FORMAT_BYTES_MAX 8 | #define FORMAT_BYTES_MAX 8 | |||
#define ANSI_HIGHLIGHT_ON "\x1B[1;39m" | #define ANSI_HIGHLIGHT_ON "\x1B[1;39m" | |||
#define ANSI_RED_ON "\x1B[31m" | ||||
#define ANSI_HIGHLIGHT_RED_ON "\x1B[1;31m" | #define ANSI_HIGHLIGHT_RED_ON "\x1B[1;31m" | |||
#define ANSI_GREEN_ON "\x1B[32m" | ||||
#define ANSI_HIGHLIGHT_GREEN_ON "\x1B[1;32m" | #define ANSI_HIGHLIGHT_GREEN_ON "\x1B[1;32m" | |||
#define ANSI_HIGHLIGHT_YELLOW_ON "\x1B[1;33m" | #define ANSI_HIGHLIGHT_YELLOW_ON "\x1B[1;33m" | |||
#define ANSI_HIGHLIGHT_OFF "\x1B[0m" | #define ANSI_HIGHLIGHT_OFF "\x1B[0m" | |||
#define ANSI_ERASE_TO_END_OF_LINE "\x1B[K" | ||||
bool is_efiboot(void); | ||||
size_t page_size(void); | size_t page_size(void); | |||
#define PAGE_ALIGN(l) ALIGN_TO((l), page_size()) | #define PAGE_ALIGN(l) ALIGN_TO((l), page_size()) | |||
#define streq(a,b) (strcmp((a),(b)) == 0) | #define streq(a,b) (strcmp((a),(b)) == 0) | |||
#define strneq(a, b, n) (strncmp((a), (b), (n)) == 0) | #define strneq(a, b, n) (strncmp((a), (b), (n)) == 0) | |||
#define strcaseeq(a,b) (strcasecmp((a),(b)) == 0) | ||||
#define strncaseeq(a, b, n) (strncasecmp((a), (b), (n)) == 0) | ||||
bool streq_ptr(const char *a, const char *b); | bool streq_ptr(const char *a, const char *b); | |||
#define new(t, n) ((t*) malloc_multiply(sizeof(t), (n))) | #define new(t, n) ((t*) malloc_multiply(sizeof(t), (n))) | |||
#define new0(t, n) ((t*) calloc((n), sizeof(t))) | #define new0(t, n) ((t*) calloc((n), sizeof(t))) | |||
#define newa(t, n) ((t*) alloca(sizeof(t)*(n))) | #define newa(t, n) ((t*) alloca(sizeof(t)*(n))) | |||
#define newdup(t, p, n) ((t*) memdup_multiply(p, sizeof(t), (n))) | #define newdup(t, p, n) ((t*) memdup_multiply(p, sizeof(t), (n))) | |||
skipping to change at line 125 | skipping to change at line 128 | |||
int parse_pid(const char *s, pid_t* ret_pid); | int parse_pid(const char *s, pid_t* ret_pid); | |||
int parse_uid(const char *s, uid_t* ret_uid); | int parse_uid(const char *s, uid_t* ret_uid); | |||
#define parse_gid(s, ret_uid) parse_uid(s, ret_uid) | #define parse_gid(s, ret_uid) parse_uid(s, ret_uid) | |||
int safe_atou(const char *s, unsigned *ret_u); | int safe_atou(const char *s, unsigned *ret_u); | |||
int safe_atoi(const char *s, int *ret_i); | int safe_atoi(const char *s, int *ret_i); | |||
int safe_atollu(const char *s, unsigned long long *ret_u); | int safe_atollu(const char *s, unsigned long long *ret_u); | |||
int safe_atolli(const char *s, long long int *ret_i); | int safe_atolli(const char *s, long long int *ret_i); | |||
int safe_atod(const char *s, double *ret_d); | ||||
#if __WORDSIZE == 32 | #if __WORDSIZE == 32 | |||
static inline int safe_atolu(const char *s, unsigned long *ret_u) { | static inline int safe_atolu(const char *s, unsigned long *ret_u) { | |||
assert_cc(sizeof(unsigned long) == sizeof(unsigned)); | assert_cc(sizeof(unsigned long) == sizeof(unsigned)); | |||
return safe_atou(s, (unsigned*) ret_u); | return safe_atou(s, (unsigned*) ret_u); | |||
} | } | |||
static inline int safe_atoli(const char *s, long int *ret_u) { | static inline int safe_atoli(const char *s, long int *ret_u) { | |||
assert_cc(sizeof(long int) == sizeof(int)); | assert_cc(sizeof(long int) == sizeof(int)); | |||
return safe_atoi(s, (int*) ret_u); | return safe_atoi(s, (int*) ret_u); | |||
} | } | |||
#else | #else | |||
skipping to change at line 180 | skipping to change at line 185 | |||
#define FOREACH_WORD_SEPARATOR(word, length, s, separator, state) \ | #define FOREACH_WORD_SEPARATOR(word, length, s, separator, state) \ | |||
for ((state) = NULL, (word) = split((s), &(length), (separator), &( state)); (word); (word) = split((s), &(length), (separator), &(state))) | for ((state) = NULL, (word) = split((s), &(length), (separator), &( state)); (word); (word) = split((s), &(length), (separator), &(state))) | |||
#define FOREACH_WORD_QUOTED(word, length, s, state) \ | #define FOREACH_WORD_QUOTED(word, length, s, state) \ | |||
for ((state) = NULL, (word) = split_quoted((s), &(length), &(state) ); (word); (word) = split_quoted((s), &(length), &(state))) | for ((state) = NULL, (word) = split_quoted((s), &(length), &(state) ); (word); (word) = split_quoted((s), &(length), &(state))) | |||
pid_t get_parent_of_pid(pid_t pid, pid_t *ppid); | pid_t get_parent_of_pid(pid_t pid, pid_t *ppid); | |||
int get_starttime_of_pid(pid_t pid, unsigned long long *st); | int get_starttime_of_pid(pid_t pid, unsigned long long *st); | |||
int write_one_line_file(const char *fn, const char *line); | ||||
int write_one_line_file_atomic(const char *fn, const char *line); | ||||
int read_one_line_file(const char *fn, char **line); | ||||
int read_full_file(const char *fn, char **contents, size_t *size); | ||||
int parse_env_file(const char *fname, const char *separator, ...) _sentinel | ||||
_; | ||||
int load_env_file(const char *fname, char ***l); | ||||
int write_env_file(const char *fname, char **l); | ||||
char *strappend(const char *s, const char *suffix); | char *strappend(const char *s, const char *suffix); | |||
char *strnappend(const char *s, const char *suffix, size_t length); | char *strnappend(const char *s, const char *suffix, size_t length); | |||
char *replace_env(const char *format, char **env); | char *replace_env(const char *format, char **env); | |||
char **replace_env_argv(char **argv, char **env); | char **replace_env_argv(char **argv, char **env); | |||
int readlink_malloc(const char *p, char **r); | int readlink_malloc(const char *p, char **r); | |||
int readlink_and_make_absolute(const char *p, char **r); | int readlink_and_make_absolute(const char *p, char **r); | |||
int readlink_and_canonicalize(const char *p, char **r); | int readlink_and_canonicalize(const char *p, char **r); | |||
skipping to change at line 364 | skipping to change at line 360 | |||
int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root_dev); | int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root_dev); | |||
int rm_rf_children_dangerous(int fd, bool only_dirs, bool honour_sticky, st ruct stat *root_dev); | int rm_rf_children_dangerous(int fd, bool only_dirs, bool honour_sticky, st ruct stat *root_dev); | |||
int rm_rf(const char *path, bool only_dirs, bool delete_root, bool honour_s ticky); | int rm_rf(const char *path, bool only_dirs, bool delete_root, bool honour_s ticky); | |||
int rm_rf_dangerous(const char *path, bool only_dirs, bool delete_root, boo l honour_sticky); | int rm_rf_dangerous(const char *path, bool only_dirs, bool delete_root, boo l honour_sticky); | |||
int pipe_eof(int fd); | int pipe_eof(int fd); | |||
cpu_set_t* cpu_set_malloc(unsigned *ncpus); | cpu_set_t* cpu_set_malloc(unsigned *ncpus); | |||
int status_vprintf(const char *status, bool ellipse, const char *format, va | int status_vprintf(const char *status, bool ellipse, bool ephemeral, const | |||
_list ap); | char *format, va_list ap); | |||
int status_printf(const char *status, bool ellipse, const char *format, ... | int status_printf(const char *status, bool ellipse, bool ephemeral, const c | |||
); | har *format, ...); | |||
int status_welcome(void); | int status_welcome(void); | |||
int fd_columns(int fd); | int fd_columns(int fd); | |||
unsigned columns(void); | unsigned columns(void); | |||
int fd_lines(int fd); | int fd_lines(int fd); | |||
unsigned lines(void); | unsigned lines(void); | |||
void columns_lines_cache_reset(int _unused_ signum); | void columns_lines_cache_reset(int _unused_ signum); | |||
bool on_tty(void); | bool on_tty(void); | |||
skipping to change at line 398 | skipping to change at line 394 | |||
_noreturn_ void freeze(void); | _noreturn_ void freeze(void); | |||
bool null_or_empty(struct stat *st); | bool null_or_empty(struct stat *st); | |||
int null_or_empty_path(const char *fn); | int null_or_empty_path(const char *fn); | |||
DIR *xopendirat(int dirfd, const char *name, int flags); | DIR *xopendirat(int dirfd, const char *name, int flags); | |||
char *fstab_node_to_udev_node(const char *p); | char *fstab_node_to_udev_node(const char *p); | |||
char *resolve_dev_console(char **active); | ||||
bool tty_is_vc(const char *tty); | bool tty_is_vc(const char *tty); | |||
bool tty_is_vc_resolve(const char *tty); | bool tty_is_vc_resolve(const char *tty); | |||
bool tty_is_console(const char *tty); | bool tty_is_console(const char *tty); | |||
int vtnr_from_tty(const char *tty); | int vtnr_from_tty(const char *tty); | |||
const char *default_term_for_tty(const char *tty); | const char *default_term_for_tty(const char *tty); | |||
void execute_directory(const char *directory, DIR *_d, char *argv[]); | void execute_directory(const char *directory, DIR *_d, char *argv[]); | |||
int kill_and_sigcont(pid_t pid, int sig); | int kill_and_sigcont(pid_t pid, int sig); | |||
skipping to change at line 436 | skipping to change at line 433 | |||
int fchmod_umask(int fd, mode_t mode); | int fchmod_umask(int fd, mode_t mode); | |||
bool display_is_local(const char *display); | bool display_is_local(const char *display); | |||
int socket_from_display(const char *display, char **path); | int socket_from_display(const char *display, char **path); | |||
int get_user_creds(const char **username, uid_t *uid, gid_t *gid, const cha r **home, const char **shell); | int get_user_creds(const char **username, uid_t *uid, gid_t *gid, const cha r **home, const char **shell); | |||
int get_group_creds(const char **groupname, gid_t *gid); | int get_group_creds(const char **groupname, gid_t *gid); | |||
int in_group(const char *name); | int in_group(const char *name); | |||
char* uid_to_name(uid_t uid); | ||||
int glob_exists(const char *path); | int glob_exists(const char *path); | |||
int dirent_ensure_type(DIR *d, struct dirent *de); | int dirent_ensure_type(DIR *d, struct dirent *de); | |||
int in_search_path(const char *path, char **search); | int in_search_path(const char *path, char **search); | |||
int get_files_in_directory(const char *path, char ***list); | int get_files_in_directory(const char *path, char ***list); | |||
char *strjoin(const char *x, ...) _sentinel_; | char *strjoin(const char *x, ...) _sentinel_; | |||
bool is_main_thread(void); | bool is_main_thread(void); | |||
skipping to change at line 525 | skipping to change at line 524 | |||
bool in_initrd(void); | bool in_initrd(void); | |||
void warn_melody(void); | void warn_melody(void); | |||
int get_shell(char **ret); | int get_shell(char **ret); | |||
int get_home_dir(char **ret); | int get_home_dir(char **ret); | |||
void freep(void *p); | void freep(void *p); | |||
void fclosep(FILE **f); | void fclosep(FILE **f); | |||
void pclosep(FILE **f); | ||||
void closep(int *fd); | void closep(int *fd); | |||
void closedirp(DIR **d); | void closedirp(DIR **d); | |||
void umaskp(mode_t *u); | void umaskp(mode_t *u); | |||
_malloc_ static inline void *malloc_multiply(size_t a, size_t b) { | _malloc_ static inline void *malloc_multiply(size_t a, size_t b) { | |||
if (_unlikely_(b == 0 || a > ((size_t) -1) / b)) | if (_unlikely_(b == 0 || a > ((size_t) -1) / b)) | |||
return NULL; | return NULL; | |||
return malloc(a * b); | return malloc(a * b); | |||
} | } | |||
_malloc_ static inline void *memdup_multiply(const void *p, size_t a, size_ t b) { | _malloc_ static inline void *memdup_multiply(const void *p, size_t a, size_ t b) { | |||
if (_unlikely_(b == 0 || a > ((size_t) -1) / b)) | if (_unlikely_(b == 0 || a > ((size_t) -1) / b)) | |||
return NULL; | return NULL; | |||
return memdup(p, a * b); | return memdup(p, a * b); | |||
} | } | |||
bool filename_is_safe(const char *p); | bool filename_is_safe(const char *p); | |||
bool path_is_safe(const char *p); | ||||
bool string_is_safe(const char *p); | bool string_is_safe(const char *p); | |||
bool string_has_cc(const char *p); | ||||
void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t si ze, | void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t si ze, | |||
int (*compar) (const void *, const void *, void *), | int (*compar) (const void *, const void *, void *), | |||
void *arg); | void *arg); | |||
bool is_locale_utf8(void); | bool is_locale_utf8(void); | |||
typedef enum DrawSpecialChar { | typedef enum DrawSpecialChar { | |||
DRAW_TREE_VERT, | DRAW_TREE_VERT, | |||
DRAW_TREE_BRANCH, | DRAW_TREE_BRANCH, | |||
DRAW_TREE_RIGHT, | DRAW_TREE_RIGHT, | |||
DRAW_TREE_SPACE, | ||||
DRAW_TRIANGULAR_BULLET, | DRAW_TRIANGULAR_BULLET, | |||
_DRAW_SPECIAL_CHAR_MAX | _DRAW_SPECIAL_CHAR_MAX | |||
} DrawSpecialChar; | } DrawSpecialChar; | |||
const char *draw_special_char(DrawSpecialChar ch); | const char *draw_special_char(DrawSpecialChar ch); | |||
char *strreplace(const char *text, const char *old_string, const char *new_ string); | char *strreplace(const char *text, const char *old_string, const char *new_ string); | |||
char *strip_tab_ansi(char **p, size_t *l); | char *strip_tab_ansi(char **p, size_t *l); | |||
int on_ac_power(void); | int on_ac_power(void); | |||
int search_and_fopen(const char *path, const char *mode, const char **searc | ||||
h, FILE **_f); | ||||
int search_and_fopen_nulstr(const char *path, const char *mode, const char | ||||
*search, FILE **_f); | ||||
#define FOREACH_LINE(line, f, on_error) \ | ||||
for (;;) \ | ||||
if (!fgets(line, sizeof(line), f)) { \ | ||||
if (ferror(f)) { \ | ||||
on_error; \ | ||||
} \ | ||||
break; \ | ||||
} else | ||||
#define FOREACH_DIRENT(de, d, on_error) \ | ||||
for (errno = 0, de = readdir(d);; errno = 0, de = readdir(d)) \ | ||||
if (!de) { \ | ||||
if (errno != 0) { \ | ||||
on_error; \ | ||||
} \ | ||||
break; \ | ||||
} else if (ignore_file((de)->d_name)) \ | ||||
continue; \ | ||||
else | ||||
End of changes. 14 change blocks. | ||||
16 lines changed or deleted | 18 lines changed or added | |||