# HG changeset patch # User John W. Eaton # Date 1363727187 14400 # Node ID bef822a80ffbac86e6100588c49bc555a232e0c4 # Parent 06aa4c0f2018ee747d915c5c9ba475ab9713b911 if not interactive, bypass readline and read stdin as a file (bug #38520) * parse.h (octave_parser::octave_parser (octave_lexer&)): New constructor. * toplev.cc (main_loop): If not interactive or forced interactive, read from stdin as a file instead of creating interative lexer. diff --git a/libinterp/interpfcn/toplev.cc b/libinterp/interpfcn/toplev.cc --- a/libinterp/interpfcn/toplev.cc +++ b/libinterp/interpfcn/toplev.cc @@ -563,7 +563,11 @@ // octave_parser constructor sets this for us. frame.protect_var (LEXER); - octave_parser parser; + octave_lexer *lxr = ((interactive || forced_interactive) + ? new octave_lexer () + : new octave_lexer (stdin)); + + octave_parser parser (*lxr); int retval = 0; do diff --git a/libinterp/parse-tree/parse.h b/libinterp/parse-tree/parse.h --- a/libinterp/parse-tree/parse.h +++ b/libinterp/parse-tree/parse.h @@ -409,6 +409,10 @@ : octave_base_parser (*(new octave_lexer (eval_string))) { } + octave_parser (octave_lexer& lxr) + : octave_base_parser (lxr) + { } + ~octave_parser (void) { } int run (void);