@@ -586,9 +586,14 @@ int dinit_main(int argc, char **argv)
586
586
log (loglevel_t ::NOTICE, false , " Starting system" );
587
587
}
588
588
589
- // Only try to set up the external log (via syslog) now if we aren't the system init. (If we
590
- // are the system init, wait until the log service starts, unless a logfile has been specified).
591
- if (!am_system_init || log_specified) setup_external_log ();
589
+ // If a log file was specified, open it now.
590
+ if (log_specified) {
591
+ setup_external_log ();
592
+ if (!am_system_init && !external_log_open) {
593
+ flush_log (); // flush console messages
594
+ return EXIT_FAILURE;
595
+ }
596
+ }
592
597
593
598
if (env_file != nullptr ) {
594
599
read_env_file (env_file, true , main_env, false , nullptr );
@@ -705,7 +710,7 @@ int dinit_main(int argc, char **argv)
705
710
sigprocmask (SIG_UNBLOCK, &sigwait_set_int, NULL );
706
711
}
707
712
708
- return 0 ;
713
+ return EXIT_SUCCESS ;
709
714
}
710
715
711
716
// Get user confirmation before proceeding with restarting boot sequence.
@@ -817,7 +822,8 @@ void rootfs_is_rw() noexcept
817
822
{
818
823
open_control_socket (true );
819
824
control_socket_ready ();
820
- if (!log_is_syslog) {
825
+ if (!log_is_syslog && !external_log_open) {
826
+ // Try (again) to open log file if we couldn't do so earlier.
821
827
setup_external_log ();
822
828
}
823
829
if (!did_log_boot) {
@@ -944,7 +950,7 @@ static void close_control_socket() noexcept
944
950
945
951
void setup_external_log () noexcept
946
952
{
947
- if (! external_log_open) {
953
+ if (!external_log_open) {
948
954
if (log_is_syslog) {
949
955
const char * saddrname = log_path;
950
956
size_t saddrname_len = strlen (saddrname);
@@ -1003,7 +1009,7 @@ void setup_external_log() noexcept
1003
1009
else {
1004
1010
// log failure to log? It makes more sense than first appears, because we also log
1005
1011
// to console:
1006
- log (loglevel_t ::ERROR, " Setting up log failed: " , strerror (errno));
1012
+ log (loglevel_t ::ERROR, " Opening log file failed: " , strerror (errno));
1007
1013
}
1008
1014
}
1009
1015
}
0 commit comments