hwclock: improve default function handling

Removes long default function test. Instead handle the
default when the options are parsed.

Also fixes the non-linux build failure reported by Rudi:
http://marc.info/?l=util-linux-ng&m=149189833115871

Reported-by: Ruediger Meier <ruediger.meier@ga-group.nl>
Signed-off-by: J William Piggott <elseifthen@gmx.com>
This commit is contained in:
J William Piggott 2017-04-16 19:10:48 -04:00
parent d9f90f697c
commit 8b73ff9633

View file

@ -1301,7 +1301,7 @@ static void usage(const struct hwclock_control *ctl, const char *fmt, ...)
*/
int main(int argc, char **argv)
{
struct hwclock_control ctl = { NULL };
struct hwclock_control ctl = { .show = 1 }; /* default op is show */
struct timeval startup_time;
struct adjtime adjtime = { 0 };
struct timespec when = { 0 };
@ -1411,28 +1411,34 @@ int main(int argc, char **argv)
break;
case 'a':
ctl.adjust = 1;
ctl.show = 0;
break;
case 'r':
ctl.show = 1;
break;
case 's':
ctl.hctosys = 1;
ctl.show = 0;
break;
case 'u':
ctl.utc = 1;
break;
case 'w':
ctl.systohc = 1;
ctl.show = 0;
break;
case OPT_SET:
ctl.set = 1;
ctl.show = 0;
break;
#ifdef __linux__
case OPT_GETEPOCH:
ctl.getepoch = 1;
ctl.show = 0;
break;
case OPT_SETEPOCH:
ctl.setepoch = 1;
ctl.show = 0;
break;
#endif
case OPT_NOADJFILE:
@ -1459,12 +1465,15 @@ int main(int argc, char **argv)
break;
case OPT_SYSTZ:
ctl.systz = 1; /* --systz */
ctl.show = 0;
break;
case OPT_PREDICT_HC:
ctl.predict = 1; /* --predict-hc */
ctl.show = 0;
break;
case OPT_GET:
ctl.get = 1; /* --get */
ctl.show = 0;
break;
case OPT_UPDATE:
ctl.update = 1; /* --update-drift */
@ -1519,11 +1528,6 @@ int main(int argc, char **argv)
}
}
if (!(ctl.show | ctl.set | ctl.systohc | ctl.hctosys |
ctl.systz | ctl.adjust | ctl.getepoch | ctl.setepoch |
ctl.predict | ctl.get))
ctl.show = 1; /* default to show */
#ifdef __linux__
if (ctl.getepoch || ctl.setepoch) {
manipulate_epoch(&ctl);