From: Miroslav Lichvar Date: Wed, 9 Apr 2014 10:12:12 +0000 (+0200) Subject: main: add -q/-Q options to set clock/print offset once and exit X-Git-Tag: 1.30-pre1~86 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=70feea48f885b14dfaa6dc570d350cdad47dd8d2;p=thirdparty%2Fchrony.git main: add -q/-Q options to set clock/print offset once and exit --- diff --git a/chrony.texi.in b/chrony.texi.in index 255b15eb..3928e8aa 100644 --- a/chrony.texi.in +++ b/chrony.texi.in @@ -1026,6 +1026,12 @@ system clock last time the computer was on. @item -u When this option is used, chronyd will drop root privileges to the specified user. So far, it works only on Linux when compiled with capabilities support. +@item -q +When run in this mode, @code{chronyd} will set the system clock once +and exit. It will not detach from the terminal. +@item -Q +This option is similar to `-q', but it will only print the offset and +not correct the clock. @item -v This option displays @code{chronyd's} version number to the terminal and exits. diff --git a/chronyd.8.in b/chronyd.8.in index 63eaab84..5d2e3c5d 100644 --- a/chronyd.8.in +++ b/chronyd.8.in @@ -103,6 +103,14 @@ computer was on. When this option is used, chronyd will drop root privileges to the specified user. So far, it works only on Linux when compiled with capabilities support. .TP +.B \-q +When run in this mode, chronyd will set the system clock once +and exit. It will not detach from the terminal. +.TP +.B \-Q +This option is similar to \fB\-q\fR, but it will only print the offset and +not correct the clock. +.TP .B \-v This option displays \fBchronyd\fR's version number to the terminal and exits .TP diff --git a/main.c b/main.c index 825c18bf..6c6b3ee1 100644 --- a/main.c +++ b/main.c @@ -148,6 +148,12 @@ post_init_ntp_hook(void *anything) RTC_StartMeasurements(); RCL_StartRefclocks(); + + /* Special modes can end only when sources update their reachability. + Give up immediatelly if there are no sources. */ + if (ref_mode != REF_ModeNormal && !SRC_ReadNumberOfSources()) { + REF_SetUnsynchronised(); + } } /* ================================================== */ @@ -157,6 +163,8 @@ reference_mode_end(int result) { switch (ref_mode) { case REF_ModeNormal: + case REF_ModeUpdateOnce: + case REF_ModePrintOnce: exit_status = !result; SCH_QuitProgram(); break; @@ -363,6 +371,14 @@ int main debug++; nofork = 1; system_log = 0; + } else if (!strcmp("-q", *argv)) { + ref_mode = REF_ModeUpdateOnce; + nofork = 1; + system_log = 0; + } else if (!strcmp("-Q", *argv)) { + ref_mode = REF_ModePrintOnce; + nofork = 1; + system_log = 0; } else if (!strcmp("-4", *argv)) { address_family = IPADDR_INET4; } else if (!strcmp("-6", *argv)) { @@ -455,7 +471,7 @@ int main /* From now on, it is safe to do finalisation on exit */ initialised = 1; - if (CNF_GetInitSources() > 0) { + if (ref_mode == REF_ModeNormal && CNF_GetInitSources() > 0) { ref_mode = REF_ModeInitStepSlew; }