automount.h   automount.h 
skipping to change at line 65 skipping to change at line 65
Set *tokens; Set *tokens;
AutomountResult result; AutomountResult result;
}; };
extern const UnitVTable automount_vtable; extern const UnitVTable automount_vtable;
int automount_send_ready(Automount *a, int status); int automount_send_ready(Automount *a, int status);
int automount_add_one_mount_link(Automount *a, Mount *m);
const char* automount_state_to_string(AutomountState i) _const_; const char* automount_state_to_string(AutomountState i) _const_;
AutomountState automount_state_from_string(const char *s) _pure_; AutomountState automount_state_from_string(const char *s) _pure_;
const char* automount_result_to_string(AutomountResult i) _const_; const char* automount_result_to_string(AutomountResult i) _const_;
AutomountResult automount_result_from_string(const char *s) _pure_; AutomountResult automount_result_from_string(const char *s) _pure_;
 End of changes. 1 change blocks. 
2 lines changed or deleted 0 lines changed or added


 cgroup-util.h   cgroup-util.h 
skipping to change at line 67 skipping to change at line 67
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 *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self); int cg_migrate(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self);
int cg_migrate_recursive(const char *cfrom, const char *pfrom, const char * cto, const char *pto, bool ignore_self, bool remove); int cg_migrate_recursive(const char *cfrom, const char *pfrom, const char * cto, const char *pto, bool ignore_self, bool remove);
int cg_migrate_recursive_fallback(const char *cfrom, const char *pfrom, con st char *cto, const char *pto, bool ignore_self, bool rem);
int cg_split_spec(const char *spec, char **controller, char **path); int cg_split_spec(const char *spec, char **controller, char **path);
int cg_join_spec(const char *controller, const char *path, char **spec); int cg_join_spec(const char *controller, const char *path, char **spec);
int cg_mangle_path(const char *path, char **result); int cg_mangle_path(const char *path, char **result);
int cg_get_path(const char *controller, const char *path, const char *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_pid_get_path(const char *controller, pid_t pid, char **path); int cg_pid_get_path(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);
int cg_rmdir(const char *controller, const char *path); int cg_rmdir(const char *controller, const char *path);
int cg_delete(const char *controller, const char *path); int cg_delete(const char *controller, const char *path);
int cg_create(const char *controller, const char *path); int cg_create(const char *controller, const char *path);
int cg_attach(const char *controller, const char *path, pid_t pid); int cg_attach(const char *controller, const char *path, pid_t pid);
int cg_attach_fallback(const char *controller, const char *path, pid_t pid) ;
int cg_create_and_attach(const char *controller, const char *path, pid_t pi d); int cg_create_and_attach(const char *controller, const char *path, pid_t pi d);
int cg_set_attribute(const char *controller, const char *path, const char * attribute, const char *value); int cg_set_attribute(const char *controller, const char *path, const char * attribute, const char *value);
int cg_set_group_access(const char *controller, const char *path, mode_t mo de, uid_t uid, gid_t gid); int cg_set_group_access(const char *controller, const char *path, mode_t mo de, uid_t uid, gid_t gid);
int cg_set_task_access(const char *controller, const char *path, mode_t mod e, uid_t uid, gid_t gid); int cg_set_task_access(const char *controller, const char *path, mode_t mod e, uid_t uid, gid_t gid);
int cg_install_release_agent(const char *controller, const char *agent); int cg_install_release_agent(const char *controller, const char *agent);
int cg_uninstall_release_agent(const char *controller); int cg_uninstall_release_agent(const char *controller);
skipping to change at line 129 skipping to change at line 131
int cg_controller_from_attr(const char *attr, char **controller); int cg_controller_from_attr(const char *attr, char **controller);
char *cg_escape(const char *p); char *cg_escape(const char *p);
char *cg_unescape(const char *p) _pure_; char *cg_unescape(const char *p) _pure_;
bool cg_controller_is_valid(const char *p, bool allow_named); bool cg_controller_is_valid(const char *p, bool allow_named);
int cg_slice_to_path(const char *unit, char **ret); int cg_slice_to_path(const char *unit, char **ret);
int cg_create_with_mask(CGroupControllerMask mask, const char *path); int cg_create_everywhere(CGroupControllerMask supported, CGroupControllerMa
int cg_attach_with_mask(CGroupControllerMask mask, const char *path, pid_t sk mask, const char *path);
pid); int cg_attach_everywhere(CGroupControllerMask supported, const char *path,
int cg_attach_many_with_mask(CGroupControllerMask mask, const char *path, S pid_t pid);
et* pids); int cg_attach_many_everywhere(CGroupControllerMask supported, const char *p
int cg_migrate_with_mask(CGroupControllerMask mask, const char *from, const ath, Set* pids);
char *to); int cg_migrate_everywhere(CGroupControllerMask supported, const char *from,
int cg_trim_with_mask(CGroupControllerMask mask, const char *path, bool del const char *to);
ete_root); int cg_trim_everywhere(CGroupControllerMask supported, const char *path, bo
ol delete_root);
CGroupControllerMask cg_mask_supported(void); CGroupControllerMask cg_mask_supported(void);
 End of changes. 3 change blocks. 
9 lines changed or deleted 12 lines changed or added


 cgroup.h   cgroup.h 
skipping to change at line 80 skipping to change at line 80
bool blockio_accounting; bool blockio_accounting;
bool memory_accounting; bool memory_accounting;
unsigned long cpu_shares; unsigned long cpu_shares;
unsigned long blockio_weight; unsigned long blockio_weight;
LIST_HEAD(CGroupBlockIODeviceWeight, blockio_device_weights); LIST_HEAD(CGroupBlockIODeviceWeight, blockio_device_weights);
LIST_HEAD(CGroupBlockIODeviceBandwidth, blockio_device_bandwidths); LIST_HEAD(CGroupBlockIODeviceBandwidth, blockio_device_bandwidths);
uint64_t memory_limit; uint64_t memory_limit;
uint64_t memory_soft_limit;
CGroupDevicePolicy device_policy; CGroupDevicePolicy device_policy;
LIST_HEAD(CGroupDeviceAllow, device_allow); LIST_HEAD(CGroupDeviceAllow, device_allow);
}; };
#include "unit.h" #include "unit.h"
#include "manager.h" #include "manager.h"
#include "cgroup-util.h" #include "cgroup-util.h"
void cgroup_context_init(CGroupContext *c); void cgroup_context_init(CGroupContext *c);
 End of changes. 1 change blocks. 
1 lines changed or deleted 0 lines changed or added


 config.h   config.h 
skipping to change at line 200 skipping to change at line 200
/* Define to 1 if you have the `strspn' function. */ /* Define to 1 if you have the `strspn' function. */
#define HAVE_STRSPN 1 #define HAVE_STRSPN 1
/* SysV init scripts and rcN.d links are supported. */ /* SysV init scripts and rcN.d links are supported. */
#define HAVE_SYSV_COMPAT /**/ #define HAVE_SYSV_COMPAT /**/
/* Define to 1 if you have the <sys/acl.h> header file. */ /* Define to 1 if you have the <sys/acl.h> header file. */
#define HAVE_SYS_ACL_H 1 #define HAVE_SYS_ACL_H 1
/* Define to 1 if you have the <sys/auxv.h> header file. */
/* #undef HAVE_SYS_AUXV_H */
/* Define to 1 if you have the <sys/capability.h> header file. */ /* Define to 1 if you have the <sys/capability.h> header file. */
#define HAVE_SYS_CAPABILITY_H 1 #define HAVE_SYS_CAPABILITY_H 1
/* Define to 1 if you have the <sys/ioctl.h> header file. */ /* Define to 1 if you have the <sys/ioctl.h> header file. */
#define HAVE_SYS_IOCTL_H 1 #define HAVE_SYS_IOCTL_H 1
/* Define to 1 if you have the <sys/select.h> header file. */ /* Define to 1 if you have the <sys/select.h> header file. */
#define HAVE_SYS_SELECT_H 1 #define HAVE_SYS_SELECT_H 1
/* Define to 1 if you have the <sys/socket.h> header file. */ /* Define to 1 if you have the <sys/socket.h> header file. */
skipping to change at line 259 skipping to change at line 262
/* 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 207" #define PACKAGE_STRING "systemd 208"
/* 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 "207" #define PACKAGE_VERSION "208"
/* 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
/* Define to the type of args 2, 3 and 4 for `select'. */ /* Define to the type of args 2, 3 and 4 for `select'. */
#define SELECT_TYPE_ARG234 (fd_set *) #define SELECT_TYPE_ARG234 (fd_set *)
/* Define to the type of arg 5 for `select'. */ /* Define to the type of arg 5 for `select'. */
#define SELECT_TYPE_ARG5 (struct timeval *) #define SELECT_TYPE_ARG5 (struct timeval *)
/* Define to 1 if you have the ANSI C header files. */ /* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1 #define STDC_HEADERS 1
/* Path to telinit */ /* Path to telinit */
#define TELINIT "/lib/upstart/telinit" #define TELINIT "/lib/sysvinit/telinit"
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1 #define TIME_WITH_SYS_TIME 1
/* GID of the 'tty' group */ /* GID of the 'tty' group */
/* #undef TTY_GID */ /* #undef TTY_GID */
/* Enable extensions on AIX 3, Interix. */ /* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE #ifndef _ALL_SOURCE
# define _ALL_SOURCE 1 # define _ALL_SOURCE 1
skipping to change at line 319 skipping to change at line 322
/* 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 "207" #define VERSION "208"
/* 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. 5 change blocks. 
4 lines changed or deleted 7 lines changed or added


 dbus-cgroup.h   dbus-cgroup.h 
skipping to change at line 40 skipping to change at line 40
#define BUS_CGROUP_CONTEXT_INTERFACE \ #define BUS_CGROUP_CONTEXT_INTERFACE \
" <property name=\"CPUAccounting\" type=\"b\" access=\"read\"/>\n" \ " <property name=\"CPUAccounting\" type=\"b\" access=\"read\"/>\n" \
" <property name=\"CPUShares\" type=\"t\" access=\"read\"/>\n" \ " <property name=\"CPUShares\" type=\"t\" access=\"read\"/>\n" \
" <property name=\"BlockIOAccounting\" type=\"b\" access=\"read\"/ >\n" \ " <property name=\"BlockIOAccounting\" type=\"b\" access=\"read\"/ >\n" \
" <property name=\"BlockIOWeight\" type=\"t\" access=\"read\"/>\n" \ " <property name=\"BlockIOWeight\" type=\"t\" access=\"read\"/>\n" \
" <property name=\"BlockIODeviceWeight\" type=\"a(st)\" access=\"r ead\"/>\n" \ " <property name=\"BlockIODeviceWeight\" type=\"a(st)\" access=\"r ead\"/>\n" \
" <property name=\"BlockIOReadBandwidth=\" type=\"a(st)\" access=\ "read\"/>\n" \ " <property name=\"BlockIOReadBandwidth=\" type=\"a(st)\" access=\ "read\"/>\n" \
" <property name=\"BlockIOWriteBandwidth=\" type=\"a(st)\" access= \"read\"/>\n" \ " <property name=\"BlockIOWriteBandwidth=\" type=\"a(st)\" access= \"read\"/>\n" \
" <property name=\"MemoryAccounting\" type=\"b\" access=\"read\"/> \n" \ " <property name=\"MemoryAccounting\" type=\"b\" access=\"read\"/> \n" \
" <property name=\"MemoryLimit\" type=\"t\" access=\"read\"/>\n" \ " <property name=\"MemoryLimit\" type=\"t\" access=\"read\"/>\n" \
" <property name=\"MemorySoftLimit\" type=\"t\" access=\"read\"/>\ n" \
" <property name=\"DevicePolicy\" type=\"s\" access=\"read\"/>\n" \ " <property name=\"DevicePolicy\" type=\"s\" access=\"read\"/>\n" \
" <property name=\"DeviceAllow\" type=\"a(ss)\" access=\"read\"/>\ n" " <property name=\"DeviceAllow\" type=\"a(ss)\" access=\"read\"/>\ n"
extern const BusProperty bus_cgroup_context_properties[]; extern const BusProperty bus_cgroup_context_properties[];
int bus_cgroup_set_property(Unit *u, CGroupContext *c, const char *name, DB usMessageIter *i, UnitSetPropertiesMode mode, DBusError *error); int bus_cgroup_set_property(Unit *u, CGroupContext *c, const char *name, DB usMessageIter *i, UnitSetPropertiesMode mode, DBusError *error);
 End of changes. 1 change blocks. 
1 lines changed or deleted 0 lines changed or added


 dbus-execute.h   dbus-execute.h 
skipping to change at line 66 skipping to change at line 66
" <property name=\"LimitRTPRIO\" type=\"t\" access=\"read\"/>\n" \ " <property name=\"LimitRTPRIO\" type=\"t\" access=\"read\"/>\n" \
" <property name=\"LimitRTTIME\" type=\"t\" access=\"read\"/>\n" \ " <property name=\"LimitRTTIME\" type=\"t\" access=\"read\"/>\n" \
" <property name=\"WorkingDirectory\" type=\"s\" access=\"read\"/> \n" \ " <property name=\"WorkingDirectory\" type=\"s\" access=\"read\"/> \n" \
" <property name=\"RootDirectory\" type=\"s\" access=\"read\"/>\n" \ " <property name=\"RootDirectory\" type=\"s\" access=\"read\"/>\n" \
" <property name=\"OOMScoreAdjust\" type=\"i\" access=\"read\"/>\n " \ " <property name=\"OOMScoreAdjust\" type=\"i\" access=\"read\"/>\n " \
" <property name=\"Nice\" type=\"i\" access=\"read\"/>\n" \ " <property name=\"Nice\" type=\"i\" access=\"read\"/>\n" \
" <property name=\"IOScheduling\" type=\"i\" access=\"read\"/>\n" \ " <property name=\"IOScheduling\" type=\"i\" access=\"read\"/>\n" \
" <property name=\"CPUSchedulingPolicy\" type=\"i\" access=\"read\ "/>\n" \ " <property name=\"CPUSchedulingPolicy\" type=\"i\" access=\"read\ "/>\n" \
" <property name=\"CPUSchedulingPriority\" type=\"i\" access=\"rea d\"/>\n" \ " <property name=\"CPUSchedulingPriority\" type=\"i\" access=\"rea d\"/>\n" \
" <property name=\"CPUAffinity\" type=\"ay\" access=\"read\"/>\n" \ " <property name=\"CPUAffinity\" type=\"ay\" access=\"read\"/>\n" \
" <property name=\"TimerSlackNS\" type=\"t\" access=\"read\"/>\n" \ " <property name=\"TimerSlackNSec\" type=\"t\" access=\"read\"/>\n " \
" <property name=\"CPUSchedulingResetOnFork\" type=\"b\" access=\" read\"/>\n" \ " <property name=\"CPUSchedulingResetOnFork\" type=\"b\" access=\" read\"/>\n" \
" <property name=\"NonBlocking\" type=\"b\" access=\"read\"/>\n" \ " <property name=\"NonBlocking\" type=\"b\" access=\"read\"/>\n" \
" <property name=\"StandardInput\" type=\"s\" access=\"read\"/>\n" \ " <property name=\"StandardInput\" type=\"s\" access=\"read\"/>\n" \
" <property name=\"StandardOutput\" type=\"s\" access=\"read\"/>\n " \ " <property name=\"StandardOutput\" type=\"s\" access=\"read\"/>\n " \
" <property name=\"StandardError\" type=\"s\" access=\"read\"/>\n" \ " <property name=\"StandardError\" type=\"s\" access=\"read\"/>\n" \
" <property name=\"TTYPath\" type=\"s\" access=\"read\"/>\n" \ " <property name=\"TTYPath\" type=\"s\" access=\"read\"/>\n" \
" <property name=\"TTYReset\" type=\"b\" access=\"read\"/>\n" \ " <property name=\"TTYReset\" type=\"b\" access=\"read\"/>\n" \
" <property name=\"TTYVHangup\" type=\"b\" access=\"read\"/>\n" \ " <property name=\"TTYVHangup\" type=\"b\" access=\"read\"/>\n" \
" <property name=\"TTYVTDisallocate\" type=\"b\" access=\"read\"/> \n" \ " <property name=\"TTYVTDisallocate\" type=\"b\" access=\"read\"/> \n" \
" <property name=\"SyslogPriority\" type=\"i\" access=\"read\"/>\n " \ " <property name=\"SyslogPriority\" type=\"i\" access=\"read\"/>\n " \
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 def.h   def.h 
skipping to change at line 36 skipping to change at line 36
#define DEFAULT_TIMEOUT_USEC (90*USEC_PER_SEC) #define DEFAULT_TIMEOUT_USEC (90*USEC_PER_SEC)
#define DEFAULT_RESTART_USEC (100*USEC_PER_MSEC) #define DEFAULT_RESTART_USEC (100*USEC_PER_MSEC)
#define DEFAULT_CONFIRM_USEC (30*USEC_PER_SEC) #define DEFAULT_CONFIRM_USEC (30*USEC_PER_SEC)
#define DEFAULT_EXIT_USEC (5*USEC_PER_MINUTE) #define DEFAULT_EXIT_USEC (5*USEC_PER_MINUTE)
#define SYSTEMD_CGROUP_CONTROLLER "name=systemd" #define SYSTEMD_CGROUP_CONTROLLER "name=systemd"
#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT #define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT
#define SIGNALS_IGNORE SIGPIPE #define SIGNALS_IGNORE SIGPIPE
#define DIGITS "0123456789"
#define LOWERCASE_LETTERS "abcdefghijklmnopqrstuvwxyz"
#define UPPERCASE_LETTERS "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
#define LETTERS LOWERCASE_LETTERS UPPERCASE_LETTERS
 End of changes. 1 change blocks. 
0 lines changed or deleted 0 lines changed or added


 efivars.h   efivars.h 
skipping to change at line 45 skipping to change at line 45
int is_efi_secure_boot(void); int is_efi_secure_boot(void);
int is_efi_secure_boot_setup_mode(void); int is_efi_secure_boot_setup_mode(void);
int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribu te, void **value, size_t *size); int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribu te, void **value, size_t *size);
int efi_get_variable_string(sd_id128_t vendor, const char *name, char **p); int efi_get_variable_string(sd_id128_t vendor, const char *name, char **p);
int efi_get_boot_option(uint16_t nr, char **title, sd_id128_t *partuuid, ch ar **path); int efi_get_boot_option(uint16_t nr, char **title, sd_id128_t *partuuid, ch ar **path);
int efi_get_boot_order(uint16_t **order); int efi_get_boot_order(uint16_t **order);
int efi_get_boot_options(uint16_t **options); int efi_get_boot_options(uint16_t **options);
int efi_get_boot_timestamps(const dual_timestamp *n, dual_timestamp *firmwa int efi_loader_get_device_part_uuid(sd_id128_t *u);
re, dual_timestamp *loader); int efi_loader_get_boot_usec(usec_t *firmware, usec_t *loader);
int efi_get_loader_device_part_uuid(sd_id128_t *u);
 End of changes. 1 change blocks. 
0 lines changed or deleted 0 lines changed or added


 fileio.h   fileio.h 
skipping to change at line 40 skipping to change at line 40
int write_string_file_atomic(const char *fn, const char *line); int write_string_file_atomic(const char *fn, const char *line);
int read_one_line_file(const char *fn, 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 read_full_file(const char *fn, char **contents, size_t *size);
int parse_env_file(const char *fname, const char *separator, ...) _sentinel _; int parse_env_file(const char *fname, const char *separator, ...) _sentinel _;
int load_env_file(const char *fname, const char *separator, char ***l); int load_env_file(const char *fname, const char *separator, char ***l);
int write_env_file(const char *fname, char **l); int write_env_file(const char *fname, char **l);
int executable_is_script(const char *path, char **interpreter); int executable_is_script(const char *path, char **interpreter);
int get_status_field(const char *filename, const char *pattern, char **fiel
d);
 End of changes. 1 change blocks. 
0 lines changed or deleted 0 lines changed or added


 hashmap.h   hashmap.h 
skipping to change at line 79 skipping to change at line 79
void *hashmap_remove_value(Hashmap *h, const void *key, void *value); void *hashmap_remove_value(Hashmap *h, const void *key, void *value);
int hashmap_remove_and_put(Hashmap *h, const void *old_key, const void *new _key, void *value); int hashmap_remove_and_put(Hashmap *h, const void *old_key, const void *new _key, void *value);
int hashmap_remove_and_replace(Hashmap *h, const void *old_key, const void *new_key, void *value); int hashmap_remove_and_replace(Hashmap *h, const void *old_key, const void *new_key, void *value);
int hashmap_merge(Hashmap *h, Hashmap *other); int hashmap_merge(Hashmap *h, Hashmap *other);
void hashmap_move(Hashmap *h, Hashmap *other); void hashmap_move(Hashmap *h, Hashmap *other);
int hashmap_move_one(Hashmap *h, Hashmap *other, const void *key); int hashmap_move_one(Hashmap *h, Hashmap *other, const void *key);
unsigned hashmap_size(Hashmap *h) _pure_; unsigned hashmap_size(Hashmap *h) _pure_;
bool hashmap_isempty(Hashmap *h) _pure_; bool hashmap_isempty(Hashmap *h) _pure_;
unsigned hashmap_buckets(Hashmap *h) _pure_;
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_clear_free_free(Hashmap *h);
void *hashmap_steal_first(Hashmap *h); void *hashmap_steal_first(Hashmap *h);
 End of changes. 1 change blocks. 
0 lines changed or deleted 1 lines changed or added


 install-printf.h   install-printf.h 
skipping to change at line 25 skipping to change at line 25
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/>.
***/ ***/
#pragma once #pragma once
#include "install.h" #include "install.h"
char *install_full_printf(InstallInfo *i, const char *format); int install_full_printf(InstallInfo *i, const char *format, char **ret);
 End of changes. 1 change blocks. 
0 lines changed or deleted 0 lines changed or added


 journald-server.h   journald-server.h 
skipping to change at line 100 skipping to change at line 100
uint64_t cached_available_space; uint64_t cached_available_space;
usec_t cached_available_space_timestamp; usec_t cached_available_space_timestamp;
uint64_t var_available_timestamp; uint64_t var_available_timestamp;
usec_t max_retention_usec; usec_t max_retention_usec;
usec_t max_file_usec; usec_t max_file_usec;
usec_t oldest_file_usec; usec_t oldest_file_usec;
gid_t file_gid;
bool file_gid_valid;
LIST_HEAD(StdoutStream, stdout_streams); LIST_HEAD(StdoutStream, stdout_streams);
unsigned n_stdout_streams; unsigned n_stdout_streams;
char *tty_path; char *tty_path;
int max_level_store; int max_level_store;
int max_level_syslog; int max_level_syslog;
int max_level_kmsg; int max_level_kmsg;
int max_level_console; int max_level_console;
skipping to change at line 128 skipping to change at line 125
bool dev_kmsg_readable; bool dev_kmsg_readable;
uint64_t *kernel_seqnum; uint64_t *kernel_seqnum;
struct udev *udev; struct udev *udev;
int sync_timer_fd; int sync_timer_fd;
bool sync_scheduled; bool sync_scheduled;
} Server; } Server;
#define N_IOVEC_META_FIELDS 19 #define N_IOVEC_META_FIELDS 20
#define N_IOVEC_KERNEL_FIELDS 64 #define N_IOVEC_KERNEL_FIELDS 64
#define N_IOVEC_UDEV_FIELDS 32 #define N_IOVEC_UDEV_FIELDS 32
#define N_IOVEC_OBJECT_FIELDS 11 #define N_IOVEC_OBJECT_FIELDS 11
void server_dispatch_message(Server *s, struct iovec *iovec, unsigned n, un signed m, struct ucred *ucred, struct timeval *tv, const char *label, size_ t label_len, const char *unit_id, int priority, pid_t object_pid); void server_dispatch_message(Server *s, struct iovec *iovec, unsigned n, un signed m, struct ucred *ucred, struct timeval *tv, const char *label, size_ t label_len, const char *unit_id, int priority, pid_t object_pid);
void server_driver_message(Server *s, sd_id128_t message_id, const char *fo rmat, ...) _printf_attr_(3,4); void server_driver_message(Server *s, sd_id128_t message_id, const char *fo rmat, ...) _printf_attr_(3,4);
/* gperf lookup function */ /* gperf lookup function */
const struct ConfigPerfItem* journald_gperf_lookup(const char *key, unsigne d length); const struct ConfigPerfItem* journald_gperf_lookup(const char *key, unsigne d length);
 End of changes. 2 change blocks. 
4 lines changed or deleted 1 lines changed or added


 logind-device.h   logind-device.h 
skipping to change at line 30 skipping to change at line 30
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 Device Device; typedef struct Device Device;
#include "list.h" #include "list.h"
#include "util.h" #include "util.h"
#include "logind.h" #include "logind.h"
#include "logind-seat.h" #include "logind-seat.h"
#include "logind-session-device.h"
struct Device { struct Device {
Manager *manager; Manager *manager;
char *sysfs; char *sysfs;
Seat *seat; Seat *seat;
bool master;
dual_timestamp timestamp; dual_timestamp timestamp;
LIST_FIELDS(struct Device, devices); LIST_FIELDS(struct Device, devices);
LIST_HEAD(SessionDevice, session_devices);
}; };
Device* device_new(Manager *m, const char *sysfs); Device* device_new(Manager *m, const char *sysfs, bool master);
void device_free(Device *d); void device_free(Device *d);
void device_attach(Device *d, Seat *s); void device_attach(Device *d, Seat *s);
void device_detach(Device *d); void device_detach(Device *d);
 End of changes. 4 change blocks. 
1 lines changed or deleted 4 lines changed or added


 logind-seat.h   logind-seat.h 
skipping to change at line 41 skipping to change at line 41
struct Seat { struct Seat {
Manager *manager; Manager *manager;
char *id; char *id;
char *state_file; char *state_file;
LIST_HEAD(Device, devices); LIST_HEAD(Device, devices);
Session *active; Session *active;
Session *pending_switch;
LIST_HEAD(Session, sessions); LIST_HEAD(Session, sessions);
bool in_gc_queue:1; bool in_gc_queue:1;
bool started:1; bool started:1;
LIST_FIELDS(Seat, gc_queue); LIST_FIELDS(Seat, gc_queue);
}; };
Seat *seat_new(Manager *m, const char *id); Seat *seat_new(Manager *m, const char *id);
void seat_free(Seat *s); void seat_free(Seat *s);
skipping to change at line 62 skipping to change at line 63
int seat_save(Seat *s); int seat_save(Seat *s);
int seat_load(Seat *s); int seat_load(Seat *s);
int seat_apply_acls(Seat *s, Session *old_active); int seat_apply_acls(Seat *s, Session *old_active);
int seat_set_active(Seat *s, Session *session); int seat_set_active(Seat *s, Session *session);
int seat_active_vt_changed(Seat *s, int vtnr); int seat_active_vt_changed(Seat *s, int vtnr);
int seat_read_active_vt(Seat *s); int seat_read_active_vt(Seat *s);
int seat_preallocate_vts(Seat *s); int seat_preallocate_vts(Seat *s);
int seat_attach_session(Seat *s, Session *session); int seat_attach_session(Seat *s, Session *session);
void seat_complete_switch(Seat *s);
bool seat_is_vtconsole(Seat *s); bool seat_has_vts(Seat *s);
bool seat_is_seat0(Seat *s);
bool seat_can_multi_session(Seat *s); bool seat_can_multi_session(Seat *s);
bool seat_can_tty(Seat *s); bool seat_can_tty(Seat *s);
bool seat_has_master_device(Seat *s);
bool seat_can_graphical(Seat *s); bool seat_can_graphical(Seat *s);
int seat_get_idle_hint(Seat *s, dual_timestamp *t); int seat_get_idle_hint(Seat *s, dual_timestamp *t);
int seat_start(Seat *s); int seat_start(Seat *s);
int seat_stop(Seat *s); int seat_stop(Seat *s);
int seat_stop_sessions(Seat *s); int seat_stop_sessions(Seat *s);
int seat_check_gc(Seat *s, bool drop_not_started); int seat_check_gc(Seat *s, bool drop_not_started);
void seat_add_to_gc_queue(Seat *s); void seat_add_to_gc_queue(Seat *s);
 End of changes. 4 change blocks. 
1 lines changed or deleted 5 lines changed or added


 logind-session.h   logind-session.h 
skipping to change at line 31 skipping to change at line 31
along with systemd; If not, see <http://www.gnu.org/licenses/>. along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/ ***/
typedef struct Session Session; typedef struct Session Session;
typedef enum KillWho KillWho; typedef enum KillWho KillWho;
#include "list.h" #include "list.h"
#include "util.h" #include "util.h"
#include "logind.h" #include "logind.h"
#include "logind-seat.h" #include "logind-seat.h"
#include "logind-session-device.h"
#include "logind-user.h" #include "logind-user.h"
#include "login-shared.h"
typedef enum SessionState { typedef enum SessionState {
SESSION_OPENING, /* Session scope is being created */ SESSION_OPENING, /* Session scope is being created */
SESSION_ONLINE, /* Logged in */ SESSION_ONLINE, /* Logged in */
SESSION_ACTIVE, /* Logged in and in the fg */ SESSION_ACTIVE, /* Logged in and in the fg */
SESSION_CLOSING, /* Logged out, but scope is still there */ SESSION_CLOSING, /* Logged out, but scope is still there */
_SESSION_STATE_MAX, _SESSION_STATE_MAX,
_SESSION_STATE_INVALID = -1 _SESSION_STATE_INVALID = -1
} SessionState; } SessionState;
skipping to change at line 108 skipping to change at line 110
bool idle_hint; bool idle_hint;
dual_timestamp idle_hint_timestamp; dual_timestamp idle_hint_timestamp;
bool in_gc_queue:1; bool in_gc_queue:1;
bool started:1; bool started:1;
bool closing:1; bool closing:1;
DBusMessage *create_message; DBusMessage *create_message;
char *controller;
Hashmap *devices;
LIST_FIELDS(Session, sessions_by_user); LIST_FIELDS(Session, sessions_by_user);
LIST_FIELDS(Session, sessions_by_seat); LIST_FIELDS(Session, sessions_by_seat);
LIST_FIELDS(Session, gc_queue); LIST_FIELDS(Session, gc_queue);
}; };
Session *session_new(Manager *m, const char *id); Session *session_new(Manager *m, const char *id);
void session_free(Session *s); void session_free(Session *s);
void session_set_user(Session *s, User *u); void session_set_user(Session *s, User *u);
int session_check_gc(Session *s, bool drop_not_started); int session_check_gc(Session *s, bool drop_not_started);
skipping to change at line 156 skipping to change at line 161
SessionState session_state_from_string(const char *s) _pure_; SessionState session_state_from_string(const char *s) _pure_;
const char* session_type_to_string(SessionType t) _const_; const char* session_type_to_string(SessionType t) _const_;
SessionType session_type_from_string(const char *s) _pure_; SessionType session_type_from_string(const char *s) _pure_;
const char* session_class_to_string(SessionClass t) _const_; const char* session_class_to_string(SessionClass t) _const_;
SessionClass session_class_from_string(const char *s) _pure_; SessionClass session_class_from_string(const char *s) _pure_;
const char *kill_who_to_string(KillWho k) _const_; const char *kill_who_to_string(KillWho k) _const_;
KillWho kill_who_from_string(const char *s) _pure_; KillWho kill_who_from_string(const char *s) _pure_;
bool session_is_controller(Session *s, const char *sender);
int session_set_controller(Session *s, const char *sender, bool force);
void session_drop_controller(Session *s);
 End of changes. 4 change blocks. 
0 lines changed or deleted 5 lines changed or added


 logind.h   logind.h 
skipping to change at line 54 skipping to change at line 54
struct Manager { struct Manager {
DBusConnection *bus; DBusConnection *bus;
Hashmap *devices; Hashmap *devices;
Hashmap *seats; Hashmap *seats;
Hashmap *sessions; Hashmap *sessions;
Hashmap *users; Hashmap *users;
Hashmap *inhibitors; Hashmap *inhibitors;
Hashmap *buttons; Hashmap *buttons;
Hashmap *busnames;
LIST_HEAD(Seat, seat_gc_queue); LIST_HEAD(Seat, seat_gc_queue);
LIST_HEAD(Session, session_gc_queue); LIST_HEAD(Session, session_gc_queue);
LIST_HEAD(User, user_gc_queue); LIST_HEAD(User, user_gc_queue);
struct udev *udev; struct udev *udev;
struct udev_monitor *udev_seat_monitor, *udev_vcsa_monitor, *udev_b utton_monitor; struct udev_monitor *udev_seat_monitor, *udev_device_monitor, *udev _vcsa_monitor, *udev_button_monitor;
int udev_seat_fd; int udev_seat_fd;
int udev_device_fd;
int udev_vcsa_fd; int udev_vcsa_fd;
int udev_button_fd; int udev_button_fd;
int console_active_fd; int console_active_fd;
int bus_fd; int bus_fd;
int epoll_fd; int epoll_fd;
unsigned n_autovts; unsigned n_autovts;
unsigned reserve_vt; unsigned reserve_vt;
int reserve_vt_fd; int reserve_vt_fd;
Seat *vtconsole; Seat *seat0;
char **kill_only_users, **kill_exclude_users; char **kill_only_users, **kill_exclude_users;
bool kill_user_processes; bool kill_user_processes;
unsigned long session_counter; unsigned long session_counter;
unsigned long inhibit_counter; unsigned long inhibit_counter;
Hashmap *session_units; Hashmap *session_units;
Hashmap *user_units; Hashmap *user_units;
skipping to change at line 124 skipping to change at line 126
HandleAction handle_lid_switch; HandleAction handle_lid_switch;
bool power_key_ignore_inhibited; bool power_key_ignore_inhibited;
bool suspend_key_ignore_inhibited; bool suspend_key_ignore_inhibited;
bool hibernate_key_ignore_inhibited; bool hibernate_key_ignore_inhibited;
bool lid_switch_ignore_inhibited; bool lid_switch_ignore_inhibited;
}; };
enum { enum {
FD_SEAT_UDEV, FD_SEAT_UDEV,
FD_DEVICE_UDEV,
FD_VCSA_UDEV, FD_VCSA_UDEV,
FD_BUTTON_UDEV, FD_BUTTON_UDEV,
FD_CONSOLE, FD_CONSOLE,
FD_BUS, FD_BUS,
FD_IDLE_ACTION, FD_IDLE_ACTION,
FD_OTHER_BASE FD_OTHER_BASE
}; };
Manager *manager_new(void); Manager *manager_new(void);
void manager_free(Manager *m); void manager_free(Manager *m);
int manager_add_device(Manager *m, const char *sysfs, Device **_device); int manager_add_device(Manager *m, const char *sysfs, bool master, Device * *_device);
int manager_add_button(Manager *m, const char *name, Button **_button); int manager_add_button(Manager *m, const char *name, Button **_button);
int manager_add_seat(Manager *m, const char *id, Seat **_seat); int manager_add_seat(Manager *m, const char *id, Seat **_seat);
int manager_add_session(Manager *m, const char *id, Session **_session); int manager_add_session(Manager *m, const char *id, Session **_session);
int manager_add_user(Manager *m, uid_t uid, gid_t gid, const char *name, Us er **_user); int manager_add_user(Manager *m, uid_t uid, gid_t gid, const char *name, Us er **_user);
int manager_add_user_by_name(Manager *m, const char *name, User **_user); int manager_add_user_by_name(Manager *m, const char *name, User **_user);
int manager_add_user_by_uid(Manager *m, uid_t uid, User **_user); int manager_add_user_by_uid(Manager *m, uid_t uid, User **_user);
int manager_add_inhibitor(Manager *m, const char* id, Inhibitor **_inhibito r); int manager_add_inhibitor(Manager *m, const char* id, Inhibitor **_inhibito r);
int manager_process_seat_device(Manager *m, struct udev_device *d); int manager_process_seat_device(Manager *m, struct udev_device *d);
int manager_process_button_device(Manager *m, struct udev_device *d); int manager_process_button_device(Manager *m, struct udev_device *d);
skipping to change at line 191 skipping to change at line 194
int manager_dispatch_delayed(Manager *manager); int manager_dispatch_delayed(Manager *manager);
int manager_start_scope(Manager *manager, const char *scope, pid_t pid, con st char *slice, const char *description, const char *after, const char *kil l_mode, DBusError *error, char **job); int manager_start_scope(Manager *manager, const char *scope, pid_t pid, con st char *slice, const char *description, const char *after, const char *kil l_mode, DBusError *error, char **job);
int manager_start_unit(Manager *manager, const char *unit, DBusError *error , char **job); int manager_start_unit(Manager *manager, const char *unit, DBusError *error , char **job);
int manager_stop_unit(Manager *manager, const char *unit, DBusError *error, char **job); int manager_stop_unit(Manager *manager, const char *unit, DBusError *error, char **job);
int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo, DBusError *error); int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo, DBusError *error);
int manager_unit_is_active(Manager *manager, const char *unit); int manager_unit_is_active(Manager *manager, const char *unit);
/* gperf lookup function */ /* gperf lookup function */
const struct ConfigPerfItem* logind_gperf_lookup(const char *key, unsigned length); const struct ConfigPerfItem* logind_gperf_lookup(const char *key, unsigned length);
int manager_watch_busname(Manager *manager, const char *name);
void manager_drop_busname(Manager *manager, const char *name);
 End of changes. 7 change blocks. 
3 lines changed or deleted 6 lines changed or added


 manager.h   manager.h 
skipping to change at line 106 skipping to change at line 106
* not, and the list of jobs may neither. */ * not, and the list of jobs may neither. */
/* Active jobs and units */ /* Active jobs and units */
Hashmap *units; /* name string => Unit object n:1 */ Hashmap *units; /* name string => Unit object n:1 */
Hashmap *jobs; /* job id => Job object 1:1 */ Hashmap *jobs; /* job id => Job object 1:1 */
/* To make it easy to iterate through the units of a specific /* To make it easy to iterate through the units of a specific
* type we maintain a per type linked list */ * type we maintain a per type linked list */
LIST_HEAD(Unit, units_by_type[_UNIT_TYPE_MAX]); LIST_HEAD(Unit, units_by_type[_UNIT_TYPE_MAX]);
/* To optimize iteration of units that have requires_mounts_for set
*/
LIST_HEAD(Unit, has_requires_mounts_for);
/* Units that need to be loaded */ /* Units that need to be loaded */
LIST_HEAD(Unit, load_queue); /* this is actually more a stack than a queue, but uh. */ LIST_HEAD(Unit, load_queue); /* this is actually more a stack than a queue, but uh. */
/* Jobs that need to be run */ /* Jobs that need to be run */
LIST_HEAD(Job, run_queue); /* more a stack than a queue, too */ LIST_HEAD(Job, run_queue); /* more a stack than a queue, too */
/* Units and jobs that have not yet been announced via /* Units and jobs that have not yet been announced via
* D-Bus. When something about a job changes it is added here * D-Bus. When something about a job changes it is added here
* if it is not in there yet. This allows easy coalescing of * if it is not in there yet. This allows easy coalescing of
* D-Bus change signals. */ * D-Bus change signals. */
skipping to change at line 254 skipping to change at line 251
/* Jobs in progress watching */ /* Jobs in progress watching */
unsigned n_running_jobs; unsigned n_running_jobs;
unsigned n_on_console; unsigned n_on_console;
unsigned jobs_in_progress_iteration; unsigned jobs_in_progress_iteration;
/* Type=idle pipes */ /* Type=idle pipes */
int idle_pipe[4]; int idle_pipe[4];
char *switch_root; char *switch_root;
char *switch_root_init; char *switch_root_init;
/* This maps all possible path prefixes to the units needing
* them. It's a hashmap with a path string as key and a Set as
* value where Unit objects are contained. */
Hashmap *units_requiring_mounts_for;
}; };
int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **m) ; int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **m) ;
void manager_free(Manager *m); void manager_free(Manager *m);
int manager_enumerate(Manager *m); int manager_enumerate(Manager *m);
int manager_coldplug(Manager *m); int manager_coldplug(Manager *m);
int manager_startup(Manager *m, FILE *serialization, FDSet *fds); int manager_startup(Manager *m, FILE *serialization, FDSet *fds);
Job *manager_get_job(Manager *m, uint32_t id); Job *manager_get_job(Manager *m, uint32_t id);
Unit *manager_get_unit(Manager *m, const char *name); Unit *manager_get_unit(Manager *m, const char *name);
int manager_get_unit_by_path(Manager *m, const char *path, const char *suff
ix, Unit **_found);
int manager_get_job_from_dbus_path(Manager *m, const char *s, Job **_j); int manager_get_job_from_dbus_path(Manager *m, const char *s, Job **_j);
int manager_load_unit_prepare(Manager *m, const char *name, const char *pat h, DBusError *e, Unit **_ret); int manager_load_unit_prepare(Manager *m, const char *name, const char *pat h, DBusError *e, Unit **_ret);
int manager_load_unit(Manager *m, const char *name, const char *path, DBusE rror *e, Unit **_ret); int manager_load_unit(Manager *m, const char *name, const char *path, DBusE rror *e, Unit **_ret);
int manager_load_unit_from_dbus_path(Manager *m, const char *s, DBusError * e, Unit **_u); int manager_load_unit_from_dbus_path(Manager *m, const char *s, DBusError * e, Unit **_u);
int manager_add_job(Manager *m, JobType type, Unit *unit, JobMode mode, boo l force, DBusError *e, Job **_ret); int manager_add_job(Manager *m, JobType type, Unit *unit, JobMode mode, boo l force, DBusError *e, Job **_ret);
int manager_add_job_by_name(Manager *m, JobType type, const char *name, Job Mode mode, bool force, DBusError *e, Job **_ret); int manager_add_job_by_name(Manager *m, JobType type, const char *name, Job Mode mode, bool force, DBusError *e, Job **_ret);
void manager_dump_units(Manager *s, FILE *f, const char *prefix); void manager_dump_units(Manager *s, FILE *f, const char *prefix);
skipping to change at line 319 skipping to change at line 323
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);
void manager_status_printf(Manager *m, bool ephemeral, const char *status, const char *format, ...) _printf_attr_(4,5); void manager_status_printf(Manager *m, bool ephemeral, const char *status, const char *format, ...) _printf_attr_(4,5);
Set *manager_get_units_requiring_mounts_for(Manager *m, const char *path);
void watch_init(Watch *w); void watch_init(Watch *w);
 End of changes. 4 change blocks. 
4 lines changed or deleted 10 lines changed or added


 missing.h   missing.h 
skipping to change at line 32 skipping to change at line 32
***/ ***/
/* Missing glibc definitions to access certain kernel APIs */ /* Missing glibc definitions to access certain kernel APIs */
#include <sys/resource.h> #include <sys/resource.h>
#include <sys/syscall.h> #include <sys/syscall.h>
#include <fcntl.h> #include <fcntl.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <linux/oom.h> #include <linux/oom.h>
#include <linux/input.h>
#ifdef HAVE_AUDIT #ifdef HAVE_AUDIT
#include <libaudit.h> #include <libaudit.h>
#endif #endif
#include "macro.h" #include "macro.h"
#ifdef ARCH_MIPS #ifdef ARCH_MIPS
#include <asm/sgidefs.h> #include <asm/sgidefs.h>
#endif #endif
skipping to change at line 313 skipping to change at line 314
#define CIFS_MAGIC_NUMBER 0xFF534D42 #define CIFS_MAGIC_NUMBER 0xFF534D42
#endif #endif
#ifndef TFD_TIMER_CANCEL_ON_SET #ifndef TFD_TIMER_CANCEL_ON_SET
#define TFD_TIMER_CANCEL_ON_SET (1 << 1) #define TFD_TIMER_CANCEL_ON_SET (1 << 1)
#endif #endif
#ifndef SO_REUSEPORT #ifndef SO_REUSEPORT
#define SO_REUSEPORT 15 #define SO_REUSEPORT 15
#endif #endif
#ifndef EVIOCREVOKE
#define EVIOCREVOKE _IOW('E', 0x91, int)
#endif
#ifndef DRM_IOCTL_SET_MASTER
#define DRM_IOCTL_SET_MASTER _IO('d', 0x1e)
#endif
#ifndef DRM_IOCTL_DROP_MASTER
#define DRM_IOCTL_DROP_MASTER _IO('d', 0x1f)
#endif
 End of changes. 2 change blocks. 
0 lines changed or deleted 1 lines changed or added


 path-util.h   path-util.h 
skipping to change at line 54 skipping to change at line 54
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_canonicalize_uniq(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);
int path_is_os_tree(const char *path); int path_is_os_tree(const char *path);
int find_binary(const char *name, char **filename); int find_binary(const char *name, char **filename);
/* Iterates through the path prefixes of the specified path, going up
* the tree, to root. Also returns "" (and not "/"!) for the root
* directory. Excludes the specified directory itself */
#define PATH_FOREACH_PREFIX(prefix, path) \
for (char *_slash = ({ path_kill_slashes(strcpy(prefix, path)); str
eq(prefix, "/") ? NULL : strrchr(prefix, '/'); }); _slash && !(*_slash = 0)
; _slash = strrchr((prefix), '/'))
/* Same as PATH_FOREACH_PREFIX but also includes the specified path itself
*/
#define PATH_FOREACH_PREFIX_MORE(prefix, path) \
for (char *_slash = ({ path_kill_slashes(strcpy(prefix, path)); if
(streq(prefix, "/")) prefix[0] = 0; strrchr(prefix, 0); }); _slash && !(*_s
lash = 0); _slash = strrchr((prefix), '/'))
 End of changes. 1 change blocks. 
0 lines changed or deleted 0 lines changed or added


 path.h   path.h 
skipping to change at line 93 skipping to change at line 93
PathState state, deserialized_state; PathState state, deserialized_state;
bool inotify_triggered; bool inotify_triggered;
bool make_directory; bool make_directory;
mode_t directory_mode; mode_t directory_mode;
PathResult result; PathResult result;
}; };
/* Called from the mount code figure out if a mount is a dependency of
* any of the paths of this path object */
int path_add_one_mount_link(Path *p, Mount *m);
void path_free_specs(Path *p); 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_; const char* path_state_to_string(PathState i) _const_;
PathState path_state_from_string(const char *s) _pure_; PathState path_state_from_string(const char *s) _pure_;
const char* path_type_to_string(PathType i) _const_; const char* path_type_to_string(PathType i) _const_;
PathType path_type_from_string(const char *s) _pure_; PathType path_type_from_string(const char *s) _pure_;
 End of changes. 1 change blocks. 
4 lines changed or deleted 0 lines changed or added


 socket-util.h   socket-util.h 
skipping to change at line 95 skipping to change at line 95
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); int make_socket_fd(const char* address, int flags);
bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) _ pure_; bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) _ pure_;
bool socket_address_needs_mount(const SocketAddress *a, const char *prefix) ; const char* socket_address_get_path(const SocketAddress *a);
const char* socket_address_bind_ipv6_only_to_string(SocketAddressBindIPv6On ly b) _const_; const char* socket_address_bind_ipv6_only_to_string(SocketAddressBindIPv6On ly b) _const_;
SocketAddressBindIPv6Only socket_address_bind_ipv6_only_from_string(const c har *s) _pure_; SocketAddressBindIPv6Only socket_address_bind_ipv6_only_from_string(const c har *s) _pure_;
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);
bool socket_ipv6_is_supported(void); bool socket_ipv6_is_supported(void);
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 socket.h   socket.h 
skipping to change at line 159 skipping to change at line 159
long mq_msgsize; long mq_msgsize;
char *smack; char *smack;
char *smack_ip_in; char *smack_ip_in;
char *smack_ip_out; char *smack_ip_out;
}; };
/* Called from the service code when collecting fds */ /* Called from the service code when collecting fds */
int socket_collect_fds(Socket *s, int **fds, unsigned *n_fds); int socket_collect_fds(Socket *s, int **fds, unsigned *n_fds);
/* Called from the mount code figure out if a mount is a dependency of
* any of the sockets of this socket */
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); 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_; const char* socket_state_to_string(SocketState i) _const_;
SocketState socket_state_from_string(const char *s) _pure_; SocketState socket_state_from_string(const char *s) _pure_;
 End of changes. 1 change blocks. 
4 lines changed or deleted 0 lines changed or added


 specifier.h   specifier.h 
skipping to change at line 24 skipping to change at line 24
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/>.
***/ ***/
typedef char* (*SpecifierCallback)(char specifier, void *data, void *userda ta); typedef int (*SpecifierCallback)(char specifier, void *data, void *userdata , char **ret);
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); int specifier_printf(const char *text, const Specifier table[], void *userd ata, char **ret);
char *specifier_string(char specifier, void *data, void *userdata); int specifier_string(char specifier, void *data, void *userdata, char **ret );
char *specifier_machine_id(char specifier, void *data, void *userdata); int specifier_machine_id(char specifier, void *data, void *userdata, char *
char *specifier_boot_id(char specifier, void *data, void *userdata); *ret);
char *specifier_host_name(char specifier, void *data, void *userdata); int specifier_boot_id(char specifier, void *data, void *userdata, char **re
char *specifier_kernel_release(char specifier, void *data, void *userdata); t);
int specifier_host_name(char specifier, void *data, void *userdata, char **
ret);
int specifier_kernel_release(char specifier, void *data, void *userdata, ch
ar **ret);
 End of changes. 4 change blocks. 
3 lines changed or deleted 3 lines changed or added


 strv.h   strv.h 
skipping to change at line 45 skipping to change at line 45
} }
#define _cleanup_strv_free_ _cleanup_(strv_freep) #define _cleanup_strv_free_ _cleanup_(strv_freep)
char **strv_copy(char * const *l); char **strv_copy(char * const *l);
unsigned strv_length(char * const *l) _pure_; unsigned strv_length(char * const *l) _pure_;
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);
char **strv_appendf(char **l, const char *format, ...) _printf_attr_(2, 3);
int strv_extend(char ***l, const char *value); int strv_extend(char ***l, const char *value);
int strv_push(char ***l, char *value); int strv_push(char ***l, 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_; char **strv_new(const char *x, ...) _sentinel_;
 End of changes. 1 change blocks. 
1 lines changed or deleted 0 lines changed or added


 swap.h   swap.h 
skipping to change at line 110 skipping to change at line 110
/* In order to be able to distinguish dependencies on /* In order to be able to distinguish dependencies on
different device nodes we might end up creating multiple different device nodes we might end up creating multiple
devices for the same swap. We chain them up here. */ devices for the same swap. We chain them up here. */
LIST_FIELDS(struct Swap, same_proc_swaps); LIST_FIELDS(struct Swap, same_proc_swaps);
}; };
extern const UnitVTable swap_vtable; extern const UnitVTable swap_vtable;
int swap_add_one_mount_link(Swap *s, Mount *m);
int swap_dispatch_reload(Manager *m); int swap_dispatch_reload(Manager *m);
int swap_fd_event(Manager *m, int events); int swap_fd_event(Manager *m, int events);
const char* swap_state_to_string(SwapState i) _const_; const char* swap_state_to_string(SwapState i) _const_;
SwapState swap_state_from_string(const char *s) _pure_; SwapState swap_state_from_string(const char *s) _pure_;
const char* swap_exec_command_to_string(SwapExecCommand i) _const_; const char* swap_exec_command_to_string(SwapExecCommand i) _const_;
SwapExecCommand swap_exec_command_from_string(const char *s) _pure_; SwapExecCommand swap_exec_command_from_string(const char *s) _pure_;
const char* swap_result_to_string(SwapResult i) _const_; const char* swap_result_to_string(SwapResult i) _const_;
 End of changes. 1 change blocks. 
2 lines changed or deleted 0 lines changed or added


 unit-printf.h   unit-printf.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 "unit.h" #include "unit.h"
char *unit_name_printf(Unit *u, const char* text); int unit_name_printf(Unit *u, const char* text, char **ret);
char *unit_full_printf(Unit *u, const char *text); int unit_full_printf(Unit *u, const char *text, char **ret);
char **unit_full_printf_strv(Unit *u, char **l); int unit_full_printf_strv(Unit *u, char **l, char ***ret);
 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 176 skipping to change at line 176
dual_timestamp condition_timestamp; dual_timestamp condition_timestamp;
dual_timestamp inactive_exit_timestamp; dual_timestamp inactive_exit_timestamp;
dual_timestamp active_enter_timestamp; dual_timestamp active_enter_timestamp;
dual_timestamp active_exit_timestamp; dual_timestamp active_exit_timestamp;
dual_timestamp inactive_enter_timestamp; dual_timestamp inactive_enter_timestamp;
/* Counterparts in the cgroup filesystem */ /* Counterparts in the cgroup filesystem */
char *cgroup_path; char *cgroup_path;
bool cgroup_realized;
CGroupControllerMask cgroup_mask; CGroupControllerMask cgroup_mask;
UnitRef slice; UnitRef slice;
/* Per type list */ /* Per type list */
LIST_FIELDS(Unit, units_by_type); LIST_FIELDS(Unit, units_by_type);
/* All units which have requires_mounts_for set */ /* All units which have requires_mounts_for set */
LIST_FIELDS(Unit, has_requires_mounts_for); LIST_FIELDS(Unit, has_requires_mounts_for);
skipping to change at line 258 skipping to change at line 257
bool in_dbus_queue:1; bool in_dbus_queue:1;
bool in_cleanup_queue:1; bool in_cleanup_queue:1;
bool in_gc_queue:1; bool in_gc_queue:1;
bool in_cgroup_queue:1; bool in_cgroup_queue:1;
bool sent_dbus_new_signal:1; bool sent_dbus_new_signal:1;
bool no_gc:1; bool no_gc:1;
bool in_audit:1; bool in_audit:1;
bool cgroup_realized:1;
}; };
struct UnitStatusMessageFormats { struct UnitStatusMessageFormats {
const char *starting_stopping[2]; const char *starting_stopping[2];
const char *finished_start_job[_JOB_RESULT_MAX]; const char *finished_start_job[_JOB_RESULT_MAX];
const char *finished_stop_job[_JOB_RESULT_MAX]; const char *finished_stop_job[_JOB_RESULT_MAX];
}; };
typedef enum UnitSetPropertiesMode { typedef enum UnitSetPropertiesMode {
UNIT_CHECK = 0, UNIT_CHECK = 0,
skipping to change at line 592 skipping to change at line 593
bool unit_condition_test(Unit *u); bool unit_condition_test(Unit *u);
UnitFileState unit_get_unit_file_state(Unit *u); UnitFileState unit_get_unit_file_state(Unit *u);
Unit* unit_ref_set(UnitRef *ref, Unit *u); Unit* unit_ref_set(UnitRef *ref, Unit *u);
void unit_ref_unset(UnitRef *ref); void unit_ref_unset(UnitRef *ref);
#define UNIT_DEREF(ref) ((ref).unit) #define UNIT_DEREF(ref) ((ref).unit)
#define UNIT_ISSET(ref) (!!(ref).unit) #define UNIT_ISSET(ref) (!!(ref).unit)
int unit_add_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) _pure_; ExecContext *unit_get_exec_context(Unit *u) _pure_;
CGroupContext *unit_get_cgroup_context(Unit *u) _pure_; CGroupContext *unit_get_cgroup_context(Unit *u) _pure_;
int unit_write_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *nam e, const char *data); int unit_write_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *nam e, const char *data);
int unit_write_drop_in_format(Unit *u, UnitSetPropertiesMode mode, const ch ar *name, const char *format, ...) _printf_attr_(4,5); int unit_write_drop_in_format(Unit *u, UnitSetPropertiesMode mode, const ch ar *name, const char *format, ...) _printf_attr_(4,5);
int unit_write_drop_in_private(Unit *u, UnitSetPropertiesMode mode, const c har *name, const char *data); int unit_write_drop_in_private(Unit *u, UnitSetPropertiesMode mode, const c har *name, const char *data);
int unit_write_drop_in_private_format(Unit *u, UnitSetPropertiesMode mode, const char *name, const char *format, ...) _printf_attr_(4,5); int unit_write_drop_in_private_format(Unit *u, UnitSetPropertiesMode mode, const char *name, const char *format, ...) _printf_attr_(4,5);
int unit_remove_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *na me); int unit_remove_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *na me);
int unit_kill_context(Unit *u, KillContext *c, bool sigkill, pid_t main_pid , pid_t control_pid, bool main_pid_alien); int unit_kill_context(Unit *u, KillContext *c, bool sigkill, pid_t main_pid , pid_t control_pid, bool main_pid_alien);
int unit_make_transient(Unit *u); int unit_make_transient(Unit *u);
int unit_require_mounts_for(Unit *u, const char *path);
const char *unit_active_state_to_string(UnitActiveState i) _const_; const char *unit_active_state_to_string(UnitActiveState i) _const_;
UnitActiveState unit_active_state_from_string(const char *s) _pure_; UnitActiveState unit_active_state_from_string(const char *s) _pure_;
const char *unit_dependency_to_string(UnitDependency i) _const_; const char *unit_dependency_to_string(UnitDependency i) _const_;
UnitDependency unit_dependency_from_string(const char *s) _pure_; UnitDependency unit_dependency_from_string(const char *s) _pure_;
/* Macros which append UNIT= or USER_UNIT= to the message */ /* Macros which append UNIT= or USER_UNIT= to the message */
#define log_full_unit(level, unit, ...) log_meta_object(level, __FILE__, __ LINE__, __func__, getpid() == 1 ? "UNIT=" : "USER_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__)
 End of changes. 4 change blocks. 
2 lines changed or deleted 4 lines changed or added


 utf8.h   utf8.h 
skipping to change at line 28 skipping to change at line 28
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 "macro.h" #include "macro.h"
char *utf8_is_valid(const char *s) _pure_; const char *utf8_is_valid(const char *s) _pure_;
char *ascii_is_valid(const char *s) _pure_; char *ascii_is_valid(const char *s) _pure_;
bool utf8_is_printable(const char* str, size_t length) _pure_; bool utf8_is_printable(const char* str, size_t length) _pure_;
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); char *utf16_to_utf8(const void *s, size_t length);
int utf8_encoded_valid_unichar(const char *str);
 End of changes. 3 change blocks. 
2 lines changed or deleted 1 lines changed or added


 util.h   util.h 
skipping to change at line 256 skipping to change at line 256
bool ignore_file(const char *filename) _pure_; bool ignore_file(const char *filename) _pure_;
bool chars_intersect(const char *a, const char *b) _pure_; bool chars_intersect(const char *a, const char *b) _pure_;
int make_stdio(int fd); int make_stdio(int fd);
int make_null_stdio(void); int make_null_stdio(void);
int make_console_stdio(void); int make_console_stdio(void);
unsigned long long random_ull(void); unsigned long long random_ull(void);
unsigned random_u(void);
/* For basic lookup tables with strictly enumerated entries */ /* For basic lookup tables with strictly enumerated entries */
#define __DEFINE_STRING_TABLE_LOOKUP(name,type,scope) \ #define __DEFINE_STRING_TABLE_LOOKUP(name,type,scope) \
scope const char *name##_to_string(type i) { \ scope const char *name##_to_string(type i) { \
if (i < 0 || i >= (type) ELEMENTSOF(name##_table)) \ if (i < 0 || i >= (type) ELEMENTSOF(name##_table)) \
return NULL; \ return NULL; \
return name##_table[i]; \ return name##_table[i]; \
} \ } \
scope type name##_from_string(const char *s) { \ scope type name##_from_string(const char *s) { \
type i; \ type i; \
 End of changes. 1 change blocks. 
0 lines changed or deleted 1 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/