bus-errors.h   bus-errors.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/>.
***/ ***/
#include <string.h>
#include <dbus/dbus.h>
#define BUS_ERROR_NO_SUCH_UNIT "org.freedesktop.systemd1.NoSuchUnit" #define BUS_ERROR_NO_SUCH_UNIT "org.freedesktop.systemd1.NoSuchUnit"
#define BUS_ERROR_NO_SUCH_JOB "org.freedesktop.systemd1.NoSuchJob" #define BUS_ERROR_NO_SUCH_JOB "org.freedesktop.systemd1.NoSuchJob"
#define BUS_ERROR_NOT_SUBSCRIBED "org.freedesktop.systemd1.NotSubscribed" #define BUS_ERROR_NOT_SUBSCRIBED "org.freedesktop.systemd1.NotSubscribed"
#define BUS_ERROR_INVALID_PATH "org.freedesktop.systemd1.InvalidPath" #define BUS_ERROR_INVALID_PATH "org.freedesktop.systemd1.InvalidPath"
#define BUS_ERROR_INVALID_NAME "org.freedesktop.systemd1.InvalidName" #define BUS_ERROR_INVALID_NAME "org.freedesktop.systemd1.InvalidName"
#define BUS_ERROR_UNIT_TYPE_MISMATCH "org.freedesktop.systemd1.UnitTypeMism atch" #define BUS_ERROR_UNIT_TYPE_MISMATCH "org.freedesktop.systemd1.UnitTypeMism atch"
#define BUS_ERROR_UNIT_EXISTS "org.freedesktop.systemd1.UnitExists" #define BUS_ERROR_UNIT_EXISTS "org.freedesktop.systemd1.UnitExists"
#define BUS_ERROR_NOT_SUPPORTED "org.freedesktop.systemd1.NotSupported" #define BUS_ERROR_NOT_SUPPORTED "org.freedesktop.systemd1.NotSupported"
#define BUS_ERROR_INVALID_JOB_MODE "org.freedesktop.systemd1.InvalidJobMode " #define BUS_ERROR_INVALID_JOB_MODE "org.freedesktop.systemd1.InvalidJobMode "
#define BUS_ERROR_ONLY_BY_DEPENDENCY "org.freedesktop.systemd1.OnlyByDepend ency" #define BUS_ERROR_ONLY_BY_DEPENDENCY "org.freedesktop.systemd1.OnlyByDepend ency"
#define BUS_ERROR_NO_ISOLATION "org.freedesktop.systemd1.NoIsolation" #define BUS_ERROR_NO_ISOLATION "org.freedesktop.systemd1.NoIsolation"
#define BUS_ERROR_LOAD_FAILED "org.freedesktop.systemd1.LoadFailed" #define BUS_ERROR_LOAD_FAILED "org.freedesktop.systemd1.LoadFailed"
#define BUS_ERROR_MASKED "org.freedesktop.systemd1.Masked" #define BUS_ERROR_MASKED "org.freedesktop.systemd1.Masked"
#define BUS_ERROR_JOB_TYPE_NOT_APPLICABLE "org.freedesktop.systemd1.JobType NotApplicable" #define BUS_ERROR_JOB_TYPE_NOT_APPLICABLE "org.freedesktop.systemd1.JobType NotApplicable"
#define BUS_ERROR_TRANSACTION_IS_DESTRUCTIVE "org.freedesktop.systemd1.Tran sactionIsDestructive" #define BUS_ERROR_TRANSACTION_IS_DESTRUCTIVE "org.freedesktop.systemd1.Tran sactionIsDestructive"
#define BUS_ERROR_TRANSACTION_JOBS_CONFLICTING "org.freedesktop.systemd1.Tr ansactionJobsConflicting" #define BUS_ERROR_TRANSACTION_JOBS_CONFLICTING "org.freedesktop.systemd1.Tr ansactionJobsConflicting"
#define BUS_ERROR_TRANSACTION_ORDER_IS_CYCLIC "org.freedesktop.systemd1.Tra nsactionOrderIsCyclic" #define BUS_ERROR_TRANSACTION_ORDER_IS_CYCLIC "org.freedesktop.systemd1.Tra nsactionOrderIsCyclic"
#define BUS_ERROR_SHUTTING_DOWN "org.freedesktop.systemd1.ShuttingDown" #define BUS_ERROR_SHUTTING_DOWN "org.freedesktop.systemd1.ShuttingDown"
#define BUS_ERROR_NO_SUCH_PROCESS "org.freedesktop.systemd1.NoSuchProcess" #define BUS_ERROR_NO_SUCH_PROCESS "org.freedesktop.systemd1.NoSuchProcess"
static inline const char *bus_error(const DBusError *e, int r) {
if (e && e->message)
return e->message;
if (r >= 0)
return strerror(r);
return strerror(-r);
}
 End of changes. 2 change blocks. 
3 lines changed or deleted 0 lines changed or added


 bus-internal.h   bus-internal.h 
skipping to change at line 84 skipping to change at line 84
BUS_AUTH_EXTERNAL, BUS_AUTH_EXTERNAL,
BUS_AUTH_ANONYMOUS BUS_AUTH_ANONYMOUS
}; };
struct sd_bus { struct sd_bus {
unsigned n_ref; unsigned n_ref;
enum bus_state state; enum bus_state state;
int input_fd, output_fd; int input_fd, output_fd;
int message_version; int message_version;
bool is_kernel:1;
bool negotiate_fds:1; bool negotiate_fds:1;
bool can_fds:1; bool can_fds:1;
bool bus_client:1; bool bus_client:1;
bool ucred_valid:1; bool ucred_valid:1;
bool is_server:1; bool is_server:1;
bool anonymous_auth:1; bool anonymous_auth:1;
bool prefer_readv:1; bool prefer_readv:1;
bool prefer_writev:1; bool prefer_writev:1;
bool processing:1; bool processing:1;
bool match_callbacks_modified:1; bool match_callbacks_modified:1;
skipping to change at line 125 skipping to change at line 126
Hashmap *object_callbacks; Hashmap *object_callbacks;
union { union {
struct sockaddr sa; struct sockaddr sa;
struct sockaddr_un un; struct sockaddr_un un;
struct sockaddr_in in; struct sockaddr_in in;
struct sockaddr_in6 in6; struct sockaddr_in6 in6;
} sockaddr; } sockaddr;
socklen_t sockaddr_size; socklen_t sockaddr_size;
char *kernel;
sd_id128_t server_id; sd_id128_t server_id;
char *address; char *address;
unsigned address_index; unsigned address_index;
int last_connect_error; int last_connect_error;
enum bus_auth auth; enum bus_auth auth;
size_t auth_rbegin; size_t auth_rbegin;
struct iovec auth_iovec[3]; struct iovec auth_iovec[3];
skipping to change at line 189 skipping to change at line 192
bool service_name_is_valid(const char *p); bool service_name_is_valid(const char *p);
bool member_name_is_valid(const char *p); bool member_name_is_valid(const char *p);
bool namespace_complex_pattern(const char *pattern, const char *value); bool namespace_complex_pattern(const char *pattern, const char *value);
bool path_complex_pattern(const char *pattern, const char *value); bool path_complex_pattern(const char *pattern, const char *value);
bool namespace_simple_pattern(const char *pattern, const char *value); bool namespace_simple_pattern(const char *pattern, const char *value);
bool path_simple_pattern(const char *pattern, const char *value); bool path_simple_pattern(const char *pattern, const char *value);
int bus_message_type_from_string(const char *s, uint8_t *u); int bus_message_type_from_string(const char *s, uint8_t *u);
const char *bus_message_type_to_string(uint8_t u);
#define error_name_is_valid interface_name_is_valid #define error_name_is_valid interface_name_is_valid
int bus_ensure_running(sd_bus *bus); int bus_ensure_running(sd_bus *bus);
int bus_start_running(sd_bus *bus); int bus_start_running(sd_bus *bus);
int bus_next_address(sd_bus *bus); int bus_next_address(sd_bus *bus);
 End of changes. 3 change blocks. 
0 lines changed or deleted 4 lines changed or added


 bus-message.h   bus-message.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/>.
***/ ***/
#include <stdbool.h> #include <stdbool.h>
#include <byteswap.h> #include <byteswap.h>
#include <sys/socket.h> #include <sys/socket.h>
#include "macro.h" #include "macro.h"
#include "sd-bus.h" #include "sd-bus.h"
#include "kdbus.h"
#include "time-util.h"
struct bus_container { struct bus_container {
char enclosing; char enclosing;
char *signature; char *signature;
unsigned index; unsigned index;
uint32_t *array_size; uint32_t *array_size;
size_t begin; size_t begin;
}; };
skipping to change at line 68 skipping to change at line 70
const char *member; const char *member;
const char *destination; const char *destination;
const char *sender; const char *sender;
sd_bus_error error; sd_bus_error error;
uid_t uid; uid_t uid;
gid_t gid; gid_t gid;
pid_t pid; pid_t pid;
pid_t tid; pid_t tid;
usec_t pid_starttime;
usec_t monotonic;
usec_t realtime;
bool sealed:1; bool sealed:1;
bool dont_send:1; bool dont_send:1;
bool allow_fds:1; bool allow_fds:1;
bool uid_valid:1; bool uid_valid:1;
bool gid_valid:1; bool gid_valid:1;
bool free_header:1; bool free_header:1;
bool free_fields:1; bool free_fields:1;
bool free_body:1; bool free_body:1;
bool free_kdbus:1;
bool free_fds:1; bool free_fds:1;
struct bus_header *header; struct bus_header *header;
void *fields; void *fields;
void *body; void *body;
struct kdbus_msg *kdbus;
char *label; char *label;
size_t rindex; size_t rindex;
uint32_t n_fds; uint32_t n_fds;
int *fds; int *fds;
struct bus_container root_container, *containers; struct bus_container root_container, *containers;
unsigned n_containers; unsigned n_containers;
struct iovec iovec[4]; struct iovec iovec[3];
unsigned n_iovec; unsigned n_iovec;
size_t size;
char *peeked_signature; char *peeked_signature;
usec_t timeout;
char sender_buffer[3 + DECIMAL_STR_MAX(uint64_t) + 1];
char destination_buffer[3 + DECIMAL_STR_MAX(uint64_t) + 1];
const char *exe;
const char *comm;
const char *tid_comm;
const char *cgroup;
const char *cmdline;
size_t cmdline_length;
char **cmdline_array;
char *session;
char *unit;
char *user_unit;
}; };
#define BUS_MESSAGE_NEED_BSWAP(m) ((m)->header->endian != SD_BUS_NATIVE_END IAN) #define BUS_MESSAGE_NEED_BSWAP(m) ((m)->header->endian != SD_BUS_NATIVE_END IAN)
static inline uint16_t BUS_MESSAGE_BSWAP16(sd_bus_message *m, uint16_t u) { static inline uint16_t BUS_MESSAGE_BSWAP16(sd_bus_message *m, uint16_t u) {
return BUS_MESSAGE_NEED_BSWAP(m) ? bswap_16(u) : u; return BUS_MESSAGE_NEED_BSWAP(m) ? bswap_16(u) : u;
} }
static inline uint32_t BUS_MESSAGE_BSWAP32(sd_bus_message *m, uint32_t u) { static inline uint32_t BUS_MESSAGE_BSWAP32(sd_bus_message *m, uint32_t u) {
return BUS_MESSAGE_NEED_BSWAP(m) ? bswap_32(u) : u; return BUS_MESSAGE_NEED_BSWAP(m) ? bswap_32(u) : u;
skipping to change at line 126 skipping to change at line 150
} }
static inline uint32_t BUS_MESSAGE_BODY_SIZE(sd_bus_message *m) { static inline uint32_t BUS_MESSAGE_BODY_SIZE(sd_bus_message *m) {
return BUS_MESSAGE_BSWAP32(m, m->header->body_size); return BUS_MESSAGE_BSWAP32(m, m->header->body_size);
} }
static inline uint32_t BUS_MESSAGE_FIELDS_SIZE(sd_bus_message *m) { static inline uint32_t BUS_MESSAGE_FIELDS_SIZE(sd_bus_message *m) {
return BUS_MESSAGE_BSWAP32(m, m->header->fields_size); return BUS_MESSAGE_BSWAP32(m, m->header->fields_size);
} }
static inline uint32_t BUS_MESSAGE_SIZE(sd_bus_message *m) {
return
sizeof(struct bus_header) +
ALIGN8(BUS_MESSAGE_FIELDS_SIZE(m)) +
BUS_MESSAGE_BODY_SIZE(m);
}
static inline void bus_message_unrefp(sd_bus_message **m) { static inline void bus_message_unrefp(sd_bus_message **m) {
sd_bus_message_unref(*m); sd_bus_message_unref(*m);
} }
#define _cleanup_bus_message_unref_ __attribute__((cleanup(bus_message_unre fp))) #define _cleanup_bus_message_unref_ __attribute__((cleanup(bus_message_unre fp)))
int bus_message_seal(sd_bus_message *m, uint64_t serial); int bus_message_seal(sd_bus_message *m, uint64_t serial);
int bus_message_dump(sd_bus_message *m); int bus_message_dump(sd_bus_message *m);
int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz); int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz);
int bus_message_read_strv_extend(sd_bus_message *m, char ***l); int bus_message_read_strv_extend(sd_bus_message *m, char ***l);
int bus_message_from_header(
void *header,
size_t length,
int *fds,
unsigned n_fds,
const struct ucred *ucred,
const char *label,
size_t extra,
sd_bus_message **ret);
int bus_message_from_malloc( int bus_message_from_malloc(
void *buffer, void *buffer,
size_t length, size_t length,
int *fds, int *fds,
unsigned n_fds, unsigned n_fds,
const struct ucred *ucred, const struct ucred *ucred,
const char *label, const char *label,
sd_bus_message **ret); sd_bus_message **ret);
const char* bus_message_get_arg(sd_bus_message *m, unsigned i); const char* bus_message_get_arg(sd_bus_message *m, unsigned i);
int bus_message_append_ap(sd_bus_message *m, const char *types, va_list ap) ; int bus_message_append_ap(sd_bus_message *m, const char *types, va_list ap) ;
int bus_message_parse_fields(sd_bus_message *m);
int bus_header_size(struct bus_header *h, size_t *sum);
 End of changes. 10 change blocks. 
2 lines changed or deleted 43 lines changed or added


 cgroup-util.h   cgroup-util.h 
skipping to change at line 47 skipping to change at line 47
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_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_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_get_by_pid(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, bool honour_sticky); int cg_rmdir(const char *controller, const char *path, bool honour_sticky);
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, const char *suffix) ;
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_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_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 sticky); int cg_set_task_access(const char *controller, const char *path, mode_t mod e, uid_t uid, gid_t gid, int sticky);
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_root_path(char **path);
int cg_get_system_path(char **path);
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_get_machine_path(char **path);
int cg_path_get_session(const char *path, char **session);
int cg_path_get_unit(const char *path, char **unit);
int cg_path_get_user_unit(const char *path, char **unit);
int cg_path_get_machine_name(const char *path, char **machine);
int cg_pid_get_path_shifted(pid_t pid, char **root, char **cgroup);
int cg_pid_get_session(pid_t pid, char **session);
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 cg_pid_get_user_unit(pid_t pid, char **unit);
int cg_pid_get_machine_name(pid_t pid, char **machine);
int cgroup_to_unit(char *cgroup, char **unit); int cg_path_decode_unit(const 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); int cg_controller_from_attr(const char *attr, char **controller);
 End of changes. 7 change blocks. 
5 lines changed or deleted 18 lines changed or added


 conf-parser.h   conf-parser.h 
skipping to change at line 27 skipping to change at line 27
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 <stdio.h> #include <stdio.h>
#include <stdbool.h> #include <stdbool.h>
#include "macro.h"
/* An abstract parser for simple, line based, shallow configuration /* An abstract parser for simple, line based, shallow configuration
* files consisting of variable assignments only. */ * files consisting of variable assignments only. */
/* Prototype for a parser for a specific configuration setting */ /* Prototype for a parser for a specific configuration setting */
typedef int (*ConfigParserCallback)( typedef int (*ConfigParserCallback)(const char *unit,
const char *filename, const char *filename,
unsigned line, unsigned line,
const char *section, const char *section,
const char *lvalue, const char *lvalue,
int ltype, int ltype,
const char *rvalue, const char *rvalue,
void *data, void *data,
void *userdata); void *userdata);
/* Wraps information for parsing a specific configuration variable, to /* Wraps information for parsing a specific configuration variable, to
* be stored in a simple array */ * be stored in a simple array */
typedef struct ConfigTableItem { typedef struct ConfigTableItem {
const char *section; /* Section */ const char *section; /* Section */
const char *lvalue; /* Name of the variable */ const char *lvalue; /* Name of the variable */
ConfigParserCallback parse; /* Function that is called to parse the variable's value */ ConfigParserCallback parse; /* Function that is called to parse the variable's value */
int ltype; /* Distinguish different variables passed to the same callback */ int ltype; /* Distinguish different variables passed to the same callback */
void *data; /* Where to store the variable's da ta */ void *data; /* Where to store the variable's da ta */
} ConfigTableItem; } ConfigTableItem;
skipping to change at line 81 skipping to change at line 83
void *userdata); void *userdata);
/* Linear table search implementation of ConfigItemLookup, based on /* Linear table search implementation of ConfigItemLookup, based on
* ConfigTableItem arrays */ * ConfigTableItem arrays */
int config_item_table_lookup(void *table, const char *section, const char * lvalue, ConfigParserCallback *func, int *ltype, void **data, void *userdata ); int config_item_table_lookup(void *table, const char *section, const char * lvalue, ConfigParserCallback *func, int *ltype, void **data, void *userdata );
/* gperf implementation of ConfigItemLookup, based on gperf /* gperf implementation of ConfigItemLookup, based on gperf
* ConfigPerfItem tables */ * ConfigPerfItem tables */
int config_item_perf_lookup(void *table, const char *section, const char *l value, ConfigParserCallback *func, int *ltype, void **data, void *userdata) ; int config_item_perf_lookup(void *table, const char *section, const char *l value, ConfigParserCallback *func, int *ltype, void **data, void *userdata) ;
int config_parse( int config_parse(const char *unit,
const char *filename, const char *filename,
FILE *f, FILE *f,
const char *sections, /* nulstr */ const char *sections, /* nulstr */
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 int config_parse_int(const char *unit, const char *filename, unsigned line,
on, const char *lvalue, int ltype, const char *rvalue, void *data, void *us const char *section, const char *lvalue, int ltype, const char *rvalue, vo
erdata); id *data, void *userdata);
int config_parse_unsigned(const char *filename, unsigned line, const char * int config_parse_unsigned(const char *unit, const char *filename, unsigned
section, const char *lvalue, int ltype, const char *rvalue, void *data, voi line, const char *section, const char *lvalue, int ltype, const char *rvalu
d *userdata); e, void *data, void *userdata);
int config_parse_long(const char *filename, unsigned line, const char *sect int config_parse_long(const char *unit, const char *filename, unsigned line
ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u , const char *section, const char *lvalue, int ltype, const char *rvalue, v
serdata); oid *data, void *userdata);
int config_parse_uint64(const char *filename, unsigned line, const char *se int config_parse_uint64(const char *unit, const char *filename, unsigned li
ction, const char *lvalue, int ltype, const char *rvalue, void *data, void ne, const char *section, const char *lvalue, int ltype, const char *rvalue,
*userdata); void *data, void *userdata);
int config_parse_double(const char *filename, unsigned line, const char *se int config_parse_double(const char *unit, const char *filename, unsigned li
ction, const char *lvalue, int ltype, const char *rvalue, void *data, void ne, const char *section, const char *lvalue, int ltype, const char *rvalue,
*userdata); void *data, void *userdata);
int config_parse_bytes_size(const char *filename, unsigned line, const char int config_parse_bytes_size(const char *unit, const char *filename, unsigne
*section, const char *lvalue, int ltype, const char *rvalue, void *data, v d line, const char *section, const char *lvalue, int ltype, const char *rva
oid *userdata); lue, void *data, void *userdata);
int config_parse_bytes_off(const char *filename, unsigned line, const char int config_parse_bytes_off(const char *unit, const char *filename, unsigned
*section, const char *lvalue, int ltype, const char *rvalue, void *data, vo line, const char *section, const char *lvalue, int ltype, const char *rval
id *userdata); ue, void *data, void *userdata);
int config_parse_bool(const char *filename, unsigned line, const char *sect int config_parse_bool(const char *unit, const char *filename, unsigned line
ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u , const char *section, const char *lvalue, int ltype, const char *rvalue, v
serdata); oid *data, void *userdata);
int config_parse_tristate(const char *filename, unsigned line, const char * int config_parse_tristate(const char *unit, const char *filename, unsigned
section, const char *lvalue, int ltype, const char *rvalue, void *data, voi line, const char *section, const char *lvalue, int ltype, const char *rvalu
d *userdata); e, void *data, void *userdata);
int config_parse_string(const char *filename, unsigned line, const char *se int config_parse_string(const char *unit, const char *filename, unsigned li
ction, const char *lvalue, int ltype, const char *rvalue, void *data, void ne, const char *section, const char *lvalue, int ltype, const char *rvalue,
*userdata); void *data, void *userdata);
int config_parse_path(const char *filename, unsigned line, const char *sect int config_parse_path(const char *unit, const char *filename, unsigned line
ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u , const char *section, const char *lvalue, int ltype, const char *rvalue, v
serdata); oid *data, void *userdata);
int config_parse_strv(const char *filename, unsigned line, const char *sect int config_parse_strv(const char *unit, const char *filename, unsigned line
ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u , const char *section, const char *lvalue, int ltype, const char *rvalue, v
serdata); oid *data, void *userdata);
int config_parse_path_strv(const char *filename, unsigned line, const char int config_parse_path_strv(const char *unit, const char *filename, unsigned
*section, const char *lvalue, int ltype, const char *rvalue, void *data, vo line, const char *section, const char *lvalue, int ltype, const char *rval
id *userdata); ue, void *data, void *userdata);
int config_parse_sec(const char *filename, unsigned line, const char *secti int config_parse_sec(const char *unit, const char *filename, unsigned line,
on, const char *lvalue, int ltype, const char *rvalue, void *data, void *us const char *section, const char *lvalue, int ltype, const char *rvalue, vo
erdata); id *data, void *userdata);
int config_parse_nsec(const char *filename, unsigned line, const char *sect int config_parse_nsec(const char *unit, const char *filename, unsigned line
ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u , const char *section, const char *lvalue, int ltype, const char *rvalue, v
serdata); oid *data, void *userdata);
int config_parse_mode(const char *filename, unsigned line, const char *sect int config_parse_mode(const char *unit, const char *filename, unsigned line
ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u , const char *section, const char *lvalue, int ltype, const char *rvalue, v
serdata); oid *data, void *userdata);
int config_parse_facility(const char *filename, unsigned line, const char * int config_parse_facility(const char *unit, const char *filename, unsigned
section, const char *lvalue, int ltype, const char *rvalue, void *data, voi line, const char *section, const char *lvalue, int ltype, const char *rvalu
d *userdata); e, void *data, void *userdata);
int config_parse_level(const char *filename, unsigned line, const char *sec int config_parse_level(const char *unit, const char *filename, unsigned lin
tion, const char *lvalue, int ltype, const char *rvalue, void *data, void * e, const char *section, const char *lvalue, int ltype, const char *rvalue,
userdata); void *data, void *userdata);
int config_parse_set_status(const char *filename, unsigned line, const char int config_parse_set_status(const char *unit, const char *filename, unsigne
*section, const char *lvalue, int ltype, const char *rvalue, void *data, v d line, const char *section, const char *lvalue, int ltype, const char *rva
oid *userdata); lue, void *data, void *userdata);
int log_syntax_internal(const char *unit, int level,
const char *file, unsigned line, const char *func,
const char *config_file, unsigned config_line,
int error, const char *format, ...) _printf_attr_(9
, 10);
#define log_syntax(unit, level, config_file, config_line, error, ...) \
log_syntax_internal(unit, level, \
__FILE__, __LINE__, __func__, \
config_file, config_line, \
error, __VA_ARGS__)
#define DEFINE_CONFIG_PARSE_ENUM(function,name,type,msg) \ #define DEFINE_CONFIG_PARSE_ENUM(function,name,type,msg) \
int function( \ int function(const char *unit, \
const char *filename, \ const char *filename, \
unsigned line, \ unsigned line, \
const char *section, \ const char *section, \
const char *lvalue, \ const char *lvalue, \
int ltype, \ int ltype, \
const char *rvalue, \ const char *rvalue, \
void *data, \ void *data, \
void *userdata) { \ void *userdata) { \
\ \
type *i = data, x; \ type *i = data, x; \
\ \
assert(filename); \ assert(filename); \
assert(lvalue); \ assert(lvalue); \
assert(rvalue); \ assert(rvalue); \
assert(data); \ assert(data); \
\ \
if ((x = name##_from_string(rvalue)) < 0) { \ if ((x = name##_from_string(rvalue)) < 0) { \
log_error("[%s:%u] " msg ", ignoring: %s", filename log_syntax(unit, LOG_ERR, filename, line, -x, \
, line, rvalue); \ msg ", ignoring: %s", rvalue); \
return 0; \ return 0; \
} \ } \
\ \
*i = x; \ *i = x; \
\
return 0; \ return 0; \
} }
 End of changes. 7 change blocks. 
86 lines changed or deleted 99 lines changed or added


 config.h   config.h 
skipping to change at line 215 skipping to change at line 215
/* Define to 1 if you have the <sys/time.h> header file. */ /* Define to 1 if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H 1 #define HAVE_SYS_TIME_H 1
/* Define to 1 if you have the <sys/types.h> header file. */ /* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1 #define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> header file. */ /* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1 #define HAVE_UNISTD_H 1
/* Define to 1 if you have the <valgrind/memcheck.h> header file. */
#define HAVE_VALGRIND_MEMCHECK_H 1
/* XATTR available */ /* XATTR available */
#define HAVE_XATTR 1 #define HAVE_XATTR 1
/* Define if XZ is available */ /* Define if XZ is available */
#define HAVE_XZ 1 #define HAVE_XZ 1
/* Define to 1 if you have the `__secure_getenv' function. */ /* Define to 1 if you have the `__secure_getenv' function. */
#define HAVE___SECURE_GETENV 1 #define HAVE___SECURE_GETENV 1
/* Path of loadkeys */ /* Path of loadkeys */
skipping to change at line 247 skipping to change at line 250
/* 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 201" #define PACKAGE_STRING "systemd 202"
/* 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 "201" #define PACKAGE_VERSION "202"
/* 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 307 skipping to change at line 310
/* 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 "201" #define VERSION "202"
/* 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 6 lines changed or added


 dbus-common.h   dbus-common.h 
skipping to change at line 95 skipping to change at line 95
"org.freedesktop.DBus.Peer\0" "org.freedesktop.DBus.Peer\0"
int bus_check_peercred(DBusConnection *c); int bus_check_peercred(DBusConnection *c);
int bus_connect(DBusBusType t, DBusConnection **_bus, bool *private_bus, DB usError *error); int bus_connect(DBusBusType t, DBusConnection **_bus, bool *private_bus, DB usError *error);
int bus_connect_system_ssh(const char *user, const char *host, DBusConnecti on **_bus, DBusError *error); int bus_connect_system_ssh(const char *user, const char *host, DBusConnecti on **_bus, DBusError *error);
int bus_connect_system_polkit(DBusConnection **_bus, DBusError *error); int bus_connect_system_polkit(DBusConnection **_bus, DBusError *error);
const char *bus_error_message(const DBusError *error); const char *bus_error_message(const DBusError *error);
const char *bus_error_message_or_strerror(const DBusError *error, int err); const char *bus_error(const DBusError *e, int r);
typedef int (*BusPropertyCallback)(DBusMessageIter *iter, const char *prope rty, void *data); typedef int (*BusPropertyCallback)(DBusMessageIter *iter, const char *prope rty, void *data);
typedef int (*BusPropertySetCallback)(DBusMessageIter *iter, const char *pr operty, void *data); typedef int (*BusPropertySetCallback)(DBusMessageIter *iter, const char *pr operty, void *data);
typedef struct BusProperty { typedef struct BusProperty {
const char *property; /* name of the property */ const char *property; /* name of the property */
BusPropertyCallback append; /* Function that is called to seri alize this property */ BusPropertyCallback append; /* Function that is called to seri alize this property */
const char *signature; const char *signature;
const uint16_t offset; /* Offset from BusBoundProperties: :base address to the property data. const uint16_t offset; /* Offset from BusBoundProperties: :base address to the property data.
* uint16_t is sufficient, because we have no structs too big. * uint16_t is sufficient, because we have no structs too big.
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 env-util.h   env-util.h 
skipping to change at line 33 skipping to change at line 33
#include <stdbool.h> #include <stdbool.h>
#include <sys/types.h> #include <sys/types.h>
bool env_name_is_valid(const char *e); bool env_name_is_valid(const char *e);
bool env_value_is_valid(const char *e); bool env_value_is_valid(const char *e);
bool env_assignment_is_valid(const char *e); bool env_assignment_is_valid(const char *e);
bool strv_env_is_valid(char **e); bool strv_env_is_valid(char **e);
char **strv_env_clean(char **l); char **strv_env_clean(char **l);
char **strv_env_clean_log(char **e, const char *message);
bool strv_env_name_or_assignment_is_valid(char **l); bool strv_env_name_or_assignment_is_valid(char **l);
char **strv_env_merge(unsigned n_lists, ...); char **strv_env_merge(unsigned n_lists, ...);
char **strv_env_delete(char **x, unsigned n_lists, ...); /* New copy */ char **strv_env_delete(char **x, unsigned n_lists, ...); /* New copy */
char **strv_env_set(char **x, const char *p); /* New copy ... */ char **strv_env_set(char **x, const char *p); /* New copy ... */
char **strv_env_unset(char **l, const char *p); /* In place ... */ char **strv_env_unset(char **l, const char *p); /* In place ... */
char *strv_env_get_n(char **l, const char *name, size_t k); char *strv_env_get_n(char **l, const char *name, size_t k);
 End of changes. 1 change blocks. 
0 lines changed or deleted 1 lines changed or added


 id128-constants.h   id128-constants.h 
skipping to change at line 31 skipping to change at line 31
add_id(m, "SD_MESSAGE_UNIT_RELOADING", SD_MESSAGE_UNIT_RELOADING) JOINER add_id(m, "SD_MESSAGE_UNIT_RELOADING", SD_MESSAGE_UNIT_RELOADING) JOINER
add_id(m, "SD_MESSAGE_UNIT_RELOADED", SD_MESSAGE_UNIT_RELOADED) JOINER add_id(m, "SD_MESSAGE_UNIT_RELOADED", SD_MESSAGE_UNIT_RELOADED) JOINER
add_id(m, "SD_MESSAGE_SPAWN_FAILED", SD_MESSAGE_SPAWN_FAILED) JOINER add_id(m, "SD_MESSAGE_SPAWN_FAILED", SD_MESSAGE_SPAWN_FAILED) JOINER
add_id(m, "SD_MESSAGE_FORWARD_SYSLOG_MISSED", SD_MESSAGE_FORWARD_SYSLOG_MIS SED) JOINER add_id(m, "SD_MESSAGE_FORWARD_SYSLOG_MISSED", SD_MESSAGE_FORWARD_SYSLOG_MIS SED) JOINER
add_id(m, "SD_MESSAGE_OVERMOUNTING", SD_MESSAGE_OVERMOUNTING) JOINER add_id(m, "SD_MESSAGE_OVERMOUNTING", SD_MESSAGE_OVERMOUNTING) JOINER
add_id(m, "SD_MESSAGE_LID_OPENED", SD_MESSAGE_LID_OPENED) JOINER add_id(m, "SD_MESSAGE_LID_OPENED", SD_MESSAGE_LID_OPENED) JOINER
add_id(m, "SD_MESSAGE_LID_CLOSED", SD_MESSAGE_LID_CLOSED) JOINER add_id(m, "SD_MESSAGE_LID_CLOSED", SD_MESSAGE_LID_CLOSED) JOINER
add_id(m, "SD_MESSAGE_POWER_KEY", SD_MESSAGE_POWER_KEY) JOINER add_id(m, "SD_MESSAGE_POWER_KEY", SD_MESSAGE_POWER_KEY) JOINER
add_id(m, "SD_MESSAGE_SUSPEND_KEY", SD_MESSAGE_SUSPEND_KEY) JOINER add_id(m, "SD_MESSAGE_SUSPEND_KEY", SD_MESSAGE_SUSPEND_KEY) JOINER
add_id(m, "SD_MESSAGE_HIBERNATE_KEY", SD_MESSAGE_HIBERNATE_KEY) JOINER add_id(m, "SD_MESSAGE_HIBERNATE_KEY", SD_MESSAGE_HIBERNATE_KEY) JOINER
add_id(m, "SD_MESSAGE_CONFIG_ERROR", SD_MESSAGE_CONFIG_ERROR) JOINER
add_id(m, "SD_MESSAGE_BOOTCHART", SD_MESSAGE_BOOTCHART) JOINER
 End of changes. 1 change blocks. 
0 lines changed or deleted 0 lines changed or added


 journal-internal.h   journal-internal.h 
skipping to change at line 116 skipping to change at line 116
Location current_location; Location current_location;
JournalFile *current_file; JournalFile *current_file;
uint64_t current_field; uint64_t current_field;
Hashmap *directories_by_path; Hashmap *directories_by_path;
Hashmap *directories_by_wd; Hashmap *directories_by_wd;
int inotify_fd; int inotify_fd;
Match *level0, *level1; Match *level0, *level1, *level2;
unsigned current_invalidate_counter, last_invalidate_counter; unsigned current_invalidate_counter, last_invalidate_counter;
char *unique_field; char *unique_field;
JournalFile *unique_file; JournalFile *unique_file;
uint64_t unique_offset; uint64_t unique_offset;
bool on_network; bool on_network;
size_t data_threshold; size_t data_threshold;
Set *errors; Set *errors;
usec_t last_process_usec; usec_t last_process_usec;
}; };
char *journal_make_match_string(sd_journal *j); char *journal_make_match_string(sd_journal *j);
void journal_print_header(sd_journal *j); void journal_print_header(sd_journal *j);
static inline void journal_closep(sd_journal **j) {
sd_journal_close(*j);
}
#define _cleanup_journal_close_ _cleanup_(journal_closep)
 End of changes. 2 change blocks. 
1 lines changed or deleted 1 lines changed or added


 journald-server.h   journald-server.h 
skipping to change at line 138 skipping to change at line 138
#define N_IOVEC_META_FIELDS 17 #define N_IOVEC_META_FIELDS 17
#define N_IOVEC_KERNEL_FIELDS 64 #define N_IOVEC_KERNEL_FIELDS 64
#define N_IOVEC_UDEV_FIELDS 32 #define N_IOVEC_UDEV_FIELDS 32
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); 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);
void server_driver_message(Server *s, sd_id128_t message_id, const char *fo rmat, ...); void server_driver_message(Server *s, sd_id128_t message_id, const char *fo rmat, ...);
/* 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);
int config_parse_storage(const char *filename, unsigned line, const char *s ection, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_storage(const char *unit, const char *filename, unsigned l ine, const char *section, const char *lvalue, int ltype, const char *rvalue , void *data, void *userdata);
const char *storage_to_string(Storage s); const char *storage_to_string(Storage s);
Storage storage_from_string(const char *s); Storage storage_from_string(const char *s);
int config_parse_split_mode(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, v oid *userdata); int config_parse_split_mode(const char *unit, const char *filename, unsigne d line, const char *section, const char *lvalue, int ltype, const char *rva lue, void *data, void *userdata);
const char *split_mode_to_string(SplitMode s); const char *split_mode_to_string(SplitMode s);
SplitMode split_mode_from_string(const char *s); SplitMode split_mode_from_string(const char *s);
void server_fix_perms(Server *s, JournalFile *f, uid_t uid); void server_fix_perms(Server *s, JournalFile *f, uid_t uid);
bool shall_try_append_again(JournalFile *f, int r); bool shall_try_append_again(JournalFile *f, int r);
int server_init(Server *s); int server_init(Server *s);
void server_done(Server *s); void server_done(Server *s);
void server_sync(Server *s); void server_sync(Server *s);
void server_vacuum(Server *s); void server_vacuum(Server *s);
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 load-fragment.h   load-fragment.h 
skipping to change at line 32 skipping to change at line 32
***/ ***/
#include "unit.h" #include "unit.h"
/* Read service data from .desktop file style configuration fragments */ /* Read service data from .desktop file style configuration fragments */
int unit_load_fragment(Unit *u); int unit_load_fragment(Unit *u);
void unit_dump_config_items(FILE *f); void unit_dump_config_items(FILE *f);
int config_parse_warn_compat(const char *filename, unsigned line, const cha int config_parse_warn_compat(const char *unit, const char *filename, unsign
r *section, const char *lvalue, int ltype, const char *rvalue, void *data, ed line, const char *section, const char *lvalue, int ltype, const char *rv
void *userdata); alue, void *data, void *userdata);
int config_parse_unit_deps(const char *filename, unsigned line, const char int config_parse_unit_deps(const char *unit, const char *filename, unsigned
*section, const char *lvalue, int ltype, const char *rvalue, void *data, vo line, const char *section, const char *lvalue, int ltype, const char *rval
id *userdata); ue, void *data, void *userdata);
int config_parse_unit_string_printf(const char *filename, unsigned line, co int config_parse_unit_string_printf(const char *unit, const char *filename,
nst char *section, const char *lvalue, int ltype, const char *rvalue, void unsigned line, const char *section, const char *lvalue, int ltype, const c
*data, void *userdata); har *rvalue, void *data, void *userdata);
int config_parse_unit_strv_printf(const char *filename, unsigned line, cons int config_parse_unit_strv_printf(const char *unit, const char *filename, u
t char *section, const char *lvalue, int ltype, const char *rvalue, void *d nsigned line, const char *section, const char *lvalue, int ltype, const cha
ata, void *userdata); r *rvalue, void *data, void *userdata);
int config_parse_unit_path_printf(const char *filename, unsigned line, cons int config_parse_unit_path_printf(const char *unit, const char *filename, u
t char *section, const char *lvalue, int ltype, const char *rvalue, void *d nsigned line, const char *section, const char *lvalue, int ltype, const cha
ata, void *userdata); r *rvalue, void *data, void *userdata);
int config_parse_documentation(const char *filename, unsigned line, const c int config_parse_documentation(const char *unit, const char *filename, unsi
har *section, const char *lvalue, int ltype, const char *rvalue, void *data gned line, const char *section, const char *lvalue, int ltype, const char *
, void *userdata); rvalue, void *data, void *userdata);
int config_parse_socket_listen(const char *filename, unsigned line, const c int config_parse_socket_listen(const char *unit, const char *filename, unsi
har *section, const char *lvalue, int ltype, const char *rvalue, void *data gned line, const char *section, const char *lvalue, int ltype, const char *
, void *userdata); rvalue, void *data, void *userdata);
int config_parse_socket_bind(const char *filename, unsigned line, const cha int config_parse_socket_bind(const char *unit, const char *filename, unsign
r *section, const char *lvalue, int ltype, const char *rvalue, void *data, ed line, const char *section, const char *lvalue, int ltype, const char *rv
void *userdata); alue, void *data, void *userdata);
int config_parse_exec_nice(const char *filename, unsigned line, const char int config_parse_exec_nice(const char *unit, const char *filename, unsigned
*section, const char *lvalue, int ltype, const char *rvalue, void *data, vo line, const char *section, const char *lvalue, int ltype, const char *rval
id *userdata); ue, void *data, void *userdata);
int config_parse_exec_oom_score_adjust(const char *filename, unsigned line, int config_parse_exec_oom_score_adjust(const char *unit, const char *filena
const char *section, const char *lvalue, int ltype, const char *rvalue, vo me, unsigned line, const char *section, const char *lvalue, int ltype, cons
id *data, void *userdata); t char *rvalue, void *data, void *userdata);
int config_parse_exec(const char *filename, unsigned line, const char *sect int config_parse_exec(const char *unit, const char *filename, unsigned line
ion, const char *lvalue, int ltype, const char *rvalue, void *data, void *u , const char *section, const char *lvalue, int ltype, const char *rvalue, v
serdata); oid *data, void *userdata);
int config_parse_service_timeout(const char *filename, unsigned line, const int config_parse_service_timeout(const char *unit, const char *filename, un
char *section, const char *lvalue, int ltype, const char *rvalue, void *da signed line, const char *section, const char *lvalue, int ltype, const char
ta, void *userdata); *rvalue, void *data, void *userdata);
int config_parse_service_type(const char *filename, unsigned line, const ch int config_parse_service_type(const char *unit, const char *filename, unsig
ar *section, const char *lvalue, int ltype, const char *rvalue, void *data, ned line, const char *section, const char *lvalue, int ltype, const char *r
void *userdata); value, void *data, void *userdata);
int config_parse_service_restart(const char *filename, unsigned line, const int config_parse_service_restart(const char *unit, const char *filename, un
char *section, const char *lvalue, int ltype, const char *rvalue, void *da signed line, const char *section, const char *lvalue, int ltype, const char
ta, void *userdata); *rvalue, void *data, void *userdata);
int config_parse_socket_bindtodevice(const char *filename, unsigned line, c int config_parse_socket_bindtodevice(const char *unit, const char *filename
onst char *section, const char *lvalue, int ltype, const char *rvalue, void , unsigned line, const char *section, const char *lvalue, int ltype, const
*data, void *userdata); char *rvalue, void *data, void *userdata);
int config_parse_output(const char *filename, unsigned line, const char *se int config_parse_output(const char *unit, const char *filename, unsigned li
ction, const char *lvalue, int ltype, const char *rvalue, void *data, void ne, const char *section, const char *lvalue, int ltype, const char *rvalue,
*userdata); void *data, void *userdata);
int config_parse_input(const char *filename, unsigned line, const char *sec int config_parse_input(const char *unit, const char *filename, unsigned lin
tion, const char *lvalue, int ltype, const char *rvalue, void *data, void * e, const char *section, const char *lvalue, int ltype, const char *rvalue,
userdata); void *data, void *userdata);
int config_parse_exec_io_class(const char *filename, unsigned line, const c int config_parse_exec_io_class(const char *unit, const char *filename, unsi
har *section, const char *lvalue, int ltype, const char *rvalue, void *data gned line, const char *section, const char *lvalue, int ltype, const char *
, void *userdata); rvalue, void *data, void *userdata);
int config_parse_exec_io_priority(const char *filename, unsigned line, cons int config_parse_exec_io_priority(const char *unit, const char *filename, u
t char *section, const char *lvalue, int ltype, const char *rvalue, void *d nsigned line, const char *section, const char *lvalue, int ltype, const cha
ata, void *userdata); r *rvalue, void *data, void *userdata);
int config_parse_exec_cpu_sched_policy(const char *filename, unsigned line, int config_parse_exec_cpu_sched_policy(const char *unit, const char *filena
const char *section, const char *lvalue, int ltype, const char *rvalue, vo me, unsigned line, const char *section, const char *lvalue, int ltype, cons
id *data, void *userdata); t char *rvalue, void *data, void *userdata);
int config_parse_exec_cpu_sched_prio(const char *filename, unsigned line, c int config_parse_exec_cpu_sched_prio(const char *unit, const char *filename
onst char *section, const char *lvalue, int ltype, const char *rvalue, void , unsigned line, const char *section, const char *lvalue, int ltype, const
*data, void *userdata); char *rvalue, void *data, void *userdata);
int config_parse_exec_cpu_affinity(const char *filename, unsigned line, con int config_parse_exec_cpu_affinity(const char *unit, const char *filename,
st char *section, const char *lvalue, int ltype, const char *rvalue, void * unsigned line, const char *section, const char *lvalue, int ltype, const ch
data, void *userdata); ar *rvalue, void *data, void *userdata);
int config_parse_exec_capabilities(const char *filename, unsigned line, con int config_parse_exec_capabilities(const char *unit, const char *filename,
st char *section, const char *lvalue, int ltype, const char *rvalue, void * unsigned line, const char *section, const char *lvalue, int ltype, const ch
data, void *userdata); ar *rvalue, void *data, void *userdata);
int config_parse_exec_secure_bits(const char *filename, unsigned line, cons int config_parse_exec_secure_bits(const char *unit, const char *filename, u
t char *section, const char *lvalue, int ltype, const char *rvalue, void *d nsigned line, const char *section, const char *lvalue, int ltype, const cha
ata, void *userdata); r *rvalue, void *data, void *userdata);
int config_parse_bounding_set(const char *filename, unsigned line, const ch int config_parse_bounding_set(const char *unit, const char *filename, unsig
ar *section, const char *lvalue, int ltype, const char *rvalue, void *data, ned line, const char *section, const char *lvalue, int ltype, const char *r
void *userdata); value, void *data, void *userdata);
int config_parse_limit(const char *filename, unsigned line, const char *sec int config_parse_limit(const char *unit, const char *filename, unsigned lin
tion, const char *lvalue, int ltype, const char *rvalue, void *data, void * e, const char *section, const char *lvalue, int ltype, const char *rvalue,
userdata); void *data, void *userdata);
int config_parse_unit_cgroup(const char *filename, unsigned line, const cha int config_parse_unit_cgroup(const char *unit, const char *filename, unsign
r *section, const char *lvalue, int ltype, const char *rvalue, void *data, ed line, const char *section, const char *lvalue, int ltype, const char *rv
void *userdata); alue, void *data, void *userdata);
int config_parse_sysv_priority(const char *filename, unsigned line, const c int config_parse_sysv_priority(const char *unit, const char *filename, unsi
har *section, const char *lvalue, int ltype, const char *rvalue, void *data gned line, const char *section, const char *lvalue, int ltype, const char *
, void *userdata); rvalue, void *data, void *userdata);
int config_parse_fsck_passno(const char *filename, unsigned line, const cha int config_parse_fsck_passno(const char *unit, const char *filename, unsign
r *section, const char *lvalue, int ltype, const char *rvalue, void *data, ed line, const char *section, const char *lvalue, int ltype, const char *rv
void *userdata); alue, void *data, void *userdata);
int config_parse_kill_signal(const char *filename, unsigned line, const cha int config_parse_kill_signal(const char *unit, const char *filename, unsign
r *section, const char *lvalue, int ltype, const char *rvalue, void *data, ed line, const char *section, const char *lvalue, int ltype, const char *rv
void *userdata); alue, void *data, void *userdata);
int config_parse_exec_mount_flags(const char *filename, unsigned line, cons int config_parse_exec_mount_flags(const char *unit, const char *filename, u
t char *section, const char *lvalue, int ltype, const char *rvalue, void *d nsigned line, const char *section, const char *lvalue, int ltype, const cha
ata, void *userdata); r *rvalue, void *data, void *userdata);
int config_parse_timer(const char *filename, unsigned line, const char *sec int config_parse_timer(const char *unit, const char *filename, unsigned lin
tion, const char *lvalue, int ltype, const char *rvalue, void *data, void * e, const char *section, const char *lvalue, int ltype, const char *rvalue,
userdata); void *data, void *userdata);
int config_parse_timer_unit(const char *filename, unsigned line, const char int config_parse_timer_unit(const char *unit, const char *filename, unsigne
*section, const char *lvalue, int ltype, const char *rvalue, void *data, v d line, const char *section, const char *lvalue, int ltype, const char *rva
oid *userdata); lue, void *data, void *userdata);
int config_parse_path_spec(const char *filename, unsigned line, const char int config_parse_path_spec(const char *unit, const char *filename, unsigned
*section, const char *lvalue, int ltype, const char *rvalue, void *data, vo line, const char *section, const char *lvalue, int ltype, const char *rval
id *userdata); ue, void *data, void *userdata);
int config_parse_path_unit(const char *filename, unsigned line, const char int config_parse_path_unit(const char *unit, const char *filename, unsigned
*section, const char *lvalue, int ltype, const char *rvalue, void *data, vo line, const char *section, const char *lvalue, int ltype, const char *rval
id *userdata); ue, void *data, void *userdata);
int config_parse_socket_service(const char *filename, unsigned line, const int config_parse_socket_service(const char *unit, const char *filename, uns
char *section, const char *lvalue, int ltype, const char *rvalue, void *dat igned line, const char *section, const char *lvalue, int ltype, const char
a, void *userdata); *rvalue, void *data, void *userdata);
int config_parse_service_sockets(const char *filename, unsigned line, const int config_parse_service_sockets(const char *unit, const char *filename, un
char *section, const char *lvalue, int ltype, const char *rvalue, void *da signed line, const char *section, const char *lvalue, int ltype, const char
ta, void *userdata); *rvalue, void *data, void *userdata);
int config_parse_unit_env_file(const char *filename, unsigned line, const c int config_parse_unit_env_file(const char *unit, const char *filename, unsi
har *section, const char *lvalue, int ltype, const char *rvalue, void *data gned line, const char *section, const char *lvalue, int ltype, const char *
, void *userdata); rvalue, void *data, void *userdata);
int config_parse_ip_tos(const char *filename, unsigned line, const char *se int config_parse_ip_tos(const char *unit, const char *filename, unsigned li
ction, const char *lvalue, int ltype, const char *rvalue, void *data, void ne, const char *section, const char *lvalue, int ltype, const char *rvalue,
*userdata); void *data, void *userdata);
int config_parse_unit_condition_path(const char *filename, unsigned line, c int config_parse_unit_condition_path(const char *unit, const char *filename
onst char *section, const char *lvalue, int ltype, const char *rvalue, void , unsigned line, const char *section, const char *lvalue, int ltype, const
*data, void *userdata); char *rvalue, void *data, void *userdata);
int config_parse_unit_condition_string(const char *filename, unsigned line, int config_parse_unit_condition_string(const char *unit, const char *filena
const char *section, const char *lvalue, int ltype, const char *rvalue, vo me, unsigned line, const char *section, const char *lvalue, int ltype, cons
id *data, void *userdata); t char *rvalue, void *data, void *userdata);
int config_parse_unit_condition_null(const char *filename, unsigned line, c int config_parse_unit_condition_null(const char *unit, const char *filename
onst char *section, const char *lvalue, int ltype, const char *rvalue, void , unsigned line, const char *section, const char *lvalue, int ltype, const
*data, void *userdata); char *rvalue, void *data, void *userdata);
int config_parse_kill_mode(const char *filename, unsigned line, const char int config_parse_kill_mode(const char *unit, const char *filename, unsigned
*section, const char *lvalue, int ltype, const char *rvalue, void *data, vo line, const char *section, const char *lvalue, int ltype, const char *rval
id *userdata); ue, void *data, void *userdata);
int config_parse_notify_access(const char *filename, unsigned line, const c int config_parse_notify_access(const char *unit, const char *filename, unsi
har *section, const char *lvalue, int ltype, const char *rvalue, void *data gned line, const char *section, const char *lvalue, int ltype, const char *
, void *userdata); rvalue, void *data, void *userdata);
int config_parse_start_limit_action(const char *filename, unsigned line, co int config_parse_start_limit_action(const char *unit, const char *filename,
nst char *section, const char *lvalue, int ltype, const char *rvalue, void unsigned line, const char *section, const char *lvalue, int ltype, const c
*data, void *userdata); har *rvalue, void *data, void *userdata);
int config_parse_unit_cgroup_attr(const char *filename, unsigned line, cons int config_parse_unit_cgroup_attr(const char *unit, const char *filename, u
t char *section, const char *lvalue, int ltype, const char *rvalue, void *d nsigned line, const char *section, const char *lvalue, int ltype, const cha
ata, void *userdata); r *rvalue, void *data, void *userdata);
int config_parse_unit_cgroup_attr_pretty(const char *filename, unsigned lin int config_parse_unit_cgroup_attr_pretty(const char *unit, const char *file
e, const char *section, const char *lvalue, int ltype, const char *rvalue, name, unsigned line, const char *section, const char *lvalue, int ltype, co
void *data, void *userdata); nst char *rvalue, void *data, void *userdata);
int config_parse_unit_requires_mounts_for(const char *filename, unsigned li int config_parse_unit_requires_mounts_for(const char *unit, const char *fil
ne, const char *section, const char *lvalue, int ltype, const char *rvalue, ename, unsigned line, const char *section, const char *lvalue, int ltype, c
void *data, void *userdata); onst char *rvalue, void *data, void *userdata);
int config_parse_syscall_filter(const char *filename, unsigned line, const int config_parse_syscall_filter(const char *unit, const char *filename, uns
char *section, const char *lvalue, int ltype, const char *rvalue, void *dat igned line, const char *section, const char *lvalue, int ltype, const char
a, void *userdata); *rvalue, void *data, void *userdata);
int config_parse_environ(const char *filename, unsigned line, const char *s int config_parse_environ(const char *unit, const char *filename, unsigned l
ection, const char *lvalue, int ltype, const char *rvalue, void *data, void ine, const char *section, const char *lvalue, int ltype, const char *rvalue
*userdata); , 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. 1 change blocks. 
150 lines changed or deleted 150 lines changed or added


 logind-action.h   logind-action.h 
skipping to change at line 52 skipping to change at line 52
int manager_handle_action( int manager_handle_action(
Manager *m, Manager *m,
InhibitWhat inhibit_key, InhibitWhat inhibit_key,
HandleAction handle, HandleAction handle,
bool ignore_inhibited, bool ignore_inhibited,
bool is_edge); bool is_edge);
const char* handle_action_to_string(HandleAction h); const char* handle_action_to_string(HandleAction h);
HandleAction handle_action_from_string(const char *s); HandleAction handle_action_from_string(const char *s);
int config_parse_handle_action(const char *filename, unsigned line, const c har *section, const char *lvalue, int ltype, const char *rvalue, void *data , void *userdata); int config_parse_handle_action(const char *unit, const char *filename, unsi gned line, const char *section, const char *lvalue, int ltype, const char * rvalue, void *data, void *userdata);
#endif #endif
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 logind-session.h   logind-session.h 
skipping to change at line 40 skipping to change at line 40
#include "logind-user.h" #include "logind-user.h"
typedef enum SessionState { typedef enum SessionState {
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 processes still remain */ SESSION_CLOSING, /* Logged out, but processes still remain */
_SESSION_STATE_MAX, _SESSION_STATE_MAX,
_SESSION_STATE_INVALID = -1 _SESSION_STATE_INVALID = -1
} SessionState; } SessionState;
typedef enum SessionType {
SESSION_UNSPECIFIED,
SESSION_TTY,
SESSION_X11,
_SESSION_TYPE_MAX,
_SESSION_TYPE_INVALID = -1
} SessionType;
typedef enum SessionClass { typedef enum SessionClass {
SESSION_USER, SESSION_USER,
SESSION_GREETER, SESSION_GREETER,
SESSION_LOCK_SCREEN, SESSION_LOCK_SCREEN,
SESSION_BACKGROUND,
_SESSION_CLASS_MAX, _SESSION_CLASS_MAX,
_SESSION_CLASS_INVALID = -1 _SESSION_CLASS_INVALID = -1
} SessionClass; } SessionClass;
typedef enum SessionType {
SESSION_UNSPECIFIED,
SESSION_TTY,
SESSION_X11,
_SESSION_TYPE_MAX,
_SESSION_TYPE_INVALID = -1
} SessionType;
typedef enum KillWho { typedef enum KillWho {
KILL_LEADER, KILL_LEADER,
KILL_ALL, KILL_ALL,
_KILL_WHO_MAX, _KILL_WHO_MAX,
_KILL_WHO_INVALID = -1 _KILL_WHO_INVALID = -1
} KillWho; } KillWho;
struct Session { struct Session {
Manager *manager; Manager *manager;
 End of changes. 3 change blocks. 
8 lines changed or deleted 9 lines changed or added


 macro.h   macro.h 
skipping to change at line 48 skipping to change at line 48
#define _packed_ __attribute__ ((packed)) #define _packed_ __attribute__ ((packed))
#define _malloc_ __attribute__ ((malloc)) #define _malloc_ __attribute__ ((malloc))
#define _weak_ __attribute__ ((weak)) #define _weak_ __attribute__ ((weak))
#define _likely_(x) (__builtin_expect(!!(x),1)) #define _likely_(x) (__builtin_expect(!!(x),1))
#define _unlikely_(x) (__builtin_expect(!!(x),0)) #define _unlikely_(x) (__builtin_expect(!!(x),0))
#define _public_ __attribute__ ((visibility("default"))) #define _public_ __attribute__ ((visibility("default")))
#define _hidden_ __attribute__ ((visibility("hidden"))) #define _hidden_ __attribute__ ((visibility("hidden")))
#define _weakref_(x) __attribute__((weakref(#x))) #define _weakref_(x) __attribute__((weakref(#x)))
#define _introspect_(x) __attribute__((section("introspect." x))) #define _introspect_(x) __attribute__((section("introspect." x)))
#define _alignas_(x) __attribute__((aligned(__alignof(x)))) #define _alignas_(x) __attribute__((aligned(__alignof(x))))
#define _cleanup_(x) __attribute__((cleanup(x)))
/* automake test harness */ /* automake test harness */
#define EXIT_TEST_SKIP 77 #define EXIT_TEST_SKIP 77
#define XSTRINGIFY(x) #x #define XSTRINGIFY(x) #x
#define STRINGIFY(x) XSTRINGIFY(x) #define STRINGIFY(x) XSTRINGIFY(x)
/* Rounds up */ /* Rounds up */
#define ALIGN(l) ALIGN_TO((l), sizeof(void*))
#define ALIGN4(l) (((l) + 3) & ~3)
#define ALIGN8(l) (((l) + 7) & ~7)
#if __SIZEOF_POINTER__ == 8
#define ALIGN(l) ALIGN8(l)
#elif __SIZEOF_POINTER__ == 4
#define ALIGN(l) ALIGN4(l)
#else
#error "Wut? Pointers are neither 4 nor 8 bytes long?"
#endif
#define ALIGN_PTR(p) ((void*) ALIGN((unsigned long) p))
#define ALIGN4_PTR(p) ((void*) ALIGN4((unsigned long) p))
#define ALIGN8_PTR(p) ((void*) ALIGN8((unsigned long) p))
static inline size_t ALIGN_TO(size_t l, size_t ali) { static inline size_t ALIGN_TO(size_t l, size_t ali) {
return ((l + ali - 1) & ~(ali - 1)); return ((l + ali - 1) & ~(ali - 1));
} }
#define ALIGN_TO_PTR(p, ali) ((void*) ALIGN_TO((unsigned long) p))
#define ELEMENTSOF(x) (sizeof(x)/sizeof((x)[0])) #define ELEMENTSOF(x) (sizeof(x)/sizeof((x)[0]))
/* /*
* container_of - cast a member of a structure out to the containing struct ure * container_of - cast a member of a structure out to the containing struct ure
* @ptr: the pointer to the member. * @ptr: the pointer to the member.
* @type: the type of the container struct this is embedded in. * @type: the type of the container struct this is embedded in.
* @member: the name of the member within the struct. * @member: the name of the member within the struct.
* *
*/ */
#define container_of(ptr, type, member) \ #define container_of(ptr, type, member) \
skipping to change at line 204 skipping to change at line 222
sub = MIN(i[j].iov_len, k); sub = MIN(i[j].iov_len, k);
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_fclose_ __attribute__((cleanup(fclosep)))
#define _cleanup_pclose_ __attribute__((cleanup(pclosep)))
#define _cleanup_close_ __attribute__((cleanup(closep)))
#define _cleanup_closedir_ __attribute__((cleanup(closedirp)))
#define _cleanup_umask_ __attribute__((cleanup(umaskp)))
#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_journal_close_ __attribute__((cleanup(journal_closep)))
#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) { \
(void) va_arg(ap, void*); \ (void) va_arg(ap, void*); \
continue; \ continue; \
 End of changes. 4 change blocks. 
12 lines changed or deleted 19 lines changed or added


 namespace.h   namespace.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>
typedef struct ExecContext ExecContext;
int setup_tmpdirs(char **tmp_dir, char **var_tmp_dir); int setup_tmpdirs(char **tmp_dir, char **var_tmp_dir);
int setup_namespace(char **read_write_dirs, int setup_namespace(char **read_write_dirs,
char **read_only_dirs, char **read_only_dirs,
char **inaccessible_dirs, char **inaccessible_dirs,
char *tmp_dir, char *tmp_dir,
char *var_tmp_dir, char *var_tmp_dir,
bool private_tmp, bool private_tmp,
unsigned mount_flags); unsigned mount_flags);
 End of changes. 1 change blocks. 
2 lines changed or deleted 0 lines changed or added


 path-util.h   path-util.h 
skipping to change at line 43 skipping to change at line 43
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_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);
 End of changes. 1 change blocks. 
0 lines changed or deleted 0 lines changed or added


 sd-bus-protocol.h   sd-bus-protocol.h 
skipping to change at line 69 skipping to change at line 69
SD_BUS_TYPE_ARRAY = 'a', SD_BUS_TYPE_ARRAY = 'a',
SD_BUS_TYPE_VARIANT = 'v', SD_BUS_TYPE_VARIANT = 'v',
SD_BUS_TYPE_STRUCT = 'r', /* not actually used in signatu res */ SD_BUS_TYPE_STRUCT = 'r', /* not actually used in signatu res */
SD_BUS_TYPE_STRUCT_BEGIN = '(', SD_BUS_TYPE_STRUCT_BEGIN = '(',
SD_BUS_TYPE_STRUCT_END = ')', SD_BUS_TYPE_STRUCT_END = ')',
SD_BUS_TYPE_DICT_ENTRY = 'e', /* not actually used in signatu res */ SD_BUS_TYPE_DICT_ENTRY = 'e', /* not actually used in signatu res */
SD_BUS_TYPE_DICT_ENTRY_BEGIN = '{', SD_BUS_TYPE_DICT_ENTRY_BEGIN = '{',
SD_BUS_TYPE_DICT_ENTRY_END = '}', SD_BUS_TYPE_DICT_ENTRY_END = '}',
}; };
/* Endianess */ /* Endianness */
enum { enum {
_SD_BUS_INVALID_ENDIAN = 0, _SD_BUS_INVALID_ENDIAN = 0,
SD_BUS_LITTLE_ENDIAN = 'l', SD_BUS_LITTLE_ENDIAN = 'l',
SD_BUS_BIG_ENDIAN = 'B', SD_BUS_BIG_ENDIAN = 'B',
#if __BYTE_ORDER == __BIG_ENDIAN #if __BYTE_ORDER == __BIG_ENDIAN
SD_BUS_NATIVE_ENDIAN = SD_BUS_BIG_ENDIAN, SD_BUS_NATIVE_ENDIAN = SD_BUS_BIG_ENDIAN,
SD_BUS_REVERSE_ENDIAN = SD_BUS_LITTLE_ENDIAN SD_BUS_REVERSE_ENDIAN = SD_BUS_LITTLE_ENDIAN
#else #else
SD_BUS_NATIVE_ENDIAN = SD_BUS_LITTLE_ENDIAN, SD_BUS_NATIVE_ENDIAN = SD_BUS_LITTLE_ENDIAN,
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 sd-bus.h   sd-bus.h 
skipping to change at line 36 skipping to change at line 36
#include <sys/types.h> #include <sys/types.h>
#include <sd-id128.h> #include <sd-id128.h>
#include "sd-bus-protocol.h" #include "sd-bus-protocol.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/* TODO: /* TODO:
* - rewrite message_read_ap() and message_append_ap() to be non-recursive.
*
* - add page donation logic * - add page donation logic
* - api for appending/reading fixed arrays * - api for appending/reading fixed arrays
* - merge busctl into systemctl or so? * - merge busctl into systemctl or so?
* - default policy (allow uid == 0 and our own uid) * - default policy (allow uid == 0 and our own uid)
*
* - enforce alignment of pointers passed in
* - negotiation for attach attributes
*/ */
typedef struct sd_bus sd_bus; typedef struct sd_bus sd_bus;
typedef struct sd_bus_message sd_bus_message; typedef struct sd_bus_message sd_bus_message;
typedef struct { typedef struct {
const char *name; const char *name;
const char *message; const char *message;
int need_free; int need_free;
} sd_bus_error; } sd_bus_error;
skipping to change at line 125 skipping to change at line 126
int sd_bus_message_get_reply_serial(sd_bus_message *m, uint64_t *serial); int sd_bus_message_get_reply_serial(sd_bus_message *m, uint64_t *serial);
int sd_bus_message_get_no_reply(sd_bus_message *m); int sd_bus_message_get_no_reply(sd_bus_message *m);
const char *sd_bus_message_get_path(sd_bus_message *m); const char *sd_bus_message_get_path(sd_bus_message *m);
const char *sd_bus_message_get_interface(sd_bus_message *m); const char *sd_bus_message_get_interface(sd_bus_message *m);
const char *sd_bus_message_get_member(sd_bus_message *m); const char *sd_bus_message_get_member(sd_bus_message *m);
const char *sd_bus_message_get_destination(sd_bus_message *m); const char *sd_bus_message_get_destination(sd_bus_message *m);
const char *sd_bus_message_get_sender(sd_bus_message *m); const char *sd_bus_message_get_sender(sd_bus_message *m);
const sd_bus_error *sd_bus_message_get_error(sd_bus_message *m); const sd_bus_error *sd_bus_message_get_error(sd_bus_message *m);
int sd_bus_message_get_monotonic_timestamp(sd_bus_message *m, uint64_t *use
c);
int sd_bus_message_get_realtime_timestamp(sd_bus_message *m, uint64_t *usec
);
int sd_bus_message_get_uid(sd_bus_message *m, uid_t *uid); int sd_bus_message_get_uid(sd_bus_message *m, uid_t *uid);
int sd_bus_message_get_gid(sd_bus_message *m, gid_t *gid); int sd_bus_message_get_gid(sd_bus_message *m, gid_t *gid);
int sd_bus_message_get_pid(sd_bus_message *m, pid_t *pid); int sd_bus_message_get_pid(sd_bus_message *m, pid_t *pid);
int sd_bus_message_get_tid(sd_bus_message *m, pid_t *tid); int sd_bus_message_get_tid(sd_bus_message *m, pid_t *tid);
const char *sd_bus_message_get_label(sd_bus_message *m); int sd_bus_message_get_pid_starttime(sd_bus_message *m, uint64_t *usec);
int sd_bus_message_get_selinux_context(sd_bus_message *m, const char **r);
int sd_bus_message_get_comm(sd_bus_message *m, const char **r);
int sd_bus_message_get_tid_comm(sd_bus_message *m, const char **r);
int sd_bus_message_get_exe(sd_bus_message *m, const char **r);
int sd_bus_message_get_cgroup(sd_bus_message *m, const char **r);
int sd_bus_message_get_cmdline(sd_bus_message *m, char ***cmdline);
int sd_bus_message_get_unit(sd_bus_message *m, const char **unit);
int sd_bus_message_get_user_unit(sd_bus_message *m, const char **unit);
int sd_bus_message_get_session(sd_bus_message *m, const char **session);
int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, cons t char *member); int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, cons t char *member);
int sd_bus_message_is_method_call(sd_bus_message *m, const char *interface, const char *member); int sd_bus_message_is_method_call(sd_bus_message *m, const char *interface, const char *member);
int sd_bus_message_is_method_error(sd_bus_message *m, const char *name); int sd_bus_message_is_method_error(sd_bus_message *m, const char *name);
int sd_bus_message_set_no_reply(sd_bus_message *m, int b); int sd_bus_message_set_no_reply(sd_bus_message *m, int b);
int sd_bus_message_set_destination(sd_bus_message *m, const char *destinati on); int sd_bus_message_set_destination(sd_bus_message *m, const char *destinati on);
int sd_bus_message_append(sd_bus_message *m, const char *types, ...); int sd_bus_message_append(sd_bus_message *m, const char *types, ...);
int sd_bus_message_append_basic(sd_bus_message *m, char type, const void *p ); int sd_bus_message_append_basic(sd_bus_message *m, char type, const void *p );
 End of changes. 4 change blocks. 
3 lines changed or deleted 17 lines changed or added


 sd-journal.h   sd-journal.h 
skipping to change at line 109 skipping to change at line 109
int sd_journal_set_data_threshold(sd_journal *j, size_t sz); int sd_journal_set_data_threshold(sd_journal *j, size_t sz);
int sd_journal_get_data_threshold(sd_journal *j, size_t *sz); int sd_journal_get_data_threshold(sd_journal *j, size_t *sz);
int sd_journal_get_data(sd_journal *j, const char *field, const void **data , size_t *l); int sd_journal_get_data(sd_journal *j, const char *field, const void **data , size_t *l);
int sd_journal_enumerate_data(sd_journal *j, const void **data, size_t *l); int sd_journal_enumerate_data(sd_journal *j, const void **data, size_t *l);
void sd_journal_restart_data(sd_journal *j); void sd_journal_restart_data(sd_journal *j);
int sd_journal_add_match(sd_journal *j, const void *data, size_t size); int sd_journal_add_match(sd_journal *j, const void *data, size_t size);
int sd_journal_add_disjunction(sd_journal *j); int sd_journal_add_disjunction(sd_journal *j);
int sd_journal_add_conjunction(sd_journal *j);
void sd_journal_flush_matches(sd_journal *j); void sd_journal_flush_matches(sd_journal *j);
int sd_journal_seek_head(sd_journal *j); int sd_journal_seek_head(sd_journal *j);
int sd_journal_seek_tail(sd_journal *j); int sd_journal_seek_tail(sd_journal *j);
int sd_journal_seek_monotonic_usec(sd_journal *j, sd_id128_t boot_id, uint6 4_t usec); int sd_journal_seek_monotonic_usec(sd_journal *j, sd_id128_t boot_id, uint6 4_t usec);
int sd_journal_seek_realtime_usec(sd_journal *j, uint64_t usec); int sd_journal_seek_realtime_usec(sd_journal *j, uint64_t usec);
int sd_journal_seek_cursor(sd_journal *j, const char *cursor); int sd_journal_seek_cursor(sd_journal *j, const char *cursor);
int sd_journal_get_cursor(sd_journal *j, char **cursor); int sd_journal_get_cursor(sd_journal *j, char **cursor);
int sd_journal_test_cursor(sd_journal *j, const char *cursor); int sd_journal_test_cursor(sd_journal *j, const char *cursor);
 End of changes. 1 change blocks. 
0 lines changed or deleted 1 lines changed or added


 sd-login.h   sd-login.h 
skipping to change at line 65 skipping to change at line 65
* user. */ * user. */
int sd_pid_get_session(pid_t pid, char **session); int sd_pid_get_session(pid_t pid, char **session);
/* Get UID of the owner of the session of the PID (or in case the /* Get UID of the owner of the session of the PID (or in case the
* process is a 'shared' user process the UID of that user is * process is a 'shared' user process the UID of that user is
* returned). This will not return the UID of the process, but rather * returned). This will not return the UID of the process, but rather
* the UID of the owner of the cgroup the process is in. This will * the UID of the owner of the cgroup the process is in. This will
* return an error for system processes. */ * return an error for system processes. */
int sd_pid_get_owner_uid(pid_t pid, uid_t *uid); int sd_pid_get_owner_uid(pid_t pid, uid_t *uid);
/* Get systemd unit (i.e. service) name from PID. This will return an /* Get systemd unit (i.e. service) name from PID, for system
* error for non-service processes. */ * services. This will return an error for non-service processes. */
int sd_pid_get_unit(pid_t, char **unit); int sd_pid_get_unit(pid_t pid, char **unit);
/* Get systemd unit (i.e. service) name from PID, for user
* services. This will return an error for non-user-service
* processes. */
int sd_pid_get_user_unit(pid_t pid, char **unit);
/* Get machine name from PID, for processes assigned to VM or
* container. This will return an error for non-service processes. */
int sd_pid_get_machine_name(pid_t pid, char **name);
/* Get state from uid. Possible states: offline, lingering, online, active, closing */ /* Get state from uid. Possible states: offline, lingering, online, active, closing */
int sd_uid_get_state(uid_t uid, char**state); int sd_uid_get_state(uid_t uid, char**state);
/* Return 1 if uid has session on seat. If require_active is true will /* Return 1 if uid has session on seat. If require_active is true will
* look for active sessions only. */ * look for active sessions only. */
int sd_uid_is_on_seat(uid_t uid, int require_active, const char *seat); int sd_uid_is_on_seat(uid_t uid, int require_active, const char *seat);
/* Return sessions of user. If require_active is true will look for /* Return sessions of user. If require_active is true will look for
* active sessions only. Returns number of sessions as return * active sessions only. Returns number of sessions as return
 End of changes. 1 change blocks. 
3 lines changed or deleted 12 lines changed or added


 sd-messages.h   sd-messages.h 
skipping to change at line 76 skipping to change at line 76
#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_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_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_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_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) #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)
#define SD_MESSAGE_CONFIG_ERROR SD_ID128_MAKE(c7,72,d2,4e,9a,88,4c,be,b
9,ea,12,62,5c,30,6c,01)
#define SD_MESSAGE_BOOTCHART SD_ID128_MAKE(9f,26,aa,56,2c,f4,40,c2,b
1,6c,77,3d,04,79,b5,18)
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
 End of changes. 1 change blocks. 
0 lines changed or deleted 6 lines changed or added


 set.h   set.h 
skipping to change at line 80 skipping to change at line 80
void* set_first(Set *s); void* set_first(Set *s);
void* set_last(Set *s); void* set_last(Set *s);
char **set_get_strv(Set *s); char **set_get_strv(Set *s);
#define SET_FOREACH(e, s, i) \ #define SET_FOREACH(e, s, i) \
for ((i) = ITERATOR_FIRST, (e) = set_iterate((s), &(i)); (e); (e) = set_iterate((s), &(i))) for ((i) = ITERATOR_FIRST, (e) = set_iterate((s), &(i)); (e); (e) = set_iterate((s), &(i)))
#define SET_FOREACH_BACKWARDS(e, s, i) \ #define SET_FOREACH_BACKWARDS(e, s, i) \
for ((i) = ITERATOR_LAST, (e) = set_iterate_backwards((s), &(i)); ( e); (e) = set_iterate_backwards((s), &(i))) for ((i) = ITERATOR_LAST, (e) = set_iterate_backwards((s), &(i)); ( e); (e) = set_iterate_backwards((s), &(i)))
#define _cleanup_set_free_ _cleanup_(set_freep)
#define _cleanup_set_free_free_ _cleanup_(set_free_freep)
 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 37 skipping to change at line 37
#include "macro.h" #include "macro.h"
char *strv_find(char **l, const char *name); char *strv_find(char **l, const char *name);
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);
static inline void strv_freep(char ***l) { static inline void strv_freep(char ***l) {
strv_free(*l); strv_free(*l);
} }
#define _cleanup_strv_free_ _cleanup_(strv_freep)
char **strv_copy(char * const *l) _malloc_; char **strv_copy(char * const *l) _malloc_;
unsigned strv_length(char * const *l); unsigned strv_length(char * const *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); 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);
 End of changes. 1 change blocks. 
0 lines changed or deleted 2 lines changed or added


 syscall-list.h   syscall-list.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/>.
***/ ***/
#if defined __x86_64__ && defined __ILP32__ #if defined __x86_64__ && defined __ILP32__
/* The x32 ABI defines all of its syscalls with bit 30 set, which causes /* 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. issues when attempting to use syscalls as simple indices into an array.
Instead, use the syscall id & ~SYSCALL_MASK as the index, and | the Instead, use the syscall id & ~SYSCALL_MASK as the index, and | the
internal id with the syscall mask as needed. internal id with the syscall mask as needed.
*/ */
#include <asm/unistd.h> #include <asm/unistd.h>
#define SYSCALL_TO_INDEX(x) ((x) & ~__X32_SYSCALL_BIT) #define SYSCALL_TO_INDEX(x) ((x) & ~__X32_SYSCALL_BIT)
#define INDEX_TO_SYSCALL(x) ((x) | __X32_SYSCALL_BIT) #define INDEX_TO_SYSCALL(x) ((x) | __X32_SYSCALL_BIT)
#else #else
#define SYSCALL_TO_INDEX(x) (x) #define SYSCALL_TO_INDEX(x) (x)
#define INDEX_TO_SYSCALL(x) (x) #define INDEX_TO_SYSCALL(x) (x)
#endif #endif
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 unit.h   unit.h 
skipping to change at line 572 skipping to change at line 572
int unit_remove_drop_in(Unit *u, bool runtime, const char *name); 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); 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);
/* 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__)
#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__) #define log_struct_unit(level, unit, ...) log_struct(level, getpid() == 1 ? "UNIT=%s" : "USER_UNIT=%s", unit, __VA_ARGS__)
 End of changes. 1 change blocks. 
0 lines changed or deleted 2 lines changed or added


 util.h   util.h 
skipping to change at line 41 skipping to change at line 41
#include <signal.h> #include <signal.h>
#include <sched.h> #include <sched.h>
#include <limits.h> #include <limits.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <dirent.h> #include <dirent.h>
#include <sys/resource.h> #include <sys/resource.h>
#include <stddef.h> #include <stddef.h>
#include <unistd.h> #include <unistd.h>
#include <systemd/sd-journal.h>
#include "macro.h" #include "macro.h"
#include "time-util.h" #include "time-util.h"
union dirent_storage { union dirent_storage {
struct dirent de; struct dirent de;
uint8_t storage[offsetof(struct dirent, d_name) + uint8_t storage[offsetof(struct dirent, d_name) +
((NAME_MAX + 1 + sizeof(long)) & ~(sizeof(long) - 1 ))]; ((NAME_MAX + 1 + sizeof(long)) & ~(sizeof(long) - 1 ))];
}; };
/* 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 "#;"
#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_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_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"
skipping to change at line 530 skipping to change at line 529
bool in_initrd(void); bool in_initrd(void);
void warn_melody(void); void warn_melody(void);
int get_home_dir(char **ret); int get_home_dir(char **ret);
static inline void freep(void *p) { static inline void freep(void *p) {
free(*(void**) p); free(*(void**) p);
} }
void fclosep(FILE **f); static inline void fclosep(FILE **f) {
void pclosep(FILE **f); if (*f)
void closep(int *fd); fclose(*f);
void closedirp(DIR **d); }
static inline void umaskp(mode_t *u) {
umask(*u); static inline void pclosep(FILE **f) {
if (*f)
pclose(*f);
}
static inline void closep(int *fd) {
if (*fd >= 0)
close_nointr_nofail(*fd);
} }
static inline void journal_closep(sd_journal **j) { static inline void closedirp(DIR **d) {
sd_journal_close(*j); if (*d)
closedir(*d);
} }
#define _cleanup_globfree_ __attribute__((cleanup(globfree))) static inline void umaskp(mode_t *u) {
umask(*u);
}
#define _cleanup_free_ _cleanup_(freep)
#define _cleanup_fclose_ _cleanup_(fclosep)
#define _cleanup_pclose_ _cleanup_(pclosep)
#define _cleanup_close_ _cleanup_(closep)
#define _cleanup_closedir_ _cleanup_(closedirp)
#define _cleanup_umask_ _cleanup_(umaskp)
#define _cleanup_globfree_ _cleanup_(globfree)
_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))
skipping to change at line 611 skipping to change at line 628
if (errno > 0) { \ if (errno > 0) { \
on_error; \ on_error; \
} \ } \
break; \ break; \
} else if (ignore_file((de)->d_name)) \ } else if (ignore_file((de)->d_name)) \
continue; \ continue; \
else else
static inline void *mempset(void *s, int c, size_t n) { static inline void *mempset(void *s, int c, size_t n) {
memset(s, c, n); memset(s, c, n);
return (char*)s + n; return (uint8_t*)s + n;
} }
char *hexmem(const void *p, size_t l); char *hexmem(const void *p, size_t l);
void *unhexmem(const char *p, size_t l); void *unhexmem(const char *p, size_t l);
char *strextend(char **x, ...); char *strextend(char **x, ...);
char *strrep(const char *s, unsigned n); char *strrep(const char *s, unsigned n);
void* greedy_realloc(void **p, size_t *allocated, size_t need); void* greedy_realloc(void **p, size_t *allocated, size_t need);
#define GREEDY_REALLOC(array, allocated, need) \
greedy_realloc((void**) &(array), &(allocated), sizeof((array)[0])
* (need))
static inline void _reset_errno_(int *saved_errno) { static inline void _reset_errno_(int *saved_errno) {
errno = *saved_errno; errno = *saved_errno;
} }
#define PROTECT_ERRNO __attribute__((cleanup(_reset_errno_))) int _saved_er rno_ = errno #define PROTECT_ERRNO __attribute__((cleanup(_reset_errno_))) int _saved_er rno_ = errno
struct umask_struct { struct umask_struct {
mode_t mask; mode_t mask;
bool quit; bool quit;
skipping to change at line 650 skipping to change at line 669
_saved_umask_.quit = true) _saved_umask_.quit = true)
static inline unsigned u64log2(uint64_t n) { static inline unsigned u64log2(uint64_t n) {
return (n > 1) ? __builtin_clzll(n) ^ 63U : 0; return (n > 1) ? __builtin_clzll(n) ^ 63U : 0;
} }
static inline bool logind_running(void) { static inline bool logind_running(void) {
return access("/run/systemd/seats/", F_OK) >= 0; return access("/run/systemd/seats/", F_OK) >= 0;
} }
#define DECIMAL_STR_WIDTH(x) \
({ \
typeof(x) _x_ = (x); \
unsigned ans = 1; \
while (_x_ /= 10) \
ans++; \
ans; \
})
int unlink_noerrno(const char *path); int unlink_noerrno(const char *path);
#define alloca0(n) \
({ \
char *_new_; \
size_t _len_ = n; \
_new_ = alloca(_len_); \
(void *) memset(_new_, 0, _len_); \
})
#define strappenda(a, b) \
({ \
const char *_a_ = (a), *_b_ = (b); \
char *_c_; \
size_t _x_, _y_; \
_x_ = strlen(_a_); \
_y_ = strlen(_b_); \
_c_ = alloca(_x_ + _y_ + 1); \
strcpy(stpcpy(_c_, _a_), _b_); \
_c_; \
})
 End of changes. 9 change blocks. 
12 lines changed or deleted 41 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/