From 322d54e76d5c88881d4299b6a17e02eb76dd6d8f Mon Sep 17 00:00:00 2001 From: Jose M Perez Date: Sun, 19 May 2019 22:06:36 +0200 Subject: Extra -mode flags are ignored with a warning Prior to this change, providing multiple -mode flags to erl would start the code server as 'interactive', regardless of their value ('-mode embedded -mode embedded' would start erl as in interactive mode). With this change, the extra -mode flags are ignored, and a warning gets logged. --- lib/kernel/src/code.erl | 18 ++++++++++++++++-- lib/kernel/src/kernel.erl | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) (limited to 'lib/kernel/src') diff --git a/lib/kernel/src/code.erl b/lib/kernel/src/code.erl index 7faef93609..964ede9bc9 100644 --- a/lib/kernel/src/code.erl +++ b/lib/kernel/src/code.erl @@ -19,6 +19,8 @@ %% -module(code). +-include_lib("kernel/include/logger.hrl"). + %% This is the interface module to the code server. It also contains %% some implementation details. See also related modules: code_*.erl %% in this directory. @@ -707,8 +709,20 @@ do_s(Lib) -> start_get_mode() -> case init:get_argument(mode) of - {ok,[["embedded"]]} -> - embedded; + {ok, [FirstMode | Rest]} -> + case Rest of + [] -> + ok; + _ -> + ?LOG_WARNING("Multiple -mode given to erl, using the first, ~p", + [FirstMode]) + end, + case FirstMode of + ["embedded"] -> + embedded; + _ -> + interactive + end; _ -> interactive end. diff --git a/lib/kernel/src/kernel.erl b/lib/kernel/src/kernel.erl index bfa091a036..1ca2e0fd11 100644 --- a/lib/kernel/src/kernel.erl +++ b/lib/kernel/src/kernel.erl @@ -141,7 +141,7 @@ init([]) -> modules => [logger_sup]}, case init:get_argument(mode) of - {ok, [["minimal"]]} -> + {ok, [["minimal"]|_]} -> {ok, {SupFlags, [Code, File, StdError, User, LoggerSup, Config, RefC, SafeSup]}}; _ -> -- cgit v1.2.3