annotate libinterp/octave.cc @ 16149:49dfba4fd3c5

use pure parser and reentrant lexer interfaces Making the Octave parser and lexer properly reentrant (and perhaps eventually thread safe as well) is still a work in progress. With the current set of changes the parser and lexer still use many global variables, so these changes alone do NOT make the Octave parser reentrant unless you take care to properly save and restore (typically with an unwind_protect object) relevant global values before and after calling the parser. Even if global variables are properly saved and restored, the parser will NOT be thread safe. * lex.ll: Use %option reentrant an %option bison-bridge. (yylval): Delete macro. (YY_EXTRA_TYPE, curr_lexer): New macros. Undefine curr_lexer (YY_FATAL_ERROR): Update decl for reentrant scanner. (lexical_feedback::reset): Update call to yyrestart for reentrant scanner interface. (lexical_feedback::fatal_error): Update call to yy_fatal_error for reentrant scanner interface. (lexical_feedback::text_yyinput): Update calls to yyinput and yyunput for reentrant scanner interface. (lexical_feedback::flex_yyleng): Use function interface to access yyleng. (lexical_feedback::flex_yytext): Use function interface to access yytext. (lexical_feedback::push_token, lexical_feedback::current_token): Use function interface to access yylval. * oct-parse.yy: Use %define api.pure, %parse-param, and %lex-param options. (curr_lexer): Define for syntax rules section. (scanner): New macro. * oct-parse.yy: Include oct-parse.h. (octave_lex): Declare. (yyerror): Update declaration for pure parser. * parse.h (octave_lex): Delete decl. * oct-parse.yy (octave_parser::run): Pass pointer to octave_parser object to octave_parse. * lex.ll (lexical_feedback::octave_read): Call fatal_error directly instead of using YY_FATAL_ERROR. * oct-parse.yy (parse_fcn_file): Pass line and column info for lexter to gobble_leading_whitespace. Access prep_for_script_file, prep_for_function_file, parsing_class_method, input_line_number, and current_input_column through curr_parser. * parse.h, oct-parse.yy (YY_BUFFER_STATE, create_buffer, current_buffer, switch_to_buffer, delete_buffer, clear_all_buffers): Delete. * toplev.cc (main_loop): Don't create new buffer for lexer. * input.cc (get_debug_input): Likewise. * oct-parse.yy (eval_string, parse_fcn_file): Likewise. * octave.cc (octave_initialize_interpreter): Likewise. * input.cc (get_debug_input): Likewise. * oct-parse.yy (eval_string, parse_fcn_file): Create parser as needed. * octave.cc (octave_initialize_interpreter): Likewise. * input.cc (get_debug_input): Likewise. * input.cc (input_even_hook): Allow function to run even if currently defining a function. * lex.h, lex.ll (curr_lexer): Delete global variable. * parse.h, oct-parse.yy (octave_parser::curr_lexer): New data member. (octave_parser::octave_parser): Create lexer here. (curr_parser): Delete global variable. * toplev.cc (main_loop): Don't protect global curr_lexer and curr_parser variables. * oct-parse.yy (eval_string, parse_fcn_file): Likewise. * input.cc (get_debug_input): Likewise. * lex.h, lex.ll (curr_lexer): Delete global variable. * parse.h, oct-parse.yy (CURR_LEXER): New temporary global. (octave_parser::octave_parser): Set global CURR_LEXER here. * toplev.cc (main_loop): Protect CURR_LEXER prior to constructing new parser object. * input.cc (get_debug_input): Likewise. * oct-parse.yy (eval_string, parse_fcn_file): Likewise. * lex.h, lex.ll (lexical_feedback::scanner): New data member. (lexical_feedback::init): Create it. Call yylex_set_extra to store pointer to lexical_feedback object in scanner data. (lexical_feedback::~lexical_feedback): Delete it. * lex.ll (YYG): New macro. (lexical_feedback::reset, lexical_feedback::prep_for_script_file, lexical_feedback::prep_for_function_file, lexical_feedback::process_comment, lexical_feedback::handle_close_bracket, lexical_feedback::handle_identifier, lexical_feedback::lexer_debug): Use it to access scanner data.
author John W. Eaton <jwe@octave.org>
date Wed, 27 Feb 2013 18:49:16 -0500
parents 9ede91b3872b
children 0259254a3ccc 810a71122c25
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2
14138
72c96de7a403 maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents: 14074
diff changeset
3 Copyright (C) 1993-2012 John W. Eaton
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
4
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
6
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6945
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6945
diff changeset
10 option) any later version.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
11
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
15 for more details.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
16
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6945
diff changeset
18 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6945
diff changeset
19 <http://www.gnu.org/licenses/>.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
20
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
21 */
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
22
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
23 // Born February 20, 1992.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
24
240
a99f28f5e351 [project @ 1993-11-30 20:24:36 by jwe]
jwe
parents: 223
diff changeset
25 #ifdef HAVE_CONFIG_H
1192
b6360f2d4fa6 [project @ 1995-03-30 21:38:35 by jwe]
jwe
parents: 1153
diff changeset
26 #include <config.h>
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
27 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
28
1355
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
29 #include <cassert>
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
30 #include <cstdlib>
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
31 #include <cstring>
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
32 #include <ctime>
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
33
3503
d14c483b3c12 [project @ 2000-02-01 04:06:07 by jwe]
jwe
parents: 3481
diff changeset
34 #include <iostream>
1355
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
35
10195
b49d47b637b7 use getopt directly instead of the (mostly useless) prog_args wrapper class
John W. Eaton <jwe@octave.org>
parents: 10191
diff changeset
36 #include <getopt.h>
12335
6e9f100c0d61 include <unistd.h> in octave.cc
John W. Eaton <jwe@octave.org>
parents: 11586
diff changeset
37 #include <sys/types.h>
6e9f100c0d61 include <unistd.h> in octave.cc
John W. Eaton <jwe@octave.org>
parents: 11586
diff changeset
38 #include <unistd.h>
10195
b49d47b637b7 use getopt directly instead of the (mostly useless) prog_args wrapper class
John W. Eaton <jwe@octave.org>
parents: 10191
diff changeset
39
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2910
diff changeset
40 #include "cmd-edit.h"
3690
55e59236c5e5 [project @ 2000-06-30 20:55:36 by jwe]
jwe
parents: 3597
diff changeset
41 #include "f77-fcn.h"
4097
596f88296519 [project @ 2002-10-09 20:26:27 by jwe]
jwe
parents: 4051
diff changeset
42 #include "file-ops.h"
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2910
diff changeset
43 #include "file-stat.h"
240
a99f28f5e351 [project @ 1993-11-30 20:24:36 by jwe]
jwe
parents: 223
diff changeset
44 #include "lo-error.h"
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2910
diff changeset
45 #include "oct-env.h"
1907
8c6cea97eb80 [project @ 1996-02-10 01:12:46 by jwe]
jwe
parents: 1884
diff changeset
46 #include "str-vec.h"
223
82c050e70f7a [project @ 1993-11-14 10:58:11 by jwe]
jwe
parents: 206
diff changeset
47
15475
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
48 #include "builtins.h"
15262
ad1a980b0cb5 install default values before initializing interpreter (bug #37161)
John W. Eaton <jwe@octave.org>
parents: 15244
diff changeset
49 #include "defaults.h"
3933
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3922
diff changeset
50 #include "Cell.h"
1355
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
51 #include "defun.h"
9335
f2d354df53ee new option, --no-window-system
John W. Eaton <jwe@octave.org>
parents: 9321
diff changeset
52 #include "display.h"
1355
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
53 #include "error.h"
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
54 #include "file-io.h"
15473
457a2ff2a71b set Vinfo_file and Vinfo_program variables directly from command line options
John W. Eaton <jwe@octave.org>
parents: 15472
diff changeset
55 #include "help.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
56 #include "input.h"
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
57 #include "lex.h"
5832
5e41e06f6a78 [project @ 2006-05-26 21:41:32 by jwe]
jwe
parents: 5823
diff changeset
58 #include "load-path.h"
4113
f4bf4833e6c7 [project @ 2002-10-17 19:58:42 by jwe]
jwe
parents: 4101
diff changeset
59 #include "octave.h"
15139
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
60 #include "oct-conf.h"
1742
a02f140ed897 [project @ 1996-01-12 11:09:39 by jwe]
jwe
parents: 1711
diff changeset
61 #include "oct-hist.h"
5654
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
62 #include "oct-map.h"
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13239
diff changeset
63 #include "oct-mutex.h"
3195
7a5a5da64756 [project @ 1998-10-28 22:54:04 by jwe]
jwe
parents: 3189
diff changeset
64 #include "oct-obj.h"
2375
7ef24992e290 [project @ 1996-10-12 00:39:52 by jwe]
jwe
parents: 2277
diff changeset
65 #include "ops.h"
10613
e103fb2182ce use internal variable instead of warning state to control whether to allow non-integer ranges as indices
John W. Eaton <jwe@octave.org>
parents: 10605
diff changeset
66 #include "ov.h"
e103fb2182ce use internal variable instead of warning state to control whether to allow non-integer ranges as indices
John W. Eaton <jwe@octave.org>
parents: 10605
diff changeset
67 #include "ov-range.h"
1670
6708c53892c1 [project @ 1995-12-27 04:33:00 by jwe]
jwe
parents: 1669
diff changeset
68 #include "toplev.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
69 #include "parse.h"
562
50bf8d1b024e [project @ 1994-07-25 23:19:11 by jwe]
jwe
parents: 560
diff changeset
70 #include "procstream.h"
1355
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
71 #include "sighandlers.h"
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
72 #include "sysdep.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
73 #include "unwind-prot.h"
1355
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
74 #include "utils.h"
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
75 #include "variables.h"
2492
06595bc7f2d0 [project @ 1996-11-09 00:13:50 by jwe]
jwe
parents: 2470
diff changeset
76 #include <version.h>
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
77
4159
e9e2055ad0af [project @ 2002-11-08 03:27:35 by jwe]
jwe
parents: 4157
diff changeset
78 // Kluge.
5990
d90d089a9d32 [project @ 2006-09-15 14:34:57 by jwe]
jwe
parents: 5904
diff changeset
79 extern "C" F77_RET_T
11518
141b3fb5cef7 style fixes
John W. Eaton <jwe@octave.org>
parents: 11368
diff changeset
80 F77_FUNC (xerbla, XERBLA) (F77_CONST_CHAR_ARG_DECL,
141b3fb5cef7 style fixes
John W. Eaton <jwe@octave.org>
parents: 11368
diff changeset
81 const octave_idx_type&
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
82 F77_CHAR_ARG_LEN_DECL);
4159
e9e2055ad0af [project @ 2002-11-08 03:27:35 by jwe]
jwe
parents: 4157
diff changeset
83
2910
1da1af95082e [project @ 1997-04-30 06:42:17 by jwe]
jwe
parents: 2897
diff changeset
84 extern void install_builtins (void);
1da1af95082e [project @ 1997-04-30 06:42:17 by jwe]
jwe
parents: 2897
diff changeset
85
15137
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
86 int octave_cmdline_argc;
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
87 char **octave_cmdline_argv;
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
88 int octave_embedded;
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
89
1907
8c6cea97eb80 [project @ 1996-02-10 01:12:46 by jwe]
jwe
parents: 1884
diff changeset
90 // The command-line options.
8c6cea97eb80 [project @ 1996-02-10 01:12:46 by jwe]
jwe
parents: 1884
diff changeset
91 static string_vector octave_argv;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
92
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
93 // The name used to invoke Octave.
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
94 static std::string
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
95 octave_program_invocation_name;
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
96
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
97 // The last component of octave_program_invocation_name.
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
98 static std::string octave_program_name;
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
99
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
100 // TRUE means we read ~/.octaverc and ./.octaverc.
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
101 // (--norc; --no-init-file; -f)
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
102 static bool read_init_files = true;
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
103
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
104 // TRUE means we read the site-wide octaverc files.
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
105 // (--norc; --no-site-file; -f)
2240
e759180dd7db [project @ 1996-05-22 02:42:17 by jwe]
jwe
parents: 2239
diff changeset
106 static bool read_site_files = true;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
107
6365
ccdb8ffbb994 [project @ 2007-02-27 19:43:35 by jwe]
jwe
parents: 6159
diff changeset
108 // TRUE means we set the initial path to configured defaults.
9132
eb1747dbd360 Update help strings for command line options
Rik <rdrider0-list@yahoo.com>
parents: 9009
diff changeset
109 // (--no-init-path)
6365
ccdb8ffbb994 [project @ 2007-02-27 19:43:35 by jwe]
jwe
parents: 6159
diff changeset
110 static bool set_initial_path = true;
ccdb8ffbb994 [project @ 2007-02-27 19:43:35 by jwe]
jwe
parents: 6159
diff changeset
111
3019
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 3014
diff changeset
112 // TRUE means we don't print the usual startup message.
616
9ced66fce8a3 [project @ 1994-08-15 04:16:37 by jwe]
jwe
parents: 614
diff changeset
113 // (--quiet; --silent; -q)
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
114 static bool inhibit_startup_message = false;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
115
3019
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 3014
diff changeset
116 // If TRUE, print verbose info in some cases.
1825
8219d9b7cb73 [project @ 1996-02-02 01:00:57 by jwe]
jwe
parents: 1821
diff changeset
117 // (--verbose; -V)
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
118 static bool verbose_flag = false;
1825
8219d9b7cb73 [project @ 1996-02-02 01:00:57 by jwe]
jwe
parents: 1821
diff changeset
119
15139
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
120 // If TRUE, force the GUI to start.
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
121 // (--force-gui)
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
122 static bool force_gui_option = false;
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
123
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
124 // If TRUE don't start the GUI.
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
125 // (--no-gui)
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
126 static bool no_gui_option = false;
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
127
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
128 // If TRUE, force readline command line editing.
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
129 // (--line-editing)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
130 static bool forced_line_editing = false;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
131
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
132 // If TRUE, initialize history list from saved history file.
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
133 // (--no-history; -H)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
134 static bool read_history_file = true;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
135
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
136 // The value of "path" specified on the command line.
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
137 // (--path; -p)
15225
2d337a9869e9 correctly handle multiple --path command line arguments
John W. Eaton <jwe@octave.org>
parents: 15224
diff changeset
138 static std::list<std::string> command_line_path;
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
139
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
140 // The value for "EXEC_PATH" specified on the command line.
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
141 // (--exec-path)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
142 static std::string exec_path;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
143
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
144 // The value for "IMAGE_PATH" specified on the command line.
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
145 // (--image-path)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
146 static std::string image_path;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
147
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
148 // If TRUE, ignore the window system even if it is available.
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
149 // (--no-window-system)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
150 static bool no_window_system = false;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
151
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
152 // Usage message
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
153 static const char *usage_string =
11140
8aa93f43bae8 use getopt_long correctly
John W. Eaton <jwe@octave.org>
parents: 11091
diff changeset
154 "octave [-HVdfhiqvx] [--debug] [--echo-commands] [--eval CODE]\n\
15139
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
155 [--exec-path path] [--force-gui] [--help] [--image-path path]\n\
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
156 [--info-file file] [--info-program prog] [--interactive]\n\
15479
3f447bcc8488 set Venable_jit_debugging and Venable_jit_compiler variables directly from command line options
John W. Eaton <jwe@octave.org>
parents: 15478
diff changeset
157 [--jit-debugging] [--line-editing] [--no-gui] [--no-history]\n\
15310
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
158 [--no-init-file] [--no-init-path] [--no-jit-compiler]\n\
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
159 [--no-line-editing] [--no-site-file] [--no-window-system]\n\
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
160 [-p path] [--path path] [--silent] [--traditional]\n\
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
161 [--verbose] [--version] [file]";
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
162
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1355
diff changeset
163 // This is here so that it's more likely that the usage message and
15466
d174210ce1ec use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 14160
diff changeset
164 // the real set of options will agree. Note: the '+' must come first
1410
5f2cd468a1c3 [project @ 1995-09-15 06:44:52 by jwe]
jwe
parents: 1363
diff changeset
165 // to prevent getopt from permuting arguments!
11140
8aa93f43bae8 use getopt_long correctly
John W. Eaton <jwe@octave.org>
parents: 11091
diff changeset
166 static const char *short_opts = "+HVdfhip:qvx";
139
d80376609fd1 [project @ 1993-09-29 23:23:37 by jwe]
jwe
parents: 85
diff changeset
167
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
168 // The code to evaluate at startup (--eval CODE)
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
169 static std::string code_to_eval;
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
170
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
171 // If TRUE, don't exit after evaluating code given by --eval option.
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
172 static bool persist = false;
4356
b6ad3db48255 [project @ 2003-02-22 02:57:33 by jwe]
jwe
parents: 4324
diff changeset
173
15702
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
174 // If TRUE, the GUI should be started.
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
175 static bool start_gui = false;
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
176
1103
a6f341c1b47c [project @ 1995-02-14 21:43:55 by jwe]
jwe
parents: 1022
diff changeset
177 // Long options. See the comments in getopt.h for the meanings of the
a6f341c1b47c [project @ 1995-02-14 21:43:55 by jwe]
jwe
parents: 1022
diff changeset
178 // fields in this structure.
15470
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
179 #define BUILT_IN_DOCSTRINGS_FILE_OPTION 1
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
180 #define DOC_CACHE_FILE_OPTION 2
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
181 #define EVAL_OPTION 3
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
182 #define EXEC_PATH_OPTION 4
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
183 #define FORCE_GUI_OPTION 5
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
184 #define IMAGE_PATH_OPTION 6
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
185 #define INFO_FILE_OPTION 7
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
186 #define INFO_PROG_OPTION 8
15479
3f447bcc8488 set Venable_jit_debugging and Venable_jit_compiler variables directly from command line options
John W. Eaton <jwe@octave.org>
parents: 15478
diff changeset
187 #define JIT_DEBUGGING_OPTION 9
15470
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
188 #define LINE_EDITING_OPTION 10
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
189 #define NO_GUI_OPTION 11
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
190 #define NO_INIT_FILE_OPTION 12
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
191 #define NO_INIT_PATH_OPTION 13
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
192 #define NO_JIT_COMPILER_OPTION 14
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
193 #define NO_LINE_EDITING_OPTION 15
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
194 #define NO_SITE_FILE_OPTION 16
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
195 #define NO_WINDOW_SYSTEM_OPTION 17
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
196 #define PERSIST_OPTION 18
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
197 #define TEXI_MACROS_FILE_OPTION 19
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
198 #define TRADITIONAL_OPTION 20
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
199 struct option long_opts[] = {
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
200 { "braindead", no_argument, 0, TRADITIONAL_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
201 { "built-in-docstrings-file", required_argument, 0, BUILT_IN_DOCSTRINGS_FILE_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
202 { "debug", no_argument, 0, 'd' },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
203 { "doc-cache-file", required_argument, 0, DOC_CACHE_FILE_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
204 { "echo-commands", no_argument, 0, 'x' },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
205 { "eval", required_argument, 0, EVAL_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
206 { "exec-path", required_argument, 0, EXEC_PATH_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
207 { "force-gui", no_argument, 0, FORCE_GUI_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
208 { "help", no_argument, 0, 'h' },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
209 { "image-path", required_argument, 0, IMAGE_PATH_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
210 { "info-file", required_argument, 0, INFO_FILE_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
211 { "info-program", required_argument, 0, INFO_PROG_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
212 { "interactive", no_argument, 0, 'i' },
15479
3f447bcc8488 set Venable_jit_debugging and Venable_jit_compiler variables directly from command line options
John W. Eaton <jwe@octave.org>
parents: 15478
diff changeset
213 { "jit-debugging", no_argument, 0, JIT_DEBUGGING_OPTION },
15470
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
214 { "line-editing", no_argument, 0, LINE_EDITING_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
215 { "no-gui", no_argument, 0, NO_GUI_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
216 { "no-history", no_argument, 0, 'H' },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
217 { "no-init-file", no_argument, 0, NO_INIT_FILE_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
218 { "no-init-path", no_argument, 0, NO_INIT_PATH_OPTION },
15472
c8c828276b69 * octave.cc (long_opts): Use --no-jit-compiler to match docs.
John W. Eaton <jwe@octave.org>
parents: 15470
diff changeset
219 { "no-jit-compiler", no_argument, 0, NO_JIT_COMPILER_OPTION },
15470
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
220 { "no-line-editing", no_argument, 0, NO_LINE_EDITING_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
221 { "no-site-file", no_argument, 0, NO_SITE_FILE_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
222 { "no-window-system", no_argument, 0, NO_WINDOW_SYSTEM_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
223 { "norc", no_argument, 0, 'f' },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
224 { "path", required_argument, 0, 'p' },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
225 { "persist", no_argument, 0, PERSIST_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
226 { "quiet", no_argument, 0, 'q' },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
227 { "silent", no_argument, 0, 'q' },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
228 { "texi-macros-file", required_argument, 0, TEXI_MACROS_FILE_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
229 { "traditional", no_argument, 0, TRADITIONAL_OPTION },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
230 { "verbose", no_argument, 0, 'V' },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
231 { "version", no_argument, 0, 'v' },
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
232 { 0, 0, 0, 0 }
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
233 };
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
234
1355
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
235 // Store the command-line options for later use.
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
236
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
237 static void
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
238 intern_argv (int argc, char **argv)
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
239 {
7752
40c428ea3408 initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents: 7715
diff changeset
240 assert (symbol_table::at_top_level ());
4892
7e5370e5c7ee [project @ 2004-05-07 17:37:47 by jwe]
jwe
parents: 4829
diff changeset
241
7752
40c428ea3408 initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents: 7715
diff changeset
242 symbol_table::varref (".nargin.") = argc - 1;
40c428ea3408 initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents: 7715
diff changeset
243
40c428ea3408 initial implementation of dbup and dbdown
John W. Eaton <jwe@octave.org>
parents: 7715
diff changeset
244 symbol_table::mark_hidden (".nargin.");
3195
7a5a5da64756 [project @ 1998-10-28 22:54:04 by jwe]
jwe
parents: 3189
diff changeset
245
10485
b4e14e628fc9 Truncate argv() for scripts used without command line parameters. Bug #29423
Judd Storrs <jstorrs@gmail.com>
parents: 10370
diff changeset
246 if (argc > 0)
1355
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
247 {
7336
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7202
diff changeset
248 octave_argv.resize (argc - 1);
3933
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3922
diff changeset
249
2495
29cd3862a9dc [project @ 1996-11-11 02:39:49 by jwe]
jwe
parents: 2492
diff changeset
250 // Skip program name in argv.
3933
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3922
diff changeset
251 int i = argc;
f9ea3dcf58ee [project @ 2002-05-15 03:21:00 by jwe]
jwe
parents: 3922
diff changeset
252 while (--i > 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
253 octave_argv[i-1] = *(argv+i);
1355
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
254 }
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
255 }
94697d007075 [project @ 1995-09-05 20:04:15 by jwe]
jwe
parents: 1315
diff changeset
256
5654
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
257 DEFUN (__version_info__, args, ,
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
258 "-*- texinfo -*-\n\
6678
49724abe1236 [project @ 2007-05-31 19:44:45 by jwe]
jwe
parents: 6639
diff changeset
259 @deftypefn {Built-in Function} {retval =} __version_info__ (@var{name}, @var{version}, @var{release}, @var{date})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6938
diff changeset
260 Undocumented internal function.\n\
5654
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
261 @end deftypefn")
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
262 {
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
263 octave_value retval;
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
264
11066
e678346a47d9 toplev.cc, sighandlers.cc, utils.cc, octave.cc, pt-eval.cc pt-idx.cc: Octave_map to octave_map and octave_scalar_map conversion
John W. Eaton <jwe@octave.org>
parents: 10840
diff changeset
265 static octave_map vinfo;
5654
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
266
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
267 int nargin = args.length ();
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
268
5658
7b45fda21557 [project @ 2006-03-10 03:57:23 by jwe]
jwe
parents: 5654
diff changeset
269 if (nargin == 4)
5654
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
270 {
6639
ed74670db09b [project @ 2007-05-21 19:47:22 by jwe]
jwe
parents: 6615
diff changeset
271 if (vinfo.nfields () == 0)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
272 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
273 vinfo.assign ("Name", args (0));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
274 vinfo.assign ("Version", args (1));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
275 vinfo.assign ("Release", args (2));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
276 vinfo.assign ("Date", args (3));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
277 }
5781
faafc2d98b8d [project @ 2006-05-02 19:40:19 by jwe]
jwe
parents: 5780
diff changeset
278 else
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
279 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
280 octave_idx_type n = vinfo.numel () + 1;
5654
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
281
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
282 vinfo.resize (dim_vector (n, 1));
5781
faafc2d98b8d [project @ 2006-05-02 19:40:19 by jwe]
jwe
parents: 5780
diff changeset
283
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
284 octave_value idx (n);
5781
faafc2d98b8d [project @ 2006-05-02 19:40:19 by jwe]
jwe
parents: 5780
diff changeset
285
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
286 vinfo.assign (idx, "Name", Cell (octave_value (args (0))));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
287 vinfo.assign (idx, "Version", Cell (octave_value (args (1))));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
288 vinfo.assign (idx, "Release", Cell (octave_value (args (2))));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
289 vinfo.assign (idx, "Date", Cell (octave_value (args (3))));
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
290 }
5654
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
291 }
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
292 else if (nargin == 0)
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
293 retval = vinfo;
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
294 else
5823
080c08b192d8 [project @ 2006-05-19 05:32:17 by jwe]
jwe
parents: 5814
diff changeset
295 print_usage ();
5654
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
296
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
297 return retval;
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
298 }
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
299
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
300 static void
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
301 initialize_version_info (void)
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
302 {
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
303 octave_value_list args;
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
304
5658
7b45fda21557 [project @ 2006-03-10 03:57:23 by jwe]
jwe
parents: 5654
diff changeset
305 args(3) = OCTAVE_RELEASE_DATE;
7b45fda21557 [project @ 2006-03-10 03:57:23 by jwe]
jwe
parents: 5654
diff changeset
306 args(2) = OCTAVE_RELEASE;
5654
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
307 args(1) = OCTAVE_VERSION;
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
308 args(0) = "GNU Octave";
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
309
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
310 F__version_info__ (args, 0);
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
311 }
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
312
11368
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
313 static void
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
314 gripe_safe_source_exception (const std::string& file, const std::string& msg)
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
315 {
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
316 std::cerr << "error: " << msg << "\n"
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
317 << "error: execution of " << file << " failed\n"
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
318 << "error: trying to make my way to a command prompt"
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
319 << std::endl;
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
320 }
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
321
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
322 // Execute commands from a file and catch potential exceptions in a
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
323 // consistent way. This function should be called anywhere we might
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
324 // parse and execute commands from a file before before we have entered
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
325 // the main loop in toplev.cc.
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
326
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
327 static void
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
328 safe_source_file (const std::string& file_name,
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
329 const std::string& context = std::string (),
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
330 bool verbose = false, bool require_file = true,
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
331 const std::string& warn_for = std::string ())
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
332 {
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
333 try
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
334 {
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
335 source_file (file_name, context, verbose, require_file, warn_for);
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
336 }
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
337 catch (octave_interrupt_exception)
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
338 {
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
339 recover_from_exception ();
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
340 octave_stdout << "\n";
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
341 if (quitting_gracefully)
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
342 clean_up_and_exit (exit_status);
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
343 }
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
344 catch (octave_execution_exception)
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
345 {
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
346 recover_from_exception ();
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
347 gripe_safe_source_exception (file_name, "unhandled execution exception");
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
348 }
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
349 }
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
350
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 578
diff changeset
351 // Initialize by reading startup files.
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 578
diff changeset
352
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
353 static void
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
354 execute_startup_files (void)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
355 {
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
356 unwind_protect frame;
315
260863721a51 [project @ 1994-01-28 04:22:45 by jwe]
jwe
parents: 290
diff changeset
357
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
358 frame.protect_var (input_from_startup_file);
1651
e846e361a265 [project @ 1995-12-20 06:59:12 by jwe]
jwe
parents: 1613
diff changeset
359
3019
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 3014
diff changeset
360 input_from_startup_file = true;
315
260863721a51 [project @ 1994-01-28 04:22:45 by jwe]
jwe
parents: 290
diff changeset
361
7715
5b4d278ec828 parse scripts completely before executing
John W. Eaton <jwe@octave.org>
parents: 7481
diff changeset
362 std::string context;
5b4d278ec828 parse scripts completely before executing
John W. Eaton <jwe@octave.org>
parents: 7481
diff changeset
363
5b4d278ec828 parse scripts completely before executing
John W. Eaton <jwe@octave.org>
parents: 7481
diff changeset
364 bool verbose = (verbose_flag && ! inhibit_startup_message);
5b4d278ec828 parse scripts completely before executing
John W. Eaton <jwe@octave.org>
parents: 7481
diff changeset
365
5b4d278ec828 parse scripts completely before executing
John W. Eaton <jwe@octave.org>
parents: 7481
diff changeset
366 bool require_file = false;
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 565
diff changeset
367
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
368 if (read_site_files)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
369 {
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
370 // Execute commands from the site-wide configuration file.
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
371 // First from the file $(prefix)/lib/octave/site/m/octaverc
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
372 // (if it exists), then from the file
3597
26662775f4e9 [project @ 2000-02-12 02:24:41 by jwe]
jwe
parents: 3566
diff changeset
373 // $(prefix)/share/octave/$(version)/m/octaverc (if it exists).
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1744
diff changeset
374
11368
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
375 safe_source_file (Vlocal_site_defaults_file, context, verbose,
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
376 require_file);
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1744
diff changeset
377
11368
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
378 safe_source_file (Vsite_defaults_file, context, verbose, require_file);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
379 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
380
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
381 if (read_init_files)
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
382 {
2512
fda09c1e787e [project @ 1996-11-14 08:39:41 by jwe]
jwe
parents: 2495
diff changeset
383 // Try to execute commands from $HOME/$OCTAVE_INITFILE and
fda09c1e787e [project @ 1996-11-14 08:39:41 by jwe]
jwe
parents: 2495
diff changeset
384 // $OCTAVE_INITFILE. If $OCTAVE_INITFILE is not set, .octaverc
fda09c1e787e [project @ 1996-11-14 08:39:41 by jwe]
jwe
parents: 2495
diff changeset
385 // is assumed.
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
386
4804
6202d9b75f83 [project @ 2004-02-27 16:40:59 by jwe]
jwe
parents: 4753
diff changeset
387 bool home_rc_already_executed = false;
2512
fda09c1e787e [project @ 1996-11-14 08:39:41 by jwe]
jwe
parents: 2495
diff changeset
388
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3503
diff changeset
389 std::string initfile = octave_env::getenv ("OCTAVE_INITFILE");
2512
fda09c1e787e [project @ 1996-11-14 08:39:41 by jwe]
jwe
parents: 2495
diff changeset
390
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2910
diff changeset
391 if (initfile.empty ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
392 initfile = ".octaverc";
2512
fda09c1e787e [project @ 1996-11-14 08:39:41 by jwe]
jwe
parents: 2495
diff changeset
393
3523
b80bbb43a1a9 [project @ 2000-02-02 10:25:52 by jwe]
jwe
parents: 3503
diff changeset
394 std::string home_dir = octave_env::get_home_directory ();
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2910
diff changeset
395
4804
6202d9b75f83 [project @ 2004-02-27 16:40:59 by jwe]
jwe
parents: 4753
diff changeset
396 std::string home_rc = octave_env::make_absolute (initfile, home_dir);
6202d9b75f83 [project @ 2004-02-27 16:40:59 by jwe]
jwe
parents: 4753
diff changeset
397
6202d9b75f83 [project @ 2004-02-27 16:40:59 by jwe]
jwe
parents: 4753
diff changeset
398 std::string local_rc;
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
399
5781
faafc2d98b8d [project @ 2006-05-02 19:40:19 by jwe]
jwe
parents: 5780
diff changeset
400 if (! home_rc.empty ())
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
401 {
11368
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
402 safe_source_file (home_rc, context, verbose, require_file);
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
403
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
404 // Names alone are not enough.
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
405
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
406 file_stat fs_home_rc (home_rc);
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
407
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
408 if (fs_home_rc)
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
409 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
410 // We want to check for curr_dir after executing home_rc
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
411 // because doing that may change the working directory.
4804
6202d9b75f83 [project @ 2004-02-27 16:40:59 by jwe]
jwe
parents: 4753
diff changeset
412
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
413 local_rc = octave_env::make_absolute (initfile);
4804
6202d9b75f83 [project @ 2004-02-27 16:40:59 by jwe]
jwe
parents: 4753
diff changeset
414
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
415 home_rc_already_executed = same_file (home_rc, local_rc);
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
416 }
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
417 }
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
418
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
419 if (! home_rc_already_executed)
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
420 {
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
421 if (local_rc.empty ())
10250
2d47356a7a1a use gnulib getcwd module
John W. Eaton <jwe@octave.org>
parents: 10244
diff changeset
422 local_rc = octave_env::make_absolute (initfile);
4804
6202d9b75f83 [project @ 2004-02-27 16:40:59 by jwe]
jwe
parents: 4753
diff changeset
423
11368
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
424 safe_source_file (local_rc, context, verbose, require_file);
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
425 }
2239
4d12b52750cb [project @ 1996-05-22 02:38:16 by jwe]
jwe
parents: 2212
diff changeset
426 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
427 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
428
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
429 static int
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
430 execute_eval_option_code (const std::string& code)
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
431 {
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
432 unwind_protect frame;
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
433
7202
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
434 octave_save_signal_mask ();
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
435
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
436 can_interrupt = true;
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
437
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
438 octave_signal_hook = octave_signal_handler;
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
439 octave_interrupt_hook = 0;
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
440 octave_bad_alloc_hook = 0;
7202
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
441
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
442 octave_catch_interrupts ();
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
443
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
444 octave_initialized = true;
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
445
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
446 frame.protect_var (interactive);
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
447
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
448 interactive = false;
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
449
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
450 int parse_status = 0;
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
451
6487
ef5113474882 [project @ 2007-04-04 15:31:37 by jwe]
jwe
parents: 6365
diff changeset
452 try
ef5113474882 [project @ 2007-04-04 15:31:37 by jwe]
jwe
parents: 6365
diff changeset
453 {
ef5113474882 [project @ 2007-04-04 15:31:37 by jwe]
jwe
parents: 6365
diff changeset
454 eval_string (code, false, parse_status, 0);
ef5113474882 [project @ 2007-04-04 15:31:37 by jwe]
jwe
parents: 6365
diff changeset
455 }
7202
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
456 catch (octave_interrupt_exception)
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
457 {
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
458 recover_from_exception ();
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
459 octave_stdout << "\n";
9383
d57f0c56195f improve error handling
Jaroslav Hajek <highegg@gmail.com>
parents: 9377
diff changeset
460 if (quitting_gracefully)
d57f0c56195f improve error handling
Jaroslav Hajek <highegg@gmail.com>
parents: 9377
diff changeset
461 clean_up_and_exit (exit_status);
7202
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
462 }
11368
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
463 catch (octave_execution_exception)
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
464 {
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
465 recover_from_exception ();
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
466 std::cerr << "error: unhandled execution exception -- eval failed"
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
467 << std::endl;
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
468 }
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
469
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
470 return parse_status;
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
471 }
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
472
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
473 static void
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
474 execute_command_line_file (const std::string& fname)
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
475 {
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
476 unwind_protect frame;
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
477
7202
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
478 octave_save_signal_mask ();
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
479
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
480 can_interrupt = true;
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
481
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
482 octave_signal_hook = octave_signal_handler;
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
483 octave_interrupt_hook = 0;
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
484 octave_bad_alloc_hook = 0;
7202
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
485
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
486 octave_catch_interrupts ();
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
487
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
488 octave_initialized = true;
ffdbdf53665c [project @ 2007-11-27 20:14:41 by jwe]
jwe
parents: 7017
diff changeset
489
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
490 frame.protect_var (interactive);
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
491 frame.protect_var (reading_script_file);
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
492 frame.protect_var (input_from_command_line_file);
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
493
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
494 frame.protect_var (curr_fcn_file_name);
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
495 frame.protect_var (curr_fcn_file_full_name);
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
496
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
497 frame.protect_var (octave_program_invocation_name);
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9999
diff changeset
498 frame.protect_var (octave_program_name);
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
499
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
500 interactive = false;
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
501 reading_script_file = true;
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
502 input_from_command_line_file = true;
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
503
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
504 curr_fcn_file_name = fname;
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
505 curr_fcn_file_full_name = curr_fcn_file_name;
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
506
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
507 octave_program_invocation_name = curr_fcn_file_name;
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
508
8007
a2ab20ba78f7 make file_ops a proper singleton class
John W. Eaton <jwe@octave.org>
parents: 7752
diff changeset
509 size_t pos = curr_fcn_file_name.find_last_of (file_ops::dir_sep_chars ());
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
510
8021
85184151822e fix typo in NPOS change
John W. Eaton <jwe@octave.org>
parents: 8019
diff changeset
511 std::string tmp = (pos != std::string::npos)
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
512 ? curr_fcn_file_name.substr (pos+1) : curr_fcn_file_name;
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
513
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
514 octave_program_name = tmp;
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
515
11368
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
516 std::string context;
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
517 bool verbose = false;
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
518 bool require_file = true;
7715
5b4d278ec828 parse scripts completely before executing
John W. Eaton <jwe@octave.org>
parents: 7481
diff changeset
519
11368
944b7e20fc5a improve handling of exceptions for startup files
John W. Eaton <jwe@octave.org>
parents: 11234
diff changeset
520 safe_source_file (fname, context, verbose, require_file, "octave");
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
521 }
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
522
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 578
diff changeset
523 // Usage message with extra help.
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 578
diff changeset
524
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
525 static void
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
526 verbose_usage (void)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
527 {
3922
38c61cbf086c [project @ 2002-05-01 06:48:35 by jwe]
jwe
parents: 3917
diff changeset
528 std::cout << OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY "\n\
1613
f18871f4df2b [project @ 1995-11-03 12:06:56 by jwe]
jwe
parents: 1612
diff changeset
529 \n\
10731
f5dbac015606 Add [FILE] to octave usage string (bug #30258).
Rik <octave@nomad.inbox5.com>
parents: 10613
diff changeset
530 Usage: octave [options] [FILE]\n\
1613
f18871f4df2b [project @ 1995-11-03 12:06:56 by jwe]
jwe
parents: 1612
diff changeset
531 \n\
f18871f4df2b [project @ 1995-11-03 12:06:56 by jwe]
jwe
parents: 1612
diff changeset
532 Options:\n\
1119
69a277ede9ae [project @ 1995-02-16 05:40:16 by jwe]
jwe
parents: 1110
diff changeset
533 \n\
3180
c17387059fd3 [project @ 1998-09-24 18:59:11 by jwe]
jwe
parents: 3159
diff changeset
534 --debug, -d Enter parser debugging mode.\n\
8923
d47290508a55 document --doc-cache-file option
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
535 --doc-cache-file FILE Use doc cache file FILE.\n\
3180
c17387059fd3 [project @ 1998-09-24 18:59:11 by jwe]
jwe
parents: 3159
diff changeset
536 --echo-commands, -x Echo commands as they are executed.\n\
5191
de5c13830b6f [project @ 2005-03-04 03:00:35 by jwe]
jwe
parents: 5190
diff changeset
537 --eval CODE Evaluate CODE. Exit when done unless --persist.\n\
1613
f18871f4df2b [project @ 1995-11-03 12:06:56 by jwe]
jwe
parents: 1612
diff changeset
538 --exec-path PATH Set path for executing subprograms.\n\
15223
6ec6ddebb1a6 include --force-gui and --no-gui options in --help output
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
539 --force-gui Force graphical user interface to start.\n\
11140
8aa93f43bae8 use getopt_long correctly
John W. Eaton <jwe@octave.org>
parents: 11091
diff changeset
540 --help, -h, Print short help message and exit.\n\
9132
eb1747dbd360 Update help strings for command line options
Rik <rdrider0-list@yahoo.com>
parents: 9009
diff changeset
541 --image-path PATH Add PATH to head of image search path.\n\
1613
f18871f4df2b [project @ 1995-11-03 12:06:56 by jwe]
jwe
parents: 1612
diff changeset
542 --info-file FILE Use top-level info file FILE.\n\
f18871f4df2b [project @ 1995-11-03 12:06:56 by jwe]
jwe
parents: 1612
diff changeset
543 --info-program PROGRAM Use PROGRAM for reading info files.\n\
3180
c17387059fd3 [project @ 1998-09-24 18:59:11 by jwe]
jwe
parents: 3159
diff changeset
544 --interactive, -i Force interactive behavior.\n\
15310
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
545 --jit-debug Enable JIT compiler debugging/tracing.\n\
6938
688ef9440022 [project @ 2007-10-01 15:59:33 by dbateman]
dbateman
parents: 6680
diff changeset
546 --line-editing Force readline use for command-line editing.\n\
15223
6ec6ddebb1a6 include --force-gui and --no-gui options in --help output
John W. Eaton <jwe@octave.org>
parents: 15195
diff changeset
547 --no-gui Disable the graphical user interface.\n\
3180
c17387059fd3 [project @ 1998-09-24 18:59:11 by jwe]
jwe
parents: 3159
diff changeset
548 --no-history, -H Don't save commands to the history list\n\
2470
1e673f0648b5 [project @ 1996-11-05 21:46:06 by jwe]
jwe
parents: 2445
diff changeset
549 --no-init-file Don't read the ~/.octaverc or .octaverc files.\n\
9132
eb1747dbd360 Update help strings for command line options
Rik <rdrider0-list@yahoo.com>
parents: 9009
diff changeset
550 --no-init-path Don't initialize function search path.\n\
15310
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
551 --no-jit-compiler Disable the JIT compiler.\n\
2212
fa855f4aae30 [project @ 1996-05-15 15:43:03 by jwe]
jwe
parents: 2205
diff changeset
552 --no-line-editing Don't use readline for command-line editing.\n\
2470
1e673f0648b5 [project @ 1996-11-05 21:46:06 by jwe]
jwe
parents: 2445
diff changeset
553 --no-site-file Don't read the site-wide octaverc file.\n\
9335
f2d354df53ee new option, --no-window-system
John W. Eaton <jwe@octave.org>
parents: 9321
diff changeset
554 --no-window-system Disable window system, including graphics.\n\
3238
041ea33fbbf4 [project @ 1999-03-26 17:48:16 by jwe]
jwe
parents: 3216
diff changeset
555 --norc, -f Don't read any initialization files.\n\
9132
eb1747dbd360 Update help strings for command line options
Rik <rdrider0-list@yahoo.com>
parents: 9009
diff changeset
556 --path PATH, -p PATH Add PATH to head of function search path.\n\
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
557 --persist Go interactive after --eval or reading from FILE.\n\
3180
c17387059fd3 [project @ 1998-09-24 18:59:11 by jwe]
jwe
parents: 3159
diff changeset
558 --silent, -q Don't print message at startup.\n\
14619
be12c85c6ce7 Print useful help message for texi_macros_file on command line.
Rik <octave@nomad.inbox5.com>
parents: 14614
diff changeset
559 --texi-macros-file FILE Use Texinfo macros in FILE for makeinfo command.\n\
9132
eb1747dbd360 Update help strings for command line options
Rik <rdrider0-list@yahoo.com>
parents: 9009
diff changeset
560 --traditional Set variables for closer MATLAB compatibility.\n\
3180
c17387059fd3 [project @ 1998-09-24 18:59:11 by jwe]
jwe
parents: 3159
diff changeset
561 --verbose, -V Enable verbose output in some cases.\n\
c17387059fd3 [project @ 1998-09-24 18:59:11 by jwe]
jwe
parents: 3159
diff changeset
562 --version, -v Print version number and exit.\n\
1119
69a277ede9ae [project @ 1995-02-16 05:40:16 by jwe]
jwe
parents: 1110
diff changeset
563 \n\
5190
2021bbfff5fd [project @ 2005-03-04 02:51:33 by jwe]
jwe
parents: 5189
diff changeset
564 FILE Execute commands from FILE. Exit when done\n\
5191
de5c13830b6f [project @ 2005-03-04 03:00:35 by jwe]
jwe
parents: 5190
diff changeset
565 unless --persist is also specified.\n\
4829
71dade3c16b6 [project @ 2004-03-10 05:12:06 by jwe]
jwe
parents: 4804
diff changeset
566 \n"
71dade3c16b6 [project @ 2004-03-10 05:12:06 by jwe]
jwe
parents: 4804
diff changeset
567 OCTAVE_WWW_STATEMENT "\n\
4356
b6ad3db48255 [project @ 2003-02-22 02:57:33 by jwe]
jwe
parents: 4324
diff changeset
568 \n"
b6ad3db48255 [project @ 2003-02-22 02:57:33 by jwe]
jwe
parents: 4324
diff changeset
569 OCTAVE_CONTRIB_STATEMENT "\n\
b6ad3db48255 [project @ 2003-02-22 02:57:33 by jwe]
jwe
parents: 4324
diff changeset
570 \n"
b6ad3db48255 [project @ 2003-02-22 02:57:33 by jwe]
jwe
parents: 4324
diff changeset
571 OCTAVE_BUGS_STATEMENT "\n";
285
79a1403b8b6e [project @ 1994-01-11 05:56:55 by jwe]
jwe
parents: 284
diff changeset
572
613
1ef6a5be15fe [project @ 1994-08-14 21:18:52 by jwe]
jwe
parents: 612
diff changeset
573 exit (0);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
574 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
575
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 578
diff changeset
576 // Terse usage messsage.
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 578
diff changeset
577
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
578 static void
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
579 usage (void)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
580 {
11140
8aa93f43bae8 use getopt_long correctly
John W. Eaton <jwe@octave.org>
parents: 11091
diff changeset
581 std::cerr << "\nusage: " << usage_string << "\n\n";
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
582 exit (1);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
583 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
584
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
585 static void
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
586 print_version_and_exit (void)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
587 {
3922
38c61cbf086c [project @ 2002-05-01 06:48:35 by jwe]
jwe
parents: 3917
diff changeset
588 std::cout << OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS "\n";
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
589 exit (0);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
590 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
591
721
54a6858bc7e7 [project @ 1994-09-21 15:17:38 by jwe]
jwe
parents: 712
diff changeset
592 static void
7481
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7336
diff changeset
593 lo_error_handler (const char *fmt, ...)
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7336
diff changeset
594 {
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7336
diff changeset
595 va_list args;
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7336
diff changeset
596 va_start (args, fmt);
9753
892e2aa7bc75 improve error messages by auto-prepending current function name
Jaroslav Hajek <highegg@gmail.com>
parents: 9724
diff changeset
597 verror_with_cfn (fmt, args);
7481
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7336
diff changeset
598 va_end (args);
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7336
diff changeset
599
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7336
diff changeset
600 octave_throw_execution_exception ();
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7336
diff changeset
601 }
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7336
diff changeset
602
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7336
diff changeset
603 static void
10370
9c4daf174387 implement IDs for common liboctave exceptions
Jaroslav Hajek <highegg@gmail.com>
parents: 10315
diff changeset
604 lo_error_with_id_handler (const char *id, const char *fmt, ...)
9c4daf174387 implement IDs for common liboctave exceptions
Jaroslav Hajek <highegg@gmail.com>
parents: 10315
diff changeset
605 {
9c4daf174387 implement IDs for common liboctave exceptions
Jaroslav Hajek <highegg@gmail.com>
parents: 10315
diff changeset
606 va_list args;
9c4daf174387 implement IDs for common liboctave exceptions
Jaroslav Hajek <highegg@gmail.com>
parents: 10315
diff changeset
607 va_start (args, fmt);
9c4daf174387 implement IDs for common liboctave exceptions
Jaroslav Hajek <highegg@gmail.com>
parents: 10315
diff changeset
608 verror_with_id_cfn (id, fmt, args);
9c4daf174387 implement IDs for common liboctave exceptions
Jaroslav Hajek <highegg@gmail.com>
parents: 10315
diff changeset
609 va_end (args);
9c4daf174387 implement IDs for common liboctave exceptions
Jaroslav Hajek <highegg@gmail.com>
parents: 10315
diff changeset
610
9c4daf174387 implement IDs for common liboctave exceptions
Jaroslav Hajek <highegg@gmail.com>
parents: 10315
diff changeset
611 octave_throw_execution_exception ();
9c4daf174387 implement IDs for common liboctave exceptions
Jaroslav Hajek <highegg@gmail.com>
parents: 10315
diff changeset
612 }
9c4daf174387 implement IDs for common liboctave exceptions
Jaroslav Hajek <highegg@gmail.com>
parents: 10315
diff changeset
613
9c4daf174387 implement IDs for common liboctave exceptions
Jaroslav Hajek <highegg@gmail.com>
parents: 10315
diff changeset
614 static void
721
54a6858bc7e7 [project @ 1994-09-21 15:17:38 by jwe]
jwe
parents: 712
diff changeset
615 initialize_error_handlers ()
54a6858bc7e7 [project @ 1994-09-21 15:17:38 by jwe]
jwe
parents: 712
diff changeset
616 {
7481
78f3811155f7 use exceptions in liboctave error handler
John W. Eaton <jwe@octave.org>
parents: 7336
diff changeset
617 set_liboctave_error_handler (lo_error_handler);
10370
9c4daf174387 implement IDs for common liboctave exceptions
Jaroslav Hajek <highegg@gmail.com>
parents: 10315
diff changeset
618 set_liboctave_error_with_id_handler (lo_error_with_id_handler);
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3259
diff changeset
619 set_liboctave_warning_handler (warning);
5781
faafc2d98b8d [project @ 2006-05-02 19:40:19 by jwe]
jwe
parents: 5780
diff changeset
620 set_liboctave_warning_with_id_handler (warning_with_id);
721
54a6858bc7e7 [project @ 1994-09-21 15:17:38 by jwe]
jwe
parents: 712
diff changeset
621 }
54a6858bc7e7 [project @ 1994-09-21 15:17:38 by jwe]
jwe
parents: 712
diff changeset
622
1410
5f2cd468a1c3 [project @ 1995-09-15 06:44:52 by jwe]
jwe
parents: 1363
diff changeset
623 // What happens on --traditional.
5f2cd468a1c3 [project @ 1995-09-15 06:44:52 by jwe]
jwe
parents: 1363
diff changeset
624
5f2cd468a1c3 [project @ 1995-09-15 06:44:52 by jwe]
jwe
parents: 1363
diff changeset
625 static void
5f2cd468a1c3 [project @ 1995-09-15 06:44:52 by jwe]
jwe
parents: 1363
diff changeset
626 maximum_braindamage (void)
5f2cd468a1c3 [project @ 1995-09-15 06:44:52 by jwe]
jwe
parents: 1363
diff changeset
627 {
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
628 persist = true;
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
629
15475
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
630 FPS1 (octave_value (">> "));
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
631 FPS2 (octave_value (""));
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
632 FPS4 (octave_value (""));
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
633 Fallow_noninteger_range_as_index (octave_value (true));
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
634 Fbeep_on_error (octave_value (true));
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
635 Fconfirm_recursive_rmdir (octave_value (false));
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
636 Fcrash_dumps_octave_core (octave_value (false));
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
637 Fdefault_save_options (octave_value ("-mat-binary"));
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
638 Fdo_braindead_shortcircuit_evaluation (octave_value (true));
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
639 Ffixed_point_format (octave_value (true));
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
640 Fhistory_timestamp_format_string (octave_value ("%%-- %D %I:%M %p --%%"));
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
641 Fpage_screen_output (octave_value (false));
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
642 Fprint_empty_dimensions (octave_value (false));
5904
80d3933fb8b6 [project @ 2006-07-26 17:19:10 by jwe]
jwe
parents: 5844
diff changeset
643
9584
0fcbfddaa87f allow abbreviated graphics property names to match, with optional warning
John W. Eaton <jwe@octave.org>
parents: 9383
diff changeset
644 disable_warning ("Octave:abbreviated-property-match");
6159
645605133a6f [project @ 2006-11-14 02:55:05 by jwe]
jwe
parents: 5990
diff changeset
645 disable_warning ("Octave:fopen-file-in-path");
5904
80d3933fb8b6 [project @ 2006-07-26 17:19:10 by jwe]
jwe
parents: 5844
diff changeset
646 disable_warning ("Octave:function-name-clash");
6159
645605133a6f [project @ 2006-11-14 02:55:05 by jwe]
jwe
parents: 5990
diff changeset
647 disable_warning ("Octave:load-file-in-path");
11091
5677f3f7b5fa Matlab compatible short-circuit behavior for & and | operators
John W. Eaton <jwe@octave.org>
parents: 11066
diff changeset
648 disable_warning ("Octave:possible-matlab-short-circuit-operator");
1410
5f2cd468a1c3 [project @ 1995-09-15 06:44:52 by jwe]
jwe
parents: 1363
diff changeset
649 }
5f2cd468a1c3 [project @ 1995-09-15 06:44:52 by jwe]
jwe
parents: 1363
diff changeset
650
15139
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
651 // EMBEDDED is declared int instead of bool because this function is
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
652 // declared extern "C".
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 578
diff changeset
653
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
654 int
4368
c45874c087c7 [project @ 2003-03-17 14:01:56 by jwe]
jwe
parents: 4356
diff changeset
655 octave_main (int argc, char **argv, int embedded)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
656 {
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
657 octave_process_command_line (argc, argv);
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
658
15884
9ede91b3872b do system-specific initialization before installing default variable values
John W. Eaton <jwe@octave.org>
parents: 15702
diff changeset
659 sysdep_init ();
9ede91b3872b do system-specific initialization before installing default variable values
John W. Eaton <jwe@octave.org>
parents: 15702
diff changeset
660
15262
ad1a980b0cb5 install default values before initializing interpreter (bug #37161)
John W. Eaton <jwe@octave.org>
parents: 15244
diff changeset
661 install_defaults ();
ad1a980b0cb5 install default values before initializing interpreter (bug #37161)
John W. Eaton <jwe@octave.org>
parents: 15244
diff changeset
662
15137
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
663 octave_initialize_interpreter (argc, argv, embedded);
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
664
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
665 return octave_execute_interpreter ();
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
666 }
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
667
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
668 void
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
669 octave_process_command_line (int argc, char **argv)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
670 {
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
671 octave_cmdline_argc = argc;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
672 octave_cmdline_argv = argv;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
673
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
674 while (true)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
675 {
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
676 int long_idx;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
677
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
678 int optc = getopt_long (argc, argv, short_opts, long_opts, &long_idx);
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
679
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
680 if (optc < 0)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
681 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
682
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
683 switch (optc)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
684 {
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
685 case '?':
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
686 // Unrecognized option. getopt_long already printed a
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
687 // message about that, so we will just print the usage string
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
688 // and exit.
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
689 usage ();
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
690 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
691
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
692 case 'H':
15476
7760d5eff9b2 elimnate call to bind_internal_variable when handling -H option
John W. Eaton <jwe@octave.org>
parents: 15475
diff changeset
693 Fsaving_history (octave_value (false));
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
694 read_history_file = false;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
695 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
696
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
697 case 'V':
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
698 verbose_flag = true;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
699 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
700
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
701 case 'd':
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
702 // This is the same as yydebug in parse.y.
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
703 octave_debug++;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
704 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
705
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
706 case 'f':
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
707 read_init_files = false;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
708 read_site_files = false;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
709 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
710
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
711 case 'h':
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
712 verbose_usage ();
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
713 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
714
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
715 case 'i':
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
716 forced_interactive = true;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
717 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
718
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
719 case 'p':
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
720 if (optarg)
15225
2d337a9869e9 correctly handle multiple --path command line arguments
John W. Eaton <jwe@octave.org>
parents: 15224
diff changeset
721 command_line_path.push_back (optarg);
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
722 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
723
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
724 case 'q':
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
725 inhibit_startup_message = true;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
726 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
727
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
728 case 'x':
15477
8b5fc510c6d6 don't use bind_internal_variable when handling -x option
John W. Eaton <jwe@octave.org>
parents: 15476
diff changeset
729 {
8b5fc510c6d6 don't use bind_internal_variable when handling -x option
John W. Eaton <jwe@octave.org>
parents: 15476
diff changeset
730 int val = ECHO_SCRIPTS | ECHO_FUNCTIONS | ECHO_CMD_LINE;
8b5fc510c6d6 don't use bind_internal_variable when handling -x option
John W. Eaton <jwe@octave.org>
parents: 15476
diff changeset
731 Fecho_executing_commands (octave_value (val));
8b5fc510c6d6 don't use bind_internal_variable when handling -x option
John W. Eaton <jwe@octave.org>
parents: 15476
diff changeset
732 }
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
733 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
734
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
735 case 'v':
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
736 print_version_and_exit ();
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
737 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
738
15470
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
739 case BUILT_IN_DOCSTRINGS_FILE_OPTION:
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
740 if (optarg)
15480
c7d7d43f26bb call Ffoo functions instead of setting Vfoo directly.
John W. Eaton <jwe@octave.org>
parents: 15479
diff changeset
741 Fbuilt_in_docstrings_file (octave_value (optarg));
15470
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
742 break;
bf0857c789f4 initialize docstrings for built-in functions from file
John W. Eaton <jwe@octave.org>
parents: 15467
diff changeset
743
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
744 case DOC_CACHE_FILE_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
745 if (optarg)
15480
c7d7d43f26bb call Ffoo functions instead of setting Vfoo directly.
John W. Eaton <jwe@octave.org>
parents: 15479
diff changeset
746 Fdoc_cache_file (octave_value (optarg));
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
747 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
748
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
749 case EVAL_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
750 if (optarg)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
751 {
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
752 if (code_to_eval.empty ())
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
753 code_to_eval = optarg;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
754 else
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
755 code_to_eval += std::string (" ") + optarg;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
756 }
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
757 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
758
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
759 case EXEC_PATH_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
760 if (optarg)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
761 exec_path = optarg;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
762 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
763
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
764 case FORCE_GUI_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
765 force_gui_option = true;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
766 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
767
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
768 case IMAGE_PATH_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
769 if (optarg)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
770 image_path = optarg;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
771 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
772
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
773 case INFO_FILE_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
774 if (optarg)
15480
c7d7d43f26bb call Ffoo functions instead of setting Vfoo directly.
John W. Eaton <jwe@octave.org>
parents: 15479
diff changeset
775 Finfo_file (octave_value (optarg));
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
776 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
777
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
778 case INFO_PROG_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
779 if (optarg)
15480
c7d7d43f26bb call Ffoo functions instead of setting Vfoo directly.
John W. Eaton <jwe@octave.org>
parents: 15479
diff changeset
780 Finfo_program (octave_value (optarg));
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
781 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
782
15479
3f447bcc8488 set Venable_jit_debugging and Venable_jit_compiler variables directly from command line options
John W. Eaton <jwe@octave.org>
parents: 15478
diff changeset
783 case JIT_DEBUGGING_OPTION:
3f447bcc8488 set Venable_jit_debugging and Venable_jit_compiler variables directly from command line options
John W. Eaton <jwe@octave.org>
parents: 15478
diff changeset
784 Fenable_jit_debugging (octave_value (true));
15310
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
785 break;
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
786
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
787 case LINE_EDITING_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
788 forced_line_editing = true;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
789 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
790
15310
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
791 case NO_GUI_OPTION:
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
792 no_gui_option = true;
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
793 break;
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
794
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
795 case NO_INIT_FILE_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
796 read_init_files = false;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
797 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
798
15310
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
799 case NO_INIT_PATH_OPTION:
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
800 set_initial_path = false;
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
801 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
802
15310
b055fc077224 allow jit compiler to be enabled at run-time
John W. Eaton <jwe@octave.org>
parents: 15290
diff changeset
803 case NO_JIT_COMPILER_OPTION:
15479
3f447bcc8488 set Venable_jit_debugging and Venable_jit_compiler variables directly from command line options
John W. Eaton <jwe@octave.org>
parents: 15478
diff changeset
804 Fenable_jit_compiler (octave_value (false));
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
805 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
806
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
807 case NO_LINE_EDITING_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
808 line_editing = false;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
809 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
810
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
811 case NO_SITE_FILE_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
812 read_site_files = 0;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
813 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
814
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
815 case NO_WINDOW_SYSTEM_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
816 no_window_system = true;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
817 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
818
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
819 case PERSIST_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
820 persist = true;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
821 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
822
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
823 case TEXI_MACROS_FILE_OPTION:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
824 if (optarg)
15480
c7d7d43f26bb call Ffoo functions instead of setting Vfoo directly.
John W. Eaton <jwe@octave.org>
parents: 15479
diff changeset
825 Ftexi_macros_file (octave_value (optarg));
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
826 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
827
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
828 case TRADITIONAL_OPTION:
15475
da6c37ed0b42 eliminate calls to bind_internal_variable when setting --traditional options
John W. Eaton <jwe@octave.org>
parents: 15474
diff changeset
829 maximum_braindamage ();
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
830 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
831
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
832 default:
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
833 // getopt_long should print a message about unrecognized
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
834 // options and return '?', which is handled above. So if we
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
835 // end up here, it is because there was an option but we
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
836 // forgot to handle it. That should be fatal.
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
837 panic_impossible ();
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
838 break;
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
839 }
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
840 }
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
841
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
842 if (force_gui_option && no_gui_option)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
843 {
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
844 error ("error: only one of --force-gui and --no-gui may be used");
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
845 usage ();
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
846 }
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
847 }
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
848
15139
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
849 // EMBEDDED is declared int instead of bool because this function is
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
850 // declared extern "C".
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
851
15137
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
852 void
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
853 octave_initialize_interpreter (int argc, char **argv, int embedded)
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
854 {
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
855 octave_embedded = embedded;
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
856
3019
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 3014
diff changeset
857 octave_env::set_program_name (argv[0]);
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 3014
diff changeset
858
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
859 octave_program_invocation_name = octave_env::get_program_invocation_name ();
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
860 octave_program_name = octave_env::get_program_name ();
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
861
13281
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13239
diff changeset
862 octave_thread::init ();
834f904a3dcb Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents: 13239
diff changeset
863
5844
034cdbd34c0a [project @ 2006-06-07 15:38:58 by jwe]
jwe
parents: 5832
diff changeset
864 init_signals ();
034cdbd34c0a [project @ 2006-06-07 15:38:58 by jwe]
jwe
parents: 5832
diff changeset
865
11234
2718e1fdf82f IEEE math initialization tweaks
John W. Eaton <jwe@octave.org>
parents: 11157
diff changeset
866 octave_ieee_init ();
2718e1fdf82f IEEE math initialization tweaks
John W. Eaton <jwe@octave.org>
parents: 11157
diff changeset
867
4159
e9e2055ad0af [project @ 2002-11-08 03:27:35 by jwe]
jwe
parents: 4157
diff changeset
868 // The idea here is to force xerbla to be referenced so that we will
e9e2055ad0af [project @ 2002-11-08 03:27:35 by jwe]
jwe
parents: 4157
diff changeset
869 // link to our own version instead of the one provided by the BLAS
e9e2055ad0af [project @ 2002-11-08 03:27:35 by jwe]
jwe
parents: 4157
diff changeset
870 // library. But octave_NaN should never be -1, so we should never
e9e2055ad0af [project @ 2002-11-08 03:27:35 by jwe]
jwe
parents: 4157
diff changeset
871 // actually call xerbla.
e9e2055ad0af [project @ 2002-11-08 03:27:35 by jwe]
jwe
parents: 4157
diff changeset
872
e9e2055ad0af [project @ 2002-11-08 03:27:35 by jwe]
jwe
parents: 4157
diff changeset
873 if (octave_NaN == -1)
11157
c75130f19440 octave.cc: fix call to xerbla
John W. Eaton <jwe@octave.org>
parents: 11140
diff changeset
874 F77_FUNC (xerbla, XERBLA) ("octave", 13 F77_CHAR_ARG_LEN (6));
4159
e9e2055ad0af [project @ 2002-11-08 03:27:35 by jwe]
jwe
parents: 4157
diff changeset
875
721
54a6858bc7e7 [project @ 1994-09-21 15:17:38 by jwe]
jwe
parents: 712
diff changeset
876 initialize_error_handlers ();
223
82c050e70f7a [project @ 1993-11-14 10:58:11 by jwe]
jwe
parents: 206
diff changeset
877
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5781
diff changeset
878 initialize_default_warning_state ();
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5781
diff changeset
879
4368
c45874c087c7 [project @ 2003-03-17 14:01:56 by jwe]
jwe
parents: 4356
diff changeset
880 if (! embedded)
c45874c087c7 [project @ 2003-03-17 14:01:56 by jwe]
jwe
parents: 4356
diff changeset
881 install_signal_handlers ();
9255
1c2d2c9f4a8d don't allow quit() in embedded mode by default, make configurable
Jaroslav Hajek <highegg@gmail.com>
parents: 9217
diff changeset
882 else
1c2d2c9f4a8d don't allow quit() in embedded mode by default, make configurable
Jaroslav Hajek <highegg@gmail.com>
parents: 9217
diff changeset
883 quit_allowed = false;
2205
bd389b53befa [project @ 1996-05-15 06:15:45 by jwe]
jwe
parents: 2095
diff changeset
884
bd389b53befa [project @ 1996-05-15 06:15:45 by jwe]
jwe
parents: 2095
diff changeset
885 initialize_file_io ();
bd389b53befa [project @ 1996-05-15 06:15:45 by jwe]
jwe
parents: 2095
diff changeset
886
2375
7ef24992e290 [project @ 1996-10-12 00:39:52 by jwe]
jwe
parents: 2277
diff changeset
887 install_types ();
7ef24992e290 [project @ 1996-10-12 00:39:52 by jwe]
jwe
parents: 2277
diff changeset
888
7ef24992e290 [project @ 1996-10-12 00:39:52 by jwe]
jwe
parents: 2277
diff changeset
889 install_ops ();
2205
bd389b53befa [project @ 1996-05-15 06:15:45 by jwe]
jwe
parents: 2095
diff changeset
890
bd389b53befa [project @ 1996-05-15 06:15:45 by jwe]
jwe
parents: 2095
diff changeset
891 install_builtins ();
bd389b53befa [project @ 1996-05-15 06:15:45 by jwe]
jwe
parents: 2095
diff changeset
892
15225
2d337a9869e9 correctly handle multiple --path command line arguments
John W. Eaton <jwe@octave.org>
parents: 15224
diff changeset
893 for (std::list<std::string>::const_iterator it = command_line_path.begin ();
2d337a9869e9 correctly handle multiple --path command line arguments
John W. Eaton <jwe@octave.org>
parents: 15224
diff changeset
894 it != command_line_path.end (); it++)
2d337a9869e9 correctly handle multiple --path command line arguments
John W. Eaton <jwe@octave.org>
parents: 15224
diff changeset
895 load_path::set_command_line_path (*it);
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 721
diff changeset
896
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
897 if (! exec_path.empty ())
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
898 set_exec_path (exec_path);
15139
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
899
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
900 if (! image_path.empty ())
15327
cc18c566a7cd Fix --image-path option
Mike Miller <mtmiller@ieee.org>
parents: 15310
diff changeset
901 set_image_path (image_path);
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 721
diff changeset
902
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
903 if (no_window_system)
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
904 display_info::no_window_system ();
1410
5f2cd468a1c3 [project @ 1995-09-15 06:44:52 by jwe]
jwe
parents: 1363
diff changeset
905
2077
2d03b8eb891d [project @ 1996-04-24 00:21:21 by jwe]
jwe
parents: 1996
diff changeset
906 // Make sure we clean up when we exit. Also allow users to register
2d03b8eb891d [project @ 1996-04-24 00:21:21 by jwe]
jwe
parents: 1996
diff changeset
907 // functions. If we don't have atexit or on_exit, we're going to
2d03b8eb891d [project @ 1996-04-24 00:21:21 by jwe]
jwe
parents: 1996
diff changeset
908 // leave some junk files around if we exit abnormally.
2d03b8eb891d [project @ 1996-04-24 00:21:21 by jwe]
jwe
parents: 1996
diff changeset
909
2d03b8eb891d [project @ 1996-04-24 00:21:21 by jwe]
jwe
parents: 1996
diff changeset
910 atexit (do_octave_atexit);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
911
9320
080dc45ea682 don't garble readline settings when line editing is disabled
Jaroslav Hajek <highegg@gmail.com>
parents: 9260
diff changeset
912 // Is input coming from a terminal? If so, we are probably
080dc45ea682 don't garble readline settings when line editing is disabled
Jaroslav Hajek <highegg@gmail.com>
parents: 9260
diff changeset
913 // interactive.
080dc45ea682 don't garble readline settings when line editing is disabled
Jaroslav Hajek <highegg@gmail.com>
parents: 9260
diff changeset
914
9999
653716f3d976 get_debug_input: force interactive input mode; don't get user input unless stdin is a tty
John W. Eaton <jwe@octave.org>
parents: 9753
diff changeset
915 // If stdin is not a tty, then we are reading commands from a pipe or
653716f3d976 get_debug_input: force interactive input mode; don't get user input unless stdin is a tty
John W. Eaton <jwe@octave.org>
parents: 9753
diff changeset
916 // a redirected file.
14160
ebcb0f83698f use gnulib::isatty
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
917 stdin_is_tty = gnulib::isatty (fileno (stdin));
9999
653716f3d976 get_debug_input: force interactive input mode; don't get user input unless stdin is a tty
John W. Eaton <jwe@octave.org>
parents: 9753
diff changeset
918
14160
ebcb0f83698f use gnulib::isatty
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
919 interactive = (! embedded && stdin_is_tty
ebcb0f83698f use gnulib::isatty
John W. Eaton <jwe@octave.org>
parents: 14138
diff changeset
920 && gnulib::isatty (fileno (stdout)));
9320
080dc45ea682 don't garble readline settings when line editing is disabled
Jaroslav Hajek <highegg@gmail.com>
parents: 9260
diff changeset
921
080dc45ea682 don't garble readline settings when line editing is disabled
Jaroslav Hajek <highegg@gmail.com>
parents: 9260
diff changeset
922 if (! interactive && ! forced_line_editing)
080dc45ea682 don't garble readline settings when line editing is disabled
Jaroslav Hajek <highegg@gmail.com>
parents: 9260
diff changeset
923 line_editing = false;
080dc45ea682 don't garble readline settings when line editing is disabled
Jaroslav Hajek <highegg@gmail.com>
parents: 9260
diff changeset
924
9321
9b87aeb24ea9 avoid using readline at all when line editing suppressed or interpreter embedded
Jaroslav Hajek <highegg@gmail.com>
parents: 9320
diff changeset
925 // Force default line editor if we don't want readline editing.
9b87aeb24ea9 avoid using readline at all when line editing suppressed or interpreter embedded
Jaroslav Hajek <highegg@gmail.com>
parents: 9320
diff changeset
926 if (! line_editing)
9b87aeb24ea9 avoid using readline at all when line editing suppressed or interpreter embedded
Jaroslav Hajek <highegg@gmail.com>
parents: 9320
diff changeset
927 command_editor::force_default_editor ();
9b87aeb24ea9 avoid using readline at all when line editing suppressed or interpreter embedded
Jaroslav Hajek <highegg@gmail.com>
parents: 9320
diff changeset
928
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1355
diff changeset
929 // These can come after command line args since none of them set any
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1355
diff changeset
930 // defaults that might be changed by command line options.
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 578
diff changeset
931
9320
080dc45ea682 don't garble readline settings when line editing is disabled
Jaroslav Hajek <highegg@gmail.com>
parents: 9260
diff changeset
932 if (line_editing)
080dc45ea682 don't garble readline settings when line editing is disabled
Jaroslav Hajek <highegg@gmail.com>
parents: 9260
diff changeset
933 initialize_command_input ();
315
260863721a51 [project @ 1994-01-28 04:22:45 by jwe]
jwe
parents: 290
diff changeset
934
4217
301cc4cf87e9 [project @ 2002-12-05 03:33:01 by jwe]
jwe
parents: 4159
diff changeset
935 octave_interpreter_ready = true;
301cc4cf87e9 [project @ 2002-12-05 03:33:01 by jwe]
jwe
parents: 4159
diff changeset
936
5654
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
937 initialize_version_info ();
6aae52010e3b [project @ 2006-03-09 19:04:53 by jwe]
jwe
parents: 5502
diff changeset
938
8099
e0a6e54f5a19 octave.cc (octave_main): make all command-line arguments available to startup scripts
John W. Eaton <jwe@octave.org>
parents: 8021
diff changeset
939 // Make all command-line arguments available to startup files,
e0a6e54f5a19 octave.cc (octave_main): make all command-line arguments available to startup scripts
John W. Eaton <jwe@octave.org>
parents: 8021
diff changeset
940 // including PKG_ADD files.
e0a6e54f5a19 octave.cc (octave_main): make all command-line arguments available to startup scripts
John W. Eaton <jwe@octave.org>
parents: 8021
diff changeset
941
e0a6e54f5a19 octave.cc (octave_main): make all command-line arguments available to startup scripts
John W. Eaton <jwe@octave.org>
parents: 8021
diff changeset
942 intern_argv (argc, argv);
e0a6e54f5a19 octave.cc (octave_main): make all command-line arguments available to startup scripts
John W. Eaton <jwe@octave.org>
parents: 8021
diff changeset
943
6365
ccdb8ffbb994 [project @ 2007-02-27 19:43:35 by jwe]
jwe
parents: 6159
diff changeset
944 load_path::initialize (set_initial_path);
4217
301cc4cf87e9 [project @ 2002-12-05 03:33:01 by jwe]
jwe
parents: 4159
diff changeset
945
13239
3109c8b0cff4 Initialise history before executing startup files (bug #32900)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12855
diff changeset
946 initialize_history (read_history_file);
15137
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
947 }
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
948
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
949 int
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
950 octave_execute_interpreter (void)
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
951 {
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
952 if (! inhibit_startup_message)
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
953 std::cout << OCTAVE_STARTUP_MESSAGE "\n" << std::endl;
1651
e846e361a265 [project @ 1995-12-20 06:59:12 by jwe]
jwe
parents: 1613
diff changeset
954
13239
3109c8b0cff4 Initialise history before executing startup files (bug #32900)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 12855
diff changeset
955 execute_startup_files ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
956
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 565
diff changeset
957 if (! inhibit_startup_message && reading_startup_message_printed)
3538
0ff7323dab8b [project @ 2000-02-02 12:36:25 by jwe]
jwe
parents: 3531
diff changeset
958 std::cout << std::endl;
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 565
diff changeset
959
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1355
diff changeset
960 // If there is an extra argument, see if it names a file to read.
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1355
diff changeset
961 // Additional arguments are taken as command line options for the
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1355
diff changeset
962 // script.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
963
10195
b49d47b637b7 use getopt directly instead of the (mostly useless) prog_args wrapper class
John W. Eaton <jwe@octave.org>
parents: 10191
diff changeset
964 int last_arg_idx = optind;
3019
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 3014
diff changeset
965
15137
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
966 int remaining_args = octave_cmdline_argc - last_arg_idx;
3019
92aa3d651723 [project @ 1997-06-03 22:07:16 by jwe]
jwe
parents: 3014
diff changeset
967
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
968 if (! code_to_eval.empty ())
149
471912bc76c4 [project @ 1993-10-05 19:11:06 by jwe]
jwe
parents: 143
diff changeset
969 {
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
970 int parse_status = execute_eval_option_code (code_to_eval);
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
971
5242
937358a05a18 [project @ 2005-03-24 06:23:10 by jwe]
jwe
parents: 5228
diff changeset
972 if (! (persist || remaining_args > 0))
10315
57a59eae83cc untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents: 10250
diff changeset
973 clean_up_and_exit (parse_status || error_state ? 1 : 0);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
974 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
975
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
976 if (remaining_args > 0)
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
977 {
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
978 // If we are running an executable script (#! /bin/octave) then
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
979 // we should only see the args passed to the script.
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
980
15137
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
981 intern_argv (remaining_args, octave_cmdline_argv+last_arg_idx);
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
982
15137
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
983 execute_command_line_file (octave_cmdline_argv[last_arg_idx]);
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
984
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
985 if (! persist)
14074
f90c3facfac3 don't reset parser when exiting (bug #35120)
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
986 {
f90c3facfac3 don't reset parser when exiting (bug #35120)
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
987 quitting_gracefully = true;
f90c3facfac3 don't reset parser when exiting (bug #35120)
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
988
f90c3facfac3 don't reset parser when exiting (bug #35120)
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
989 clean_up_and_exit (error_state ? 1 : 0);
f90c3facfac3 don't reset parser when exiting (bug #35120)
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
990 }
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
991 }
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
992
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
993 // Avoid counting commands executed from startup files.
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
994
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
995 command_editor::reset_current_command_number (1);
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
996
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
997 // Now argv should have the full set of args.
15137
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
998 intern_argv (octave_cmdline_argc, octave_cmdline_argv);
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
999
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1355
diff changeset
1000 // Force input to be echoed if not really interactive, but the user
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1355
diff changeset
1001 // has forced interactive behavior.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1002
1907
8c6cea97eb80 [project @ 1996-02-10 01:12:46 by jwe]
jwe
parents: 1884
diff changeset
1003 if (! interactive && forced_interactive)
287
6027a905fc06 [project @ 1994-01-13 01:41:00 by jwe]
jwe
parents: 285
diff changeset
1004 {
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2910
diff changeset
1005 command_editor::blink_matching_paren (false);
1588
27f5ac98fc4a [project @ 1995-10-31 06:04:47 by jwe]
jwe
parents: 1572
diff changeset
1006
5775
ace8d8d26933 [project @ 2006-04-24 19:13:06 by jwe]
jwe
parents: 5658
diff changeset
1007 // FIXME -- is this the right thing to do?
1588
27f5ac98fc4a [project @ 1995-10-31 06:04:47 by jwe]
jwe
parents: 1572
diff changeset
1008
15477
8b5fc510c6d6 don't use bind_internal_variable when handling -x option
John W. Eaton <jwe@octave.org>
parents: 15476
diff changeset
1009 Fecho_executing_commands (octave_value (ECHO_CMD_LINE));
287
6027a905fc06 [project @ 1994-01-13 01:41:00 by jwe]
jwe
parents: 285
diff changeset
1010 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1011
15137
16a6b0a6855d GUI: support for octave arguments and integrate with run-octave.
John W. Eaton <jwe@octave.org>
parents: 14619
diff changeset
1012 if (octave_embedded)
5502
dae5ba706ff2 [project @ 2005-10-20 06:37:30 by jwe]
jwe
parents: 5307
diff changeset
1013 {
5775
ace8d8d26933 [project @ 2006-04-24 19:13:06 by jwe]
jwe
parents: 5658
diff changeset
1014 // FIXME -- do we need to do any cleanup here before
5502
dae5ba706ff2 [project @ 2005-10-20 06:37:30 by jwe]
jwe
parents: 5307
diff changeset
1015 // returning? If we don't, what will happen to Octave functions
dae5ba706ff2 [project @ 2005-10-20 06:37:30 by jwe]
jwe
parents: 5307
diff changeset
1016 // that have been registered to execute with atexit, for example?
dae5ba706ff2 [project @ 2005-10-20 06:37:30 by jwe]
jwe
parents: 5307
diff changeset
1017
dae5ba706ff2 [project @ 2005-10-20 06:37:30 by jwe]
jwe
parents: 5307
diff changeset
1018 return 1;
dae5ba706ff2 [project @ 2005-10-20 06:37:30 by jwe]
jwe
parents: 5307
diff changeset
1019 }
4368
c45874c087c7 [project @ 2003-03-17 14:01:56 by jwe]
jwe
parents: 4356
diff changeset
1020
5189
85b315ad5f7d [project @ 2005-03-04 02:46:08 by jwe]
jwe
parents: 5102
diff changeset
1021 int retval = main_loop ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1022
1005
46a2983cb297 [project @ 1995-01-03 02:08:32 by jwe]
jwe
parents: 984
diff changeset
1023 if (retval == 1 && ! error_state)
46a2983cb297 [project @ 1995-01-03 02:08:32 by jwe]
jwe
parents: 984
diff changeset
1024 retval = 0;
46a2983cb297 [project @ 1995-01-03 02:08:32 by jwe]
jwe
parents: 984
diff changeset
1025
14074
f90c3facfac3 don't reset parser when exiting (bug #35120)
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1026 quitting_gracefully = true;
f90c3facfac3 don't reset parser when exiting (bug #35120)
John W. Eaton <jwe@octave.org>
parents: 13281
diff changeset
1027
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1028 clean_up_and_exit (retval);
4247
fc9a075d10fb [project @ 2002-12-30 23:05:27 by jwe]
jwe
parents: 4233
diff changeset
1029
fc9a075d10fb [project @ 2002-12-30 23:05:27 by jwe]
jwe
parents: 4233
diff changeset
1030 return 0;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1031 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1032
15702
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1033 static bool
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1034 check_starting_gui (void)
15139
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1035 {
15290
99db33cae82b don't start the GUI if window system is disabled
Mike Miller <mtmiller@ieee.org>
parents: 15262
diff changeset
1036 if (no_window_system || ! display_info::display_available ())
15160
973296940c89 don't start GUI if display is not available
John W. Eaton <jwe@octave.org>
parents: 15139
diff changeset
1037 return false;
973296940c89 don't start GUI if display is not available
John W. Eaton <jwe@octave.org>
parents: 15139
diff changeset
1038
15139
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1039 if (force_gui_option)
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1040 return true;
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1041
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1042 if (no_gui_option)
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1043 return false;
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1044
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1045 if (persist)
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1046 return true;
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1047
15224
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
1048 // If stdin is not a tty, then assume we are reading commands from a
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
1049 // pipe or a redirected file and the GUI should not start. If this is
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
1050 // not the case (for example, starting from a desktop "launcher" with
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
1051 // no terminal) and you want to start the GUI, you may use the
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
1052 // --force-gui option to start the GUI.
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
1053
a44e4a08fc55 perform fewer actions before starting GUI
John W. Eaton <jwe@octave.org>
parents: 15223
diff changeset
1054 if (! gnulib::isatty (fileno (stdin)))
15139
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1055 return false;
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1056
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1057 // If we have code to eval or execute from a file, and we are going to
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1058 // exit immediately after executing it, don't start the gui.
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1059
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1060 int last_arg_idx = optind;
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1061 int remaining_args = octave_cmdline_argc - last_arg_idx;
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1062
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1063 if (! code_to_eval.empty () || remaining_args > 0)
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1064 return false;
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1065
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1066 return true;
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1067 }
bfc220d1de67 include gui in default Octave binary
John W. Eaton <jwe@octave.org>
parents: 15137
diff changeset
1068
15702
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1069 // Return int instead of bool because this function is declared
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1070 // extern "C".
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1071
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1072 int
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1073 octave_starting_gui (void)
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1074 {
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1075 start_gui = check_starting_gui ();
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1076 return start_gui;
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1077 }
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1078
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1079 DEFUN (isguirunning, args, ,
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1080 "-*- texinfo -*-\n\
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1081 @deftypefn {Built-in Function} {} isguirunning ()\n\
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1082 Return true if Octave is running in GUI mode and false otherwise.\n\
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1083 @end deftypefn")
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1084 {
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1085 octave_value retval;
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1086
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1087 if (args.length () == 0)
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1088 retval = start_gui;
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1089 else
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1090 print_usage ();
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1091
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1092 return retval;
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1093 }
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1094
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1095 /*
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1096 %!assert (islogical (isguirunning ()))
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1097 %!error isguirunning (1)
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1098 */
534b6f7108b7 Add isguirunning function to query whether the GUI is running
Mike Miller <mtmiller@ieee.org>
parents: 15490
diff changeset
1099
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1100 DEFUN (argv, args, ,
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1101 "-*- texinfo -*-\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1102 @deftypefn {Built-in Function} {} argv ()\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1103 Return the command line arguments passed to Octave. For example,\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1104 if you invoked Octave using the command\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1105 \n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1106 @example\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1107 octave --no-line-editing --silent\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1108 @end example\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1109 \n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1110 @noindent\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1111 @code{argv} would return a cell array of strings with the elements\n\
10840
89f4d7e294cc Grammarcheck .cc files
Rik <octave@nomad.inbox5.com>
parents: 10731
diff changeset
1112 @option{--no-line-editing} and @option{--silent}.\n\
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1113 \n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1114 If you write an executable Octave script, @code{argv} will return the\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1115 list of arguments passed to the script. @xref{Executable Octave Programs},\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1116 for an example of how to create an executable Octave script.\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1117 @end deftypefn")
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1118 {
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1119 octave_value retval;
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1120
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1121 if (args.length () == 0)
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1122 retval = Cell (octave_argv);
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1123 else
5823
080c08b192d8 [project @ 2006-05-19 05:32:17 by jwe]
jwe
parents: 5814
diff changeset
1124 print_usage ();
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1125
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1126 return retval;
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1127 }
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1128
12848
e3323dda983b codesprint: new tests for octave.cc
John W. Eaton <jwe@octave.org>
parents: 12335
diff changeset
1129 /*
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14160
diff changeset
1130 %!assert (iscellstr (argv ()))
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14160
diff changeset
1131 %!error argv (1)
12848
e3323dda983b codesprint: new tests for octave.cc
John W. Eaton <jwe@octave.org>
parents: 12335
diff changeset
1132 */
e3323dda983b codesprint: new tests for octave.cc
John W. Eaton <jwe@octave.org>
parents: 12335
diff changeset
1133
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1134 DEFUN (program_invocation_name, args, ,
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1135 "-*- texinfo -*-\n\
9724
f22bbc5d56e9 Fix various incorrect usages of TeXinfo deffn and deftypefn macros
Rik <rdrider0-list@yahoo.com>
parents: 9584
diff changeset
1136 @deftypefn {Built-in Function} {} program_invocation_name ()\n\
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1137 Return the name that was typed at the shell prompt to run Octave.\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1138 \n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1139 If executing a script from the command line (e.g., @code{octave foo.m})\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1140 or using an executable Octave script, the program name is set to the\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1141 name of the script. @xref{Executable Octave Programs}, for an example of\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1142 how to create an executable Octave script.\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1143 @seealso{program_name}\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1144 @end deftypefn")
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1145 {
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1146 octave_value retval;
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1147
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1148 if (args.length () == 0)
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1149 retval = octave_program_invocation_name;
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1150 else
5823
080c08b192d8 [project @ 2006-05-19 05:32:17 by jwe]
jwe
parents: 5814
diff changeset
1151 print_usage ();
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1152
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1153 return retval;
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1154 }
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1155
12848
e3323dda983b codesprint: new tests for octave.cc
John W. Eaton <jwe@octave.org>
parents: 12335
diff changeset
1156 /*
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14160
diff changeset
1157 %!assert (ischar (program_invocation_name ()))
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14160
diff changeset
1158 %!error program_invocation_name (1)
12848
e3323dda983b codesprint: new tests for octave.cc
John W. Eaton <jwe@octave.org>
parents: 12335
diff changeset
1159 */
e3323dda983b codesprint: new tests for octave.cc
John W. Eaton <jwe@octave.org>
parents: 12335
diff changeset
1160
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1161 DEFUN (program_name, args, ,
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1162 "-*- texinfo -*-\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1163 @deftypefn {Built-in Function} {} program_name ()\n\
8347
fa78cb8d8a5c corrections for typos
Brian Gough<bjg@network-theory.co.uk>
parents: 8273
diff changeset
1164 Return the last component of the value returned by\n\
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1165 @code{program_invocation_name}.\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1166 @seealso{program_invocation_name}\n\
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1167 @end deftypefn")
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1168 {
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1169 octave_value retval;
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1170
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1171 if (args.length () == 0)
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1172 retval = octave_program_name;
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1173 else
5823
080c08b192d8 [project @ 2006-05-19 05:32:17 by jwe]
jwe
parents: 5814
diff changeset
1174 print_usage ();
5780
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1175
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1176 return retval;
cbf717bf8150 [project @ 2006-04-27 20:02:30 by jwe]
jwe
parents: 5775
diff changeset
1177 }
12848
e3323dda983b codesprint: new tests for octave.cc
John W. Eaton <jwe@octave.org>
parents: 12335
diff changeset
1178
e3323dda983b codesprint: new tests for octave.cc
John W. Eaton <jwe@octave.org>
parents: 12335
diff changeset
1179 /*
14429
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14160
diff changeset
1180 %!assert (ischar (program_name ()))
eff4a5933e28 Update %!tests in src/ directory with Octave coding conventions.
Rik <octave@nomad.inbox5.com>
parents: 14160
diff changeset
1181 %!error program_name (1)
12848
e3323dda983b codesprint: new tests for octave.cc
John W. Eaton <jwe@octave.org>
parents: 12335
diff changeset
1182 */