Re: [systemd-devel] [PATCH 2/4] Add ENVIRONMENT to hostnamed
On Tue, Jul 8, 2014 at 2:38 AM, Jóhann B. Guðmundsson johan...@gmail.com wrote: --- src/hostname/hostnamed.c | 49 +--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index 514554d..b5ed3e9 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -41,6 +41,7 @@ enum { PROP_PRETTY_HOSTNAME, PROP_ICON_NAME, PROP_CHASSIS, +PROP_ENVIRONMENT, PROP_KERNEL_NAME, PROP_KERNEL_RELEASE, PROP_KERNEL_VERSION, @@ -100,6 +101,7 @@ static int context_read_data(Context *c) { PRETTY_HOSTNAME, c-data[PROP_PRETTY_HOSTNAME], ICON_NAME, c-data[PROP_ICON_NAME], CHASSIS, c-data[PROP_CHASSIS], + ENVIRONMENT, c-data[PROP_ENVIRONMENT], NULL); if (r 0 r != -ENOENT) return r; @@ -148,6 +150,18 @@ static bool valid_chassis(const char *chassis) { chassis); } +static bool valid_environment(const char *environment) { + +assert(environment); + +return nulstr_contains( +development\0 +staging\0 +production\0, +environment); +} + + Double newline. static const char* fallback_chassis(void) { int r; char *type; @@ -257,6 +271,7 @@ static char* context_fallback_icon_name(Context *c) { return strdup(computer); } + static bool hostname_is_useful(const char *hn) { return !isempty(hn) !is_localhost(hn); } @@ -311,7 +326,8 @@ static int context_write_data_machine_info(Context *c) { static const char * const name[_PROP_MAX] = { [PROP_PRETTY_HOSTNAME] = PRETTY_HOSTNAME, [PROP_ICON_NAME] = ICON_NAME, -[PROP_CHASSIS] = CHASSIS +[PROP_CHASSIS] = CHASSIS, +[PROP_ENVIRONMENT] = ENVIRONMENT, }; _cleanup_strv_free_ char **l = NULL; @@ -323,7 +339,7 @@ static int context_write_data_machine_info(Context *c) { if (r 0 r != -ENOENT) return r; -for (p = PROP_PRETTY_HOSTNAME; p = PROP_CHASSIS; p++) { +for (p = PROP_PRETTY_HOSTNAME; p = PROP_ENVIRONMENT; p++) { char *t, **u; assert(name[p]); @@ -401,6 +417,23 @@ static int property_get_chassis( return sd_bus_message_append(reply, s, name); } +static int property_get_environment( +sd_bus *bus, +const char *path, +const char *interface, +const char *property, +sd_bus_message *reply, +void *userdata, +sd_bus_error *error) { + +Context *c = userdata; +const char *name; + +name = c-data[PROP_ENVIRONMENT]; + +return sd_bus_message_append(reply, s, name); +} + static int method_set_hostname(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus_error *error) { Context *c = userdata; const char *name; @@ -554,6 +587,8 @@ static int set_machine_info(Context *c, sd_bus *bus, sd_bus_message *m, int prop return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, Invalid pretty host name '%s', name); if (prop == PROP_CHASSIS !valid_chassis(name)) return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, Invalid chassis '%s', name); +if (prop == PROP_ENVIRONMENT !valid_environment(name)) +return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, Invalid environment '%s', name); h = strdup(name); if (!h) @@ -571,11 +606,13 @@ static int set_machine_info(Context *c, sd_bus *bus, sd_bus_message *m, int prop log_info(Changed %s to '%s', prop == PROP_PRETTY_HOSTNAME ? pretty host name : +prop == PROP_ENVIRONMENT ? environment : prop == PROP_CHASSIS ? chassis : icon name, strna(c-data[prop])); sd_bus_emit_properties_changed(bus, /org/freedesktop/hostname1, org.freedesktop.hostname1, prop == PROP_PRETTY_HOSTNAME ? PrettyHostname : - prop == PROP_CHASSIS ? Chassis : IconName, NULL); + prop == PROP_ENVIRONMENT ? Environment : + prop == PROP_CHASSIS ? Chassis : IconName , NULL); return sd_bus_reply_method_return(m, NULL); } @@ -592,6 +629,10 @@ static int method_set_chassis(sd_bus *bus, sd_bus_message *m, void *userdata, sd return
[systemd-devel] [PATCH 2/4] Add ENVIRONMENT to hostnamed
--- src/hostname/hostnamed.c | 49 +--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index 514554d..b5ed3e9 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -41,6 +41,7 @@ enum { PROP_PRETTY_HOSTNAME, PROP_ICON_NAME, PROP_CHASSIS, +PROP_ENVIRONMENT, PROP_KERNEL_NAME, PROP_KERNEL_RELEASE, PROP_KERNEL_VERSION, @@ -100,6 +101,7 @@ static int context_read_data(Context *c) { PRETTY_HOSTNAME, c-data[PROP_PRETTY_HOSTNAME], ICON_NAME, c-data[PROP_ICON_NAME], CHASSIS, c-data[PROP_CHASSIS], + ENVIRONMENT, c-data[PROP_ENVIRONMENT], NULL); if (r 0 r != -ENOENT) return r; @@ -148,6 +150,18 @@ static bool valid_chassis(const char *chassis) { chassis); } +static bool valid_environment(const char *environment) { + +assert(environment); + +return nulstr_contains( +development\0 +staging\0 +production\0, +environment); +} + + static const char* fallback_chassis(void) { int r; char *type; @@ -257,6 +271,7 @@ static char* context_fallback_icon_name(Context *c) { return strdup(computer); } + static bool hostname_is_useful(const char *hn) { return !isempty(hn) !is_localhost(hn); } @@ -311,7 +326,8 @@ static int context_write_data_machine_info(Context *c) { static const char * const name[_PROP_MAX] = { [PROP_PRETTY_HOSTNAME] = PRETTY_HOSTNAME, [PROP_ICON_NAME] = ICON_NAME, -[PROP_CHASSIS] = CHASSIS +[PROP_CHASSIS] = CHASSIS, +[PROP_ENVIRONMENT] = ENVIRONMENT, }; _cleanup_strv_free_ char **l = NULL; @@ -323,7 +339,7 @@ static int context_write_data_machine_info(Context *c) { if (r 0 r != -ENOENT) return r; -for (p = PROP_PRETTY_HOSTNAME; p = PROP_CHASSIS; p++) { +for (p = PROP_PRETTY_HOSTNAME; p = PROP_ENVIRONMENT; p++) { char *t, **u; assert(name[p]); @@ -401,6 +417,23 @@ static int property_get_chassis( return sd_bus_message_append(reply, s, name); } +static int property_get_environment( +sd_bus *bus, +const char *path, +const char *interface, +const char *property, +sd_bus_message *reply, +void *userdata, +sd_bus_error *error) { + +Context *c = userdata; +const char *name; + +name = c-data[PROP_ENVIRONMENT]; + +return sd_bus_message_append(reply, s, name); +} + static int method_set_hostname(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus_error *error) { Context *c = userdata; const char *name; @@ -554,6 +587,8 @@ static int set_machine_info(Context *c, sd_bus *bus, sd_bus_message *m, int prop return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, Invalid pretty host name '%s', name); if (prop == PROP_CHASSIS !valid_chassis(name)) return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, Invalid chassis '%s', name); +if (prop == PROP_ENVIRONMENT !valid_environment(name)) +return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, Invalid environment '%s', name); h = strdup(name); if (!h) @@ -571,11 +606,13 @@ static int set_machine_info(Context *c, sd_bus *bus, sd_bus_message *m, int prop log_info(Changed %s to '%s', prop == PROP_PRETTY_HOSTNAME ? pretty host name : +prop == PROP_ENVIRONMENT ? environment : prop == PROP_CHASSIS ? chassis : icon name, strna(c-data[prop])); sd_bus_emit_properties_changed(bus, /org/freedesktop/hostname1, org.freedesktop.hostname1, prop == PROP_PRETTY_HOSTNAME ? PrettyHostname : - prop == PROP_CHASSIS ? Chassis : IconName, NULL); + prop == PROP_ENVIRONMENT ? Environment : + prop == PROP_CHASSIS ? Chassis : IconName , NULL); return sd_bus_reply_method_return(m, NULL); } @@ -592,6 +629,10 @@ static int method_set_chassis(sd_bus *bus, sd_bus_message *m, void *userdata, sd return set_machine_info(userdata, bus, m, PROP_CHASSIS, method_set_chassis, error); } +static int method_set_environment(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus_error *error) { +return