From bug-octave-request at bevo dot che dot wisc dot edu Fri Sep 1 01:08:11 2000 Subject: File ID and file descriptor confusion - the fcntl bug From: "John W. Eaton" To: "John W. Eaton" Cc: jmr at ieeta dot pt, bug-octave@bevo.che.wisc.edu Date: Fri, 1 Sep 2000 01:08:07 -0500 (CDT) On 1-Sep-2000, John W. Eaton wrote: | The changes I made for the 2.0.x sources are appended below. Similar | changes have been checked in to the 2.1.x CVS archive. Oops, I forgot to append them. Here they are: *** src/syscalls.cc~ Thu Aug 6 15:50:39 1998 --- src/syscalls.cc Fri Sep 1 00:52:03 2000 *************** *** 239,268 **** if (nargin == 3) { #if defined (HAVE_FCNTL) ! double d_fid = args(0).double_value (); ! double d_req = args(1).double_value (); ! double d_arg = args(2).double_value (); ! ! if (! error_state ! && D_NINT (d_fid) == d_fid ! && D_NINT (d_req) == d_req ! && D_NINT (d_arg) == d_arg) { ! int fid = NINT (d_fid); ! int req = NINT (d_req); ! int arg = NINT (d_arg); ! ! // XXX FIXME XXX -- Need better checking here? ! if (fid < 0) ! error ("fcntl: invalid file id"); ! else { ! int status = fcntl (fid, req, arg); ! retval(0) = (double) status; ! if (status < 0) ! retval(1) = strerror (errno); } } else --- 239,272 ---- if (nargin == 3) { #if defined (HAVE_FCNTL) ! octave_stream *strm = octave_stream_list::lookup (args(0)); ! ! if (! error_state) { ! int fid = strm->file_number (); ! ! double d_req = args(1).double_value (); ! double d_arg = args(2).double_value (); ! ! if (! error_state ! && D_NINT (d_req) == d_req ! && D_NINT (d_arg) == d_arg) { ! int req = NINT (d_req); ! int arg = NINT (d_arg); ! ! // XXX FIXME XXX -- Need better checking here? ! if (fid < 0) ! error ("fcntl: invalid file id"); ! else ! { ! int status = fcntl (fid, req, arg); ! retval(0) = (double) status; ! if (status < 0) ! retval(1) = strerror (errno); ! } } } else ----------------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.che.wisc.edu/octave/octave.html How to fund new projects: http://www.che.wisc.edu/octave/funding.html Subscription information: http://www.che.wisc.edu/octave/archive.html -----------------------------------------------------------------------