X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftimedate%2Ftimedatectl.c;h=2267733d9126a242d06b3ac34ccd1e2d142127c9;hb=4aa2beacb1f9996f0352ec4221f8ef47ae2b7c66;hp=777a3a32e320e9410289866f739172a01614470c;hpb=ffc06c3513d9a0693c7f810d03b20705127ba55a;p=elogind.git diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c index 777a3a32e..2267733d9 100644 --- a/src/timedate/timedatectl.c +++ b/src/timedate/timedatectl.c @@ -58,6 +58,9 @@ static void polkit_agent_open_if_enabled(void) { if (!arg_ask_password) return; + if (arg_transport != BUS_TRANSPORT_LOCAL) + return; + polkit_agent_open(); } @@ -193,14 +196,14 @@ static void print_status_info(const StatusInfo *i) { static int show_status(sd_bus *bus, char **args, unsigned n) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; StatusInfo info = {}; - const struct bus_properties_map map[] = { - { "s", "Timezone", &info.timezone }, - { "b", "LocalRTC", &info.rtc_local }, - { "b", "NTP", &info.ntp_enabled }, - { "b", "CanNTP", &info.ntp_capable }, - { "b", "NTPSynchronized", &info.ntp_synced}, - { "t", "TimeUSec", &info.time }, - { "t", "RTCTimeUSec", &info.rtc_time }, + static const struct bus_properties_map map[] = { + { "Timezone", "s", NULL, offsetof(StatusInfo, timezone) }, + { "LocalRTC", "b", NULL, offsetof(StatusInfo, rtc_local) }, + { "NTP", "b", NULL, offsetof(StatusInfo, ntp_enabled) }, + { "CanNTP", "b", NULL, offsetof(StatusInfo, ntp_capable) }, + { "NTPSynchronized", "b", NULL, offsetof(StatusInfo, ntp_synced) }, + { "TimeUSec", "t", NULL, offsetof(StatusInfo, time) }, + { "RTCTimeUSec", "t", NULL, offsetof(StatusInfo, rtc_time) }, {} }; int r; @@ -210,7 +213,8 @@ static int show_status(sd_bus *bus, char **args, unsigned n) { r = bus_map_all_properties(bus, "org.freedesktop.timedate1", "/org/freedesktop/timedate1", - map); + map, + &info); if (r < 0) goto fail; @@ -409,12 +413,12 @@ static int help(void) { "Query or change system time and date settings.\n\n" " -h --help Show this help\n" " --version Show package version\n" - " --adjust-system-clock\n" - " Adjust system clock when changing local RTC mode\n" " --no-pager Do not pipe output into a pager\n" " --no-ask-password Do not prompt for password\n" " -H --host=[USER@]HOST Operate on remote host\n" - " -M --machine=CONTAINER Operate on local container\n\n" + " -M --machine=CONTAINER Operate on local container\n" + " --adjust-system-clock\n" + " Adjust system clock when changing local RTC mode\n\n" "Commands:\n" " status Show current time settings\n" " set-time TIME Set system time\n" @@ -444,7 +448,7 @@ static int parse_argv(int argc, char *argv[]) { { "machine", required_argument, NULL, 'M' }, { "no-ask-password", no_argument, NULL, ARG_NO_ASK_PASSWORD }, { "adjust-system-clock", no_argument, NULL, ARG_ADJUST_SYSTEM_CLOCK }, - { NULL, 0, NULL, 0 } + {} }; int c; @@ -457,8 +461,7 @@ static int parse_argv(int argc, char *argv[]) { switch (c) { case 'h': - help(); - return 0; + return help(); case ARG_VERSION: puts(PACKAGE_STRING); @@ -491,8 +494,7 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; default: - log_error("Unknown option code %c", c); - return -EINVAL; + assert_not_reached("Unhandled option"); } } @@ -580,33 +582,27 @@ static int timedatectl_main(sd_bus *bus, int argc, char *argv[]) { } int main(int argc, char *argv[]) { - int r, ret = EXIT_FAILURE; _cleanup_bus_unref_ sd_bus *bus = NULL; + int r; setlocale(LC_ALL, ""); log_parse_environment(); log_open(); r = parse_argv(argc, argv); - if (r < 0) - goto finish; - else if (r == 0) { - ret = EXIT_SUCCESS; + if (r <= 0) goto finish; - } r = bus_open_transport(arg_transport, arg_host, false, &bus); if (r < 0) { log_error("Failed to create bus connection: %s", strerror(-r)); - ret = EXIT_FAILURE; goto finish; } r = timedatectl_main(bus, argc, argv); - ret = r < 0 ? EXIT_FAILURE : r; finish: pager_close(); - return ret; + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; }