Mercurial > hg > octave-lyh
changeset 3341:14cfc9475fe4
[project @ 1999-11-05 08:11:58 by jwe]
author | jwe |
---|---|
date | Fri, 05 Nov 1999 08:11:59 +0000 |
parents | 585a8809fd9b |
children | d8d3700fb4ab |
files | src/file-io.cc src/oct-stream.cc src/oct-stream.h src/syscalls.cc |
diffstat | 4 files changed, 93 insertions(+), 112 deletions(-) [+] |
line wrap: on
line diff
--- a/src/file-io.cc +++ b/src/file-io.cc @@ -94,12 +94,6 @@ octave_stream_list::clear (); } -static void -gripe_invalid_file_id (const char *fcn) -{ - ::error ("%s: invalid file id", fcn); -} - static int fopen_mode_to_ios_mode (const string& mode) { @@ -161,12 +155,8 @@ int nargin = args.length (); if (nargin == 1) - { - retval = static_cast<double> (octave_stream_list::remove (args(0))); - - if (retval < 0) - gripe_invalid_file_id ("fclose"); - } + retval = static_cast<double> (octave_stream_list::remove (args(0), + "fclose")); else print_usage ("fclose"); @@ -194,12 +184,10 @@ } else { - octave_stream os = octave_stream_list::lookup (fid); + octave_stream os = octave_stream_list::lookup (fid, "fflush"); - if (os.is_valid ()) + if (! error_state) retval = static_cast<double> (os.flush ()); - else - gripe_invalid_file_id ("fflush"); } } else @@ -222,9 +210,9 @@ if (nargin == 1 || nargin == 2) { - octave_stream os = octave_stream_list::lookup (args(0)); + octave_stream os = octave_stream_list::lookup (args(0), "fgetl"); - if (os.is_valid ()) + if (! error_state) { octave_value len_arg = (nargin == 2) ? args(1) : octave_value (static_cast<double> (INT_MAX)); @@ -239,8 +227,6 @@ retval(0) = tmp; } } - else - gripe_invalid_file_id ("fgetl"); } else print_usage ("fgetl"); @@ -262,9 +248,9 @@ if (nargin == 1 || nargin == 2) { - octave_stream os = octave_stream_list::lookup (args(0)); + octave_stream os = octave_stream_list::lookup (args(0), "fgets"); - if (os.is_valid ()) + if (! error_state) { octave_value len_arg = (nargin == 2) ? args(1) : octave_value (static_cast<double> (INT_MAX)); @@ -279,8 +265,6 @@ retval(0) = tmp; } } - else - gripe_invalid_file_id ("fgets"); } else print_usage ("fgets"); @@ -472,12 +456,10 @@ if (nargin == 1) { - octave_stream os = octave_stream_list::lookup (args(0)); + octave_stream os = octave_stream_list::lookup (args(0), "frewind"); - if (os.is_valid ()) + if (! error_state) retval = static_cast<double> (os.rewind ()); - else - gripe_invalid_file_id ("frewind"); } else print_usage ("frewind"); @@ -502,17 +484,15 @@ if (nargin == 2 || nargin == 3) { - octave_stream os = octave_stream_list::lookup (args(0)); + octave_stream os = octave_stream_list::lookup (args(0), "fseek"); - if (os.is_valid ()) + if (! error_state) { octave_value origin_arg = (nargin == 3) ? args(2) : octave_value (-1.0); retval = static_cast<double> (os.seek (args(1), origin_arg)); } - else - ::error ("fseek: invalid file id"); } else print_usage ("fseek"); @@ -529,12 +509,10 @@ if (nargin == 1) { - octave_stream os = octave_stream_list::lookup (args(0)); + octave_stream os = octave_stream_list::lookup (args(0), "ftell"); - if (os.is_valid ()) + if (! error_state) retval = static_cast<double> (os.tell ()); - else - gripe_invalid_file_id ("ftell"); } else print_usage ("ftell"); @@ -555,14 +533,14 @@ int fmt_n = 0; if (args(0).is_string ()) - os = octave_stream_list::lookup (1); + os = octave_stream_list::lookup (1, "fprintf"); else { fmt_n = 1; - os = octave_stream_list::lookup (args(0)); + os = octave_stream_list::lookup (args(0), "fprintf"); } - if (os.is_valid ()) + if (! error_state) { if (args(fmt_n).is_string ()) { @@ -583,8 +561,6 @@ else ::error ("fprintf: format must be a string"); } - else - gripe_invalid_file_id ("fprintf"); } else print_usage ("fprintf"); @@ -601,12 +577,10 @@ if (nargin == 2) { - octave_stream os = octave_stream_list::lookup (args(0)); + octave_stream os = octave_stream_list::lookup (args(0), "fputs"); - if (os.is_valid ()) + if (! error_state) retval = os.puts (args(1)); - else - gripe_invalid_file_id ("fputs"); } else print_usage ("fputs"); @@ -692,9 +666,9 @@ if (nargin == 3 && args(2).is_string ()) { - octave_stream os = octave_stream_list::lookup (args(0)); + octave_stream os = octave_stream_list::lookup (args(0), "fscanf"); - if (os.is_valid ()) + if (! error_state) { if (args(1).is_string ()) { @@ -705,8 +679,6 @@ else ::error ("fscanf: format must be a string"); } - else - gripe_invalid_file_id ("fscanf"); } else { @@ -715,9 +687,9 @@ if (nargin == 2 || nargin == 3) { - octave_stream os = octave_stream_list::lookup (args(0)); + octave_stream os = octave_stream_list::lookup (args(0), "fscanf"); - if (os.is_valid ()) + if (error_state) { if (args(1).is_string ()) { @@ -739,8 +711,6 @@ else ::error ("fscanf: format must be a string"); } - else - gripe_invalid_file_id ("fscanf"); } else print_usage ("fscanf"); @@ -983,9 +953,9 @@ retval(1) = -1.0; retval(0) = Matrix (); - octave_stream os = octave_stream_list::lookup (args(0)); + octave_stream os = octave_stream_list::lookup (args(0), "fread"); - if (os.is_valid ()) + if (! error_state) { octave_value size = (nargin > 1) ? args(1) : octave_value (octave_Inf); @@ -1006,8 +976,6 @@ retval(1) = static_cast<double> (count); retval(0) = tmp; } - else - gripe_invalid_file_id ("fread"); } else print_usage ("fread"); @@ -1111,9 +1079,9 @@ if (nargin > 1 && nargin < 6) { - octave_stream os = octave_stream_list::lookup (args(0)); + octave_stream os = octave_stream_list::lookup (args(0), "fwrite"); - if (os.is_valid ()) + if (! error_state) { octave_value data = args(1); @@ -1130,8 +1098,6 @@ retval = status; } - else - gripe_invalid_file_id ("fwrite"); } else print_usage ("fwrite"); @@ -1151,12 +1117,10 @@ if (nargin == 1) { - octave_stream os = octave_stream_list::lookup (args(0)); + octave_stream os = octave_stream_list::lookup (args(0), "feof"); - if (os.is_valid ()) + if (! error_state) retval = os.eof () ? 1.0 : 0.0; - else - gripe_invalid_file_id ("feof"); } else print_usage ("feof"); @@ -1176,9 +1140,9 @@ if (nargin == 1 || nargin == 2) { - octave_stream os = octave_stream_list::lookup (args(0)); + octave_stream os = octave_stream_list::lookup (args(0), "ferror"); - if (os.is_valid ()) + if (! error_state) { bool clear = false; @@ -1199,8 +1163,6 @@ retval(1) = static_cast<double> (error_number); retval(0) = error_message; } - else - gripe_invalid_file_id ("ferror"); } else print_usage ("ferror"); @@ -1294,12 +1256,8 @@ int nargin = args.length (); if (nargin == 1) - { - retval = static_cast<double> (octave_stream_list::remove (args(0))); - - if (retval < 0) - gripe_invalid_file_id ("pclose"); - } + retval = static_cast<double> (octave_stream_list::remove (args(0), + "pclose")); else print_usage ("pclose");
--- a/src/oct-stream.cc +++ b/src/oct-stream.cc @@ -2638,27 +2638,27 @@ } octave_stream -octave_stream_list::lookup (int fid) +octave_stream_list::lookup (int fid, const string& who) { - return (instance_ok ()) ? instance->do_lookup (fid) : octave_stream (); + return (instance_ok ()) ? instance->do_lookup (fid, who) : octave_stream (); } octave_stream -octave_stream_list::lookup (const octave_value& fid) +octave_stream_list::lookup (const octave_value& fid, const string& who) { - return (instance_ok ()) ? instance->do_lookup (fid) : octave_stream (); + return (instance_ok ()) ? instance->do_lookup (fid, who) : octave_stream (); } int -octave_stream_list::remove (int fid) +octave_stream_list::remove (int fid, const string& who) { - return (instance_ok ()) ? instance->do_remove (fid) : -1; + return (instance_ok ()) ? instance->do_remove (fid, who) : -1; } int -octave_stream_list::remove (const octave_value& fid) +octave_stream_list::remove (const octave_value& fid, const string& who) { - return (instance_ok ()) ? instance->do_remove (fid) : -1; + return (instance_ok ()) ? instance->do_remove (fid, who) : -1; } void @@ -2736,32 +2736,44 @@ return octave_value (os, stream_number); } +static void +gripe_invalid_file_id (int fid, const string& who) +{ + if (who.empty ()) + ::error ("invalid stream number = %d", fid); + else + ::error ("%s: invalid stream number = %d", who.c_str (), fid); +} + octave_stream -octave_stream_list::do_lookup (int fid) const +octave_stream_list::do_lookup (int fid, const string& who) const { octave_stream retval; if (fid >= 0 && fid < curr_len) retval = list(fid); + else + gripe_invalid_file_id (fid, who); return retval; } octave_stream -octave_stream_list::do_lookup (const octave_value& fid) const +octave_stream_list::do_lookup (const octave_value& fid, + const string& who) const { octave_stream retval; int i = get_file_number (fid); if (! error_state) - retval = do_lookup (i); + retval = do_lookup (i, who); return retval; } int -octave_stream_list::do_remove (int fid) +octave_stream_list::do_remove (int fid, const string& who) { int retval = -1; @@ -2771,26 +2783,30 @@ { octave_stream os = list(fid); - if (os) + if (os.is_valid ()) { os.close (); list(fid) = octave_stream (); retval = 0; } + else + gripe_invalid_file_id (fid, who); } + else + gripe_invalid_file_id (fid, who); return retval; } int -octave_stream_list::do_remove (const octave_value& fid) +octave_stream_list::do_remove (const octave_value& fid, const string& who) { int retval = -1; int i = get_file_number (fid); if (! error_state) - retval = do_remove (i); + retval = do_remove (i, who); return retval; } @@ -2816,7 +2832,7 @@ octave_stream os = do_lookup (fid); - if (os) + if (os.is_valid ()) { retval.resize (3); @@ -2825,7 +2841,7 @@ retval(2) = oct_mach_info::float_format_as_string (os.float_format ()); } else - ::error ("invalid file id"); + ::error ("invalid file id = %d", fid); return retval; }
--- a/src/oct-stream.h +++ b/src/oct-stream.h @@ -495,11 +495,13 @@ static octave_value insert (const octave_stream& os); - static octave_stream lookup (int fid); - static octave_stream lookup (const octave_value& fid); + static octave_stream lookup (int fid, const string& who = string ()); + static octave_stream lookup (const octave_value& fid, + const string& who = string ()); - static int remove (int fid); - static int remove (const octave_value& fid); + static int remove (int fid, const string& who = string ()); + static int remove (const octave_value& fid, + const string& who = string ()); static void clear (void); @@ -522,11 +524,12 @@ octave_value do_insert (const octave_stream& os); - octave_stream do_lookup (int fid) const; - octave_stream do_lookup (const octave_value& fid) const; + octave_stream do_lookup (int fid, const string& who = string ()) const; + octave_stream do_lookup (const octave_value& fid, + const string& who = string ()) const; - int do_remove (int fid); - int do_remove (const octave_value& fid); + int do_remove (int fid, const string& who = string ()); + int do_remove (const octave_value& fid, const string& who = string ()); void do_clear (void);
--- a/src/syscalls.cc +++ b/src/syscalls.cc @@ -108,25 +108,29 @@ if (nargin == 2) { - octave_stream old_stream = octave_stream_list::lookup (args(0)); - octave_stream new_stream = octave_stream_list::lookup (args(1)); + octave_stream old_stream + = octave_stream_list::lookup (args(0), "dup2"); - if (old_stream.is_valid () && new_stream.is_valid ()) + if (! error_state) { - int i_old = old_stream.file_number (); - int i_new = new_stream.file_number (); + octave_stream new_stream + = octave_stream_list::lookup (args(1), "dup2"); - if (i_old >= 0 && i_new >= 0) + if (! error_state) { - string msg; + int i_old = old_stream.file_number (); + int i_new = new_stream.file_number (); - int status = octave_syscalls::dup2 (i_old, i_new, msg); + if (i_old >= 0 && i_new >= 0) + { + string msg; - retval(0) = static_cast<double> (status); - retval(1) = msg; + int status = octave_syscalls::dup2 (i_old, i_new, msg); + + retval(0) = static_cast<double> (status); + retval(1) = msg; + } } - else - error ("dup2: invalid file id"); } else error ("dup2: invalid stream");