Commit Graph

303 Commits

Author SHA1 Message Date
Thomas Koenig e08e57d0c5 re PR fortran/31618 ([4.2, 4.1 only] backspace intrinsic is not working on an unformatted file)
2007-04-23  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/31618
	* io/transfer.c (read_block_direct):  Instead of calling us_read,
	set dtp->u.p.current_unit->current_record = 0 so that pre_position
	will read the record marker.
	(data_transfer_init):  For different error conditions, call
	generate_error, then return.

2007-04-23  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/31618
	* gfortran.dg/backspace_8.f:  New test case.

From-SVN: r124079
2007-04-23 19:43:54 +00:00
Jerry DeLisle b4501dfdd2 open.c (test_endfile): Revert changes for 31052, restoring this function.
2007-04-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	* io/open.c (test_endfile): Revert changes for 31052, restoring this
	function.

From-SVN: r123842
2007-04-15 01:53:43 +00:00
Francois-Xavier Coudert 5e9f08ba5d cpu_time.c: Don't include headers already included by libgfortran.h.
* intrinsics/cpu_time.c: Don't include headers already included
	by libgfortran.h. Protect inclusion of sys/times.h.
	* configure.ac: Remove unneeded checks for finit, stdio.h,
	stddef.h, math.h and sys/params.h.
	* config/fpu-aix.h: Don't include headers already included by
	libgfortran.h.
	* config/fpu-sysv.h: Likewise.
	* io/write.c: Likewise.
	* m4/minloc1.m4: Likewise.
	* m4/maxloc1.m4: Likewise.
	* m4/fraction.m4: Likewise.
	* m4/set_exponent.m4: Likewise.
	* m4/spacing.m4: Likewise.
	* m4/minval.m4: Likewise.
	* m4/maxval.m4: Likewise.
	* m4/exponent.m4: Likewise.
	* m4/nearest.m4: Likewise.
	* m4/minloc0.m4: Likewise.
	* m4/maxloc0.m4: Likewise.
	* m4/rrspacing.m4: Likewise.
	* runtime/main.c: Likewise.
	* runtime/error.c: Likewise.
	* intrinsics/system_clock.c: Likewise.
	* intrinsics/etime.c: Likewise.
	* intrinsics/stat.c: Likewise.
	* intrinsics/date_and_time.c: Likewise.
	* intrinsics/env.c: Likewise.
	* intrinsics/kill.c: Likewise.
	* intrinsics/getXid.c: Likewise.
	* intrinsics/chmod.c: Likewise.
	* intrinsics/args.c: Likewise.
	* intrinsics/c99_functions.c: Likewise.
	* generated/minval_r8.c: Regenerate.
	* generated/maxloc1_4_r8.c: Regenerate.
	* generated/minloc1_16_r16.c: Regenerate.
	* generated/maxval_i2.c: Regenerate.
	* generated/maxloc1_8_i4.c: Regenerate.
	* generated/exponent_r16.c: Regenerate.
	* generated/maxloc0_4_r4.c: Regenerate.
	* generated/fraction_r16.c: Regenerate.
	* generated/fraction_r4.c: Regenerate.
	* generated/minloc0_4_r16.c: Regenerate.
	* generated/minloc0_4_i1.c: Regenerate.
	* generated/maxloc0_4_r16.c: Regenerate.
	* generated/maxloc0_4_i2.c: Regenerate.
	* generated/minloc1_8_r16.c: Regenerate.
	* generated/maxloc1_8_r16.c: Regenerate.
	* generated/set_exponent_r8.c: Regenerate.
	* generated/maxloc0_8_i8.c: Regenerate.
	* generated/minloc1_4_r8.c: Regenerate.
	* generated/maxloc1_16_r16.c: Regenerate.
	* generated/minloc1_16_i4.c: Regenerate.
	* generated/maxloc1_16_i4.c: Regenerate.
	* generated/minloc0_16_i8.c: Regenerate.
	* generated/maxloc0_16_i8.c: Regenerate.
	* generated/nearest_r8.c: Regenerate.
	* generated/spacing_r16.c: Regenerate.
	* generated/maxval_r16.c: Regenerate.
	* generated/minloc1_8_i4.c: Regenerate.
	* generated/minloc0_16_i16.c: Regenerate.
	* generated/minloc0_4_r4.c: Regenerate.
	* generated/set_exponent_r10.c: Regenerate.
	* generated/rrspacing_r10.c: Regenerate.
	* generated/minloc0_4_i2.c: Regenerate.
	* generated/maxloc0_8_i1.c: Regenerate.
	* generated/minloc0_8_i8.c: Regenerate.
	* generated/spacing_r4.c: Regenerate.
	* generated/minloc1_16_r10.c: Regenerate.
	* generated/minloc0_16_i1.c: Regenerate.
	* generated/maxloc0_16_i1.c: Regenerate.
	* generated/maxloc1_8_r8.c: Regenerate.
	* generated/minval_i16.c: Regenerate.
	* generated/exponent_r10.c: Regenerate.
	* generated/maxval_i4.c: Regenerate.
	* generated/minval_i8.c: Regenerate.
	* generated/maxloc1_4_i8.c: Regenerate.
	* generated/fraction_r10.c: Regenerate.
	* generated/maxloc0_16_i16.c: Regenerate.
	* generated/maxloc0_8_r4.c: Regenerate.
	* generated/rrspacing_r8.c: Regenerate.
	* generated/minloc1_4_i16.c: Regenerate.
	* generated/minloc0_4_r10.c: Regenerate.
	* generated/maxloc1_4_i16.c: Regenerate.
	* generated/minloc0_8_i16.c: Regenerate.
	* generated/maxloc0_4_r10.c: Regenerate.
	* generated/maxloc0_8_i16.c: Regenerate.
	* generated/minloc1_8_r10.c: Regenerate.
	* generated/minloc0_16_r4.c: Regenerate.
	* generated/maxloc1_8_r10.c: Regenerate.
	* generated/maxloc0_16_r4.c: Regenerate.
	* generated/minloc1_16_r8.c: Regenerate.
	* generated/minloc0_8_i1.c: Regenerate.
	* generated/maxloc0_4_i4.c: Regenerate.
	* generated/maxloc1_16_r8.c: Regenerate.
	* generated/maxloc0_8_i2.c: Regenerate.
	* generated/nearest_r16.c: Regenerate.
	* generated/maxloc1_16_r10.c: Regenerate.
	* generated/minloc0_16_i2.c: Regenerate.
	* generated/minloc1_8_r8.c: Regenerate.
	* generated/maxloc0_16_i2.c: Regenerate.
	* generated/exponent_r4.c: Regenerate.
	* generated/spacing_r10.c: Regenerate.
	* generated/maxval_r10.c: Regenerate.
	* generated/minval_i1.c: Regenerate.
	* generated/maxloc1_4_i1.c: Regenerate.
	* generated/minloc1_4_i8.c: Regenerate.
	* generated/minloc0_8_r4.c: Regenerate.
	* generated/minloc0_16_r16.c: Regenerate.
	* generated/minloc0_4_i4.c: Regenerate.
	* generated/minloc0_8_i2.c: Regenerate.
	* generated/minval_r4.c: Regenerate.
	* generated/maxloc1_4_r4.c: Regenerate.
	* generated/maxval_r8.c: Regenerate.
	* generated/minval_r16.c: Regenerate.
	* generated/minloc1_4_i1.c: Regenerate.
	* generated/minval_i2.c: Regenerate.
	* generated/maxloc1_4_i2.c: Regenerate.
	* generated/maxloc1_8_i8.c: Regenerate.
	* generated/maxloc0_4_r8.c: Regenerate.
	* generated/maxloc0_16_r16.c: Regenerate.
	* generated/minloc1_4_r16.c: Regenerate.
	* generated/fraction_r8.c: Regenerate.
	* generated/maxloc1_4_r16.c: Regenerate.
	* generated/set_exponent_r4.c: Regenerate.
	* generated/minloc0_8_r16.c: Regenerate.
	* generated/maxloc0_8_r16.c: Regenerate.
	* generated/nearest_r10.c: Regenerate.
	* generated/maxloc0_8_i4.c: Regenerate.
	* generated/minloc1_4_r4.c: Regenerate.
	* generated/minloc0_16_i4.c: Regenerate.
	* generated/maxloc0_16_i4.c: Regenerate.
	* generated/nearest_r4.c: Regenerate.
	* generated/minloc1_16_i8.c: Regenerate.
	* generated/maxloc1_16_i8.c: Regenerate.
	* generated/minloc1_4_i2.c: Regenerate.
	* generated/maxloc1_8_i1.c: Regenerate.
	* generated/minloc0_16_r10.c: Regenerate.
	* generated/minloc1_8_i8.c: Regenerate.
	* generated/minloc0_4_r8.c: Regenerate.
	* generated/minloc0_8_i4.c: Regenerate.
	* generated/minloc1_16_i16.c: Regenerate.
	* generated/spacing_r8.c: Regenerate.
	* generated/maxloc1_8_r4.c: Regenerate.
	* generated/minloc1_16_i1.c: Regenerate.
	* generated/maxloc1_16_i1.c: Regenerate.
	* generated/minval_r10.c: Regenerate.
	* generated/minval_i4.c: Regenerate.
	* generated/minloc1_8_i1.c: Regenerate.
	* generated/maxloc1_4_i4.c: Regenerate.
	* generated/maxloc1_8_i2.c: Regenerate.
	* generated/maxval_i8.c: Regenerate.
	* generated/maxloc0_16_r10.c: Regenerate.
	* generated/rrspacing_r4.c: Regenerate.
	* generated/minloc0_4_i16.c: Regenerate.
	* generated/maxloc0_8_r8.c: Regenerate.
	* generated/maxloc0_4_i16.c: Regenerate.
	* generated/minloc1_4_r10.c: Regenerate.
	* generated/minloc1_8_i16.c: Regenerate.
	* generated/maxloc1_4_r10.c: Regenerate.
	* generated/minloc0_8_r10.c: Regenerate.
	* generated/maxloc1_8_i16.c: Regenerate.
	* generated/maxloc0_8_r10.c: Regenerate.
	* generated/minloc1_16_r4.c: Regenerate.
	* generated/maxloc1_16_r4.c: Regenerate.
	* generated/minloc0_16_r8.c: Regenerate.
	* generated/maxloc0_16_r8.c: Regenerate.
	* generated/maxloc0_4_i8.c: Regenerate.
	* generated/maxloc1_16_i16.c: Regenerate.
	* generated/minloc1_8_r4.c: Regenerate.
	* generated/minloc1_16_i2.c: Regenerate.
	* generated/maxloc1_16_i2.c: Regenerate.
	* generated/maxval_i16.c: Regenerate.
	* generated/exponent_r8.c: Regenerate.
	* generated/minloc1_4_i4.c: Regenerate.
	* generated/maxval_i1.c: Regenerate.
	* generated/minloc1_8_i2.c: Regenerate.
	* generated/minloc0_8_r8.c: Regenerate.
	* generated/set_exponent_r16.c: Regenerate.
	* generated/maxloc0_4_i1.c: Regenerate.
	* generated/rrspacing_r16.c: Regenerate.
	* generated/minloc0_4_i8.c: Regenerate.
	* generated/maxval_r4.c: Regenerate.
	* configure: Regenerate.
	* config.h.in: Regenerate.

From-SVN: r123623
2007-04-06 16:47:23 +00:00
Jerry DeLisle 5a97b4f907 re PR fortran/31395 ([4.2 Only] Colon edit descriptor is ignored unless preceded by a comma or a slash)
2007-04-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/31395
	* io/format.c (parse_format_list): Fix parsing.

From-SVN: r123620
2007-04-06 15:39:02 +00:00
Jerry DeLisle 08f9246a45 re PR libfortran/31052 ([4.2 only] Bad IOSTAT values when readings NAMELISTs past EOF)
2007-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/31052
	* io/open.c (test_endfile): Delete this function.
	(edit_modes): Delete call to test_endfile.
	(new_unit): Likewise.
	* io/io.h: Delete prototype for test_endfile.
	* io/transfer.c (next_record_r): Remove use of test_endfile.
	(st_read):  Add test for end file condition and adjust status.

From-SVN: r123403
2007-04-01 17:32:20 +00:00
Jerry DeLisle 138469296c re PR fortran/31366 ([4.2 only] Last record truncated for read after short write, direct access file)
2007-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/31366
	* io/transfer.c (read_block_direct): Do not generate error when reading
	past EOF on a short record that is less than the RECL= specified.
	
2007-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/31207
	* io/unit.c (close_unit_1): If there are bytes previously written from
	ADVANCE="no", move to the end before closing.

From-SVN: r123401
2007-04-01 15:23:48 +00:00
Jerry DeLisle f70ddc12ec re PR libfortran/31052 ([4.2 only] Bad IOSTAT values when readings NAMELISTs past EOF)
2007-03-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/31052
	* io/transfer.c (next_record_r): Do not call test_endfile if in namelist
	mode.

From-SVN: r123284
2007-03-28 00:19:39 +00:00
Jerry DeLisle beb6a65e75 re PR fortran/31199 (write with "t1" + nonadvancing transfer format gives wrong output)
2007-03-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/31199
	*io/io.h: Add saved_pos to gfc_unit structure.
	*io/open.c (new_unit): Initialize saved_pos.
	*io/transfer.c (data_transfer_init): Set max_pos to value in saved_pos.
	(next_record_w): Fix whitespace.
	(finalze_transfer): Calculate max_pos for ADVANCE="no" and save it for
	later use.  If not ADVANCE="no" set saved_pos to zero.

From-SVN: r123205
2007-03-26 03:23:15 +00:00
Jerry DeLisle 9a7b6ea727 re PR libfortran/31052 ([4.2 only] Bad IOSTAT values when readings NAMELISTs past EOF)
2007-03-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/31052
	* file_pos.c: Update Copyright year.
	* io/open.c (test_endfile): Restore test_endfile to fix SPEC regression.
	Update Copyright year.
	* io/io.h: Same.
	* io/unix.c (is_special): Add missing type for this function.
	Update Copyright year.
	* io/transfer.c (next_record_r): Restore test_endfile.
	(st_read): Fix whitespace.  Update Copyright year

From-SVN: r123139
2007-03-23 00:13:19 +00:00
Jerry DeLisle 7ab8aa3620 re PR libfortran/31052 ([4.2 only] Bad IOSTAT values when readings NAMELISTs past EOF)
2007-03-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/31052
	* io/file_position (st_rewind): Fix comments. Remove use of
	test_endfile. Don't seek if already at 0 position.  Use new is_special
	function to set endfile state.
	* io/open.c (test_endfile): Delete this function.
	* io/io.h: Delete prototype for test_endfile.  Add prototype
	for is_special.
	* io/unix.c (is_special): New function. Fix whitespace.
	* io/transfer.c (next_record_r): Remove use of test_endfile.

From-SVN: r123038
2007-03-18 18:13:50 +00:00
Jerry DeLisle b746fc0e8c re PR libfortran/31099 (Runtime error on legal code using RECL)
2007-03-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/31099
	* io/file_pos.c (st_rewind): Don't set bytes_left to zero.

From-SVN: r122970
2007-03-16 00:41:36 +00:00
Jerry DeLisle 22cbc70726 re PR fortran/31051 ([4.2 Only] gfortran bug with x and t format descriptors.)
2007-03-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/31051
	* io/transfer.c (formatted_transfer_scalar): Adjust position for pending
	spaces when in writing mode.  Clean up some formatting.

From-SVN: r122940
2007-03-15 01:25:27 +00:00
Jakub Jelinek d70d13acb5 unix.c (regular_file): For ACTION_UNSPECIFIED retry with O_RDONLY even if errno is EROFS.
* io/unix.c (regular_file): For ACTION_UNSPECIFIED retry with
	O_RDONLY even if errno is EROFS.

From-SVN: r122914
2007-03-14 13:14:58 +01:00
Jerry DeLisle f4072316a3 re PR libfortran/31099 (Runtime error on legal code using RECL)
2007-03-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/31099
	* io/open.c (new_unit): Initialize bytes_left and recl_subrecord.
	* io/transfer.c (next_record_w): Set bytes left to record length for
	sequential unformatted I/O.
	(next_record_r): Ditto.
	(read_block_direct): Fix test for exceeding bytes_left.

From-SVN: r122763
2007-03-09 21:51:39 +00:00
Jerry DeLisle 4f8d744edb re PR libfortran/30918 (Failure to skip commented out NAMELIST)
2007-02-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/30918
	* io/listread.c (namelist_read): Eat comment line.

From-SVN: r122307
2007-02-25 02:27:17 +00:00
Jerry DeLisle 9014618cb9 re PR fortran/30910 ([Regression 4.2, 4.3] Gfortran: ES format not quite right...)
2007-02-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/30910
	* io/write.c (output_float): Add condition of format F only for
	special case rounding with zero precision.

From-SVN: r122250
2007-02-23 05:43:16 +00:00
Paul Thomas d4feb3d31a re PR fortran/30284 ([4.1 only] ICE in gfc_add_modify with internal reads)
2007-02-02  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30284
	PR fortran/30626
	* trans-expr.c (gfc_conv_aliased_arg): Remove static attribute
	from function and make sure that substring lengths are
	translated.
	(is_aliased_array): Remove static attribute.
	* trans.c : Add prototypes for gfc_conv_aliased_arg and
	is_aliased_array.
	* trans-io.c (set_internal_unit): Add the post block to the
	arguments of the function.  Use is_aliased_array to check if
	temporary is needed; if so call gfc_conv_aliased_arg.
	(build_dt): Pass the post block to set_internal_unit and
	add to the block after all io activiy is done.

2007-02-02  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30284
	PR fortran/30626
	* io/transfer.c (init_loop_spec, next_array_record): Change to
	lbound rather than unity base.

2007-02-02  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30284
	* gfortran.dg/arrayio_11.f90.f90: New test.

	PR fortran/30626
	* gfortran.dg/arrayio_12.f90.f90: New test.

From-SVN: r121500
2007-02-02 12:35:57 +00:00
Francois-Xavier Coudert eedeea04da re PR libfortran/29649 (Force core dump on runtime library errors)
2007-01-18  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
            Tobias Burnus  <burnus@net-b.de>

       PR libfortran/29649
       * gfortran.h (gfc_option_t): Add flag_dump_core.
       * lang.opt: Add -fdump-core option.
       * invoke.texi: Document the new options.
       * trans-decl.c (gfc_build_builtin_function_decls): Add new
         options to the call to set_std.
       * options.c (gfc_init_options, gfc_handle_option): Set the
         new options.

2007-01-18  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
            Tobias Burnus  <burnus@net-b.de>

       PR libfortran/29649
       * runtime/environ.c (variable_table): New GFORTRAN_ERROR_DUMPCORE
         environment variable.
       * runtime/compile_options.c (set_std): Add new argument.
       * runtime/error.c (sys_exit): Move from io/unix.c. Add coredump functionality.
       * libgfortran.h (options_t): New dump_core and backtrace members.
         (sys_exit): Move prototype.
       * io/unix.c (sys_exit): Move to runtime/error.c.
       * configure.ac: Add check for getrlimit.
       * configure: Regenerate.


Co-Authored-By: Tobias Burnus <burnus@net-b.de>

From-SVN: r120897
2007-01-18 13:54:11 +01:00
Francois-Xavier Coudert 0dce3ca161 re PR libfortran/27107 (Make dependency on io/io.h broken)
PR libfortran/27107
	* runtime/environ.c: Don't include io/io.h.
	* runtime/string.c: Don't include io/io.h.
	(compare0): Add cast to avoid warning.
	* runtime/error.c: Don't include io/io.h.
	(st_printf): Move to io/unix.c.
	* intrinsics/flush.c: Delete, contents moved to io/intrinsics.c.
	* intrinsics/fget.c: Likewise.
	* intrinsics/ftell.c: Likewise.
	* intrinsics/tty.c: Likewise.
	* libgfortran.h (DEFAULT_RECL, notification_std,
	get_unformatted_convert, IOPARM_*, st_parameter_common, unit_convert,
	DEFAULT_TEMPDIR): New declarations.
	* io/io.h (DEFAULT_RECL, notification_std, get_unformatted_convert,
	IOPARM_*, st_parameter_common, unit_convert, DEFAULT_TEMPDIR):
	Move to libgfortran.h.
	* io/unix.c: Add io/unix.h content.
	(st_printf): New function.
	* io/intrinsics.c: New file.
	* io/unix.h: Remove, contents moved into unix.c.
	* libtool-version: Update library version to 3.0.0.
	* configure.ac: Update library version to 0.3.
	* Makefile.am (intrinsics/fget.c, intrinsics/flush.c,
	intrinsics/ftell.c, intrinsics/tty.c, libgfortran.h): Remove targets.
	* Makefile.in: Regenerate.
	* configure: Regenerate.

From-SVN: r120869
2007-01-17 19:44:00 +00:00
Jerry DeLisle b8df885f63 re PR fortran/30435 (Slash at end of input not recognized according to standard)
2007-01-12  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/30435
	* io/list_read.c (finish_separator): Don't call next_record.
	(list_formatted_read_scalar): Clean up some comments and whitespace.
	(nml_read_obj): Whitespace fix.

From-SVN: r120737
2007-01-12 23:10:27 +00:00
Jerry DeLisle 779f397598 re PR libfortran/30162 (Document when sequential I/O with named pipes works)
2007-01-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/30162
	* io/unix.c (fd_flush): Don't seek if file is not seekable, defined as
	s->file_length == -1.
	(fd_alloc_w_at): Do not adjust file_length if file is not seekable.
	(fd_seek): If not seekable, just return success.
	(fd_truncate): If not seekable, no need to truncate.  Return failure if
	seek fails and the stream is not a pipe.
	(fd_to_stream): Make test for non-seekable file more robust.

From-SVN: r120512
2007-01-06 00:14:38 +00:00
Jerry DeLisle cf79465213 re PR libfortran/30014 (INQUIRE (iolength = xx) limited to kind=4)
2006-12-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/30014
	*io/io.h (st_parameter_dt): Change *size and *iolength type to
	GFC_IO_INT.
	*io/transfer.c (finalize_transfer): Cast dtp->u.p.size_used to
	GFC_IO_INT.  (iolength_transfer): Cast size * nelems to GFC_IO_INT.

From-SVN: r120234
2006-12-28 01:40:23 +00:00
Jerry DeLisle 87cd572dee re PR fortran/30145 (Fortran 90: write statement fails to ignore zero-sized array...)
2006-12-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libfortran/30145
	* io/transfer.c (transfer_array):  Check for negative extent.

From-SVN: r119942
2006-12-15 19:54:52 +00:00
Thomas Koenig b4c811bd14 re PR libfortran/30009 ([4.1 only] Unformatted reads exceeding storage units gives EOF instead of ERR)
2006-12-06  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/30009
	PR libfortran/30056
	* gfortran.dg/read_eof_4.f90:  Add tests.
	* gfortran.dg/readwrite_unf_direct_eor_1.f90:  New test.
	* gfortran.dg/unf_read_corrupted_1.f90: New test.

2006-12-06  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/30009
	PR libfortran/30056
	* libgfortran.h:  Add ERROR_CORRUPT_FILE to error_codes.
	* runtime/error.c (translate_error):  Add handling for
	ERROR_CORRUPT_FILE.
	* io/transfer.c (read_block_direct):  Add comment about
	EOR for stream files.
	Remove test for no bytes left for direct access files.
	Generate an ERROR_SHORT_RECORD if the read was short.
	For unformatted sequential files:  Check endfile condition.
	Remove test for no bytes left.  End of file here means
	that the file structure has been corrupted.  Pre-position
	the file for the next record in case of error.
	(write_buf):  Whitespace fix.  Subtract the number of bytes
	written from bytes_left.

From-SVN: r119592
2006-12-06 19:25:44 +00:00
Jerry DeLisle db7317c3cf re PR libfortran/30005 (Open errors (not/already exists etc.): show also the file name)
2006-12-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libfortran/30005
	* io/open.c: Add errno.h include.
	(new_unit): Add new error messages with file name for file open.

From-SVN: r119530
2006-12-05 00:51:26 +00:00
Thomas Koenig 07b3bbf200 re PR libfortran/29568 (implement unformatted files with subrecords (Intel style))
2006-12-01  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/29568
	* gfortran.dg/convert_implied_open.f90:  Change to
	new default record length.
	* gfortran.dg/unf_short_record_1.f90:  Adapt to
	new error message.
	* gfortran.dg/unformatted_subrecords_1.f90:  New test.

2006-12-01  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/29568
	* gfortran.h (gfc_option_t):  Add max_subrecord_length.
	(top level): Define MAX_SUBRECORD_LENGTH.
	* lang.opt:  Add option -fmax-subrecord-length=.
	* trans-decl.c:  Add new function set_max_subrecord_length.
	(gfc_generate_function_code): If we are within the main
	program and max_subrecord_length has been set, call
	set_max_subrecord_length.
	* options.c (gfc_init_options):  Add defaults for
	max_subrecord_lenght, convert and record_marker.
	(gfc_handle_option):  Add handling for
	-fmax_subrecord_length.
	* invoke.texi:  Document the new default for
	-frecord-marker=<n>.

2006-12-01  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/29568
	* libgfortran/libgfortran.h (compile_options_t):  Add
	record_marker. (top level):  Define GFC_MAX_SUBRECORD_LENGTH.
	* runtime/compile_options.c (set_record_marker):  Change
	default to four-byte record marker.
	(set_max_subrecord_length):  New function.
	* runtime/error.c (translate_error):  Change error message
	for short record on unformatted read.
	* io/io.h (gfc_unit):  Add recl_subrecord, bytes_left_subrecord
	and continued.
	* io/file_pos.c (unformatted_backspace):  Change default of record
	marker size to four bytes.  Loop over subrecords.
	* io/open.c:  Default recl is max_offset.  If
	compile_options.max_subrecord_length has been set, set set
	u->recl_subrecord to its value, to the maximum value otherwise.
	* io/transfer.c (top level):  Add prototypes for us_read, us_write,
	next_record_r_unf and next_record_w_unf.
	(read_block_direct):  Separate codepaths for unformatted direct
	and unformatted sequential.  If a recl has been set by the
	user, use the number of bytes left for the record if it is smaller
	than the read request.  Loop over subrecords.  Set an error if the
	user has set a recl and the read was short.
	(write_buf):  Separate codepaths for unformatted direct and
	unformatted sequential. If a recl has been set by the
	user, use the number of bytes left for the record if it is smaller
	than the read request.  Loop over subrecords.  Set an error if the
	user has set a recl and the read was short.
	(us_read):  Add parameter continued (to indicate that bytes_left
	should not be intialized).  Change default of record marker size
	to four bytes. Use subrecord.  If the subrecord length is smaller than
	zero, this indicates a continuation.
	(us_write):  Add parameter continued (to indicate that the continued
	flag should be set).  Use subrecord.
	(pre_position):  Use 0 for continued on us_write and us_read calls.
	(skip_record):  New function.
	(next_record_r_unf):  New function.
	(next_record_r):  Use next_record_r_unf.
	(write_us_marker):  Default size for record markers is four bytes.
	(next_record_w_unf):  New function.
	(next_record_w):  Use next_record_w_unf.

From-SVN: r119412
2006-12-01 21:04:38 +00:00
Jerry DeLisle b0c6db58ad io.h (unit_flags): Add new flag has_recl.
2006-11-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	* io/io.h (unit_flags): Add new flag has_recl.
	* io.open.c (new_unit): Set flag if RECL= was specified.
	* io/transfer.c (us_write): If flag set, leave recl as initialized by
	new_unit.

From-SVN: r119087
2006-11-22 07:32:09 +00:00
François-Xavier Coudert 6c0e51c4fa trans-decl.c (gfc_get_symbol_decl): Fix formatting.
* trans-decl.c (gfc_get_symbol_decl): Fix formatting.

	* io/open.c (new_unit): Format %d expects an int variable.
	* runtime/error.c (show_locus): Format %d expects an int variable.

From-SVN: r118887
2006-11-16 11:20:57 +00:00
Steven G. Kargl 474e88dd75 2006-11-08 Steven G. Kargl <kargl@gcc.gnu.org>
* io/read. (max_value): Hide "int n" in an #ifdef.

From-SVN: r118613
2006-11-09 03:57:44 +00:00
Jerry DeLisle 54938c1127 re PR fortran/29752 (write(*,*,advance='NO'), READ(): Data not flushed)
2006-11-08  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/29752
	* io/transfer.c (finalize_transfer): Flush on ADVANCE_NO.

From-SVN: r118611
2006-11-09 03:03:40 +00:00
Jerry DeLisle d5fe3b0ea9 transfer.c (next_record_w): Fix indentation.
2006-11-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	* io/transfer.c (next_record_w): Fix indentation.

From-SVN: r118508
2006-11-05 17:54:17 +00:00
Jerry DeLisle 97cd182da7 re PR libfortran/25545 (internal file and dollar edit descriptor)
2006-11-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/25545
	* io/transfer.c (write_block): Cleanup code paths between
	stream and non-stream I/O.
	(write_buf):  Cleanup.
	(read_block): Cleanup.
	(finalize_transfer): Call next_record for '$' edit descriptor handling
	of internal unit. Cleanup code for readability.

From-SVN: r118506
2006-11-05 17:35:30 +00:00
Thomas Koenig 8a7f7fb6de re PR libfortran/29627 ([4.1 only] partial unformatted reads shouldn't succeed)
2006-10-31  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/29627
	* libgfortran.h: Add ERROR_SHORT_RECORD
	* runtime/error.c (translate_error): Add case
	for ERROR_SHORT_RECORD.
	* io/transfer.c (read_block_direct):  Separate codepaths
	for stream and record unformatted I/O.  Remove unneeded
	tests for standard input, padding and formatted I/O.
	If the record is short, read in as much data as possible,
	then raise the error.

2006-10-31  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/29627
	* gfortran.dg/unf_short_record_1.f90:  New test.

From-SVN: r118341
2006-10-31 20:58:26 +00:00
Tobias Burnus 751748ff5a re PR fortran/29625 (Octal edit descriptors allow real variables, even with -std=f95)
2006-10-28 Tobias Burnus <burnus@net-b.de>

	PR fortran/29625
	* io/transfer.c (formatted_transfer_scalar): Allow binary edit
	  descriptors for real variables; give error for BOZ edit
	  descriptor for non-integers when using -std=f*.

From-SVN: r118111
2006-10-28 23:05:42 +02:00
Jerry DeLisle bbd6c8aa76 re PR fortran/29563 (Internal read loses data.)
2006-10-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/29563
	* io/list_read.c (next_char): Fix an error in previous commit.

From-SVN: r118063
2006-10-26 07:17:21 +00:00
Jerry DeLisle 807fb853ee re PR fortran/29563 (Internal read loses data.)
2006-10-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/29563
	* io/io.h (st_parameter_dt): Add new flag at_eof.
	* io/list_read.c (next_char): Set flag when EOF and return '\n' to
	signal EOR.  Check flag on next call and jump out.
	* io/unit.c (get_internal_unit): Initialize new flag.

From-SVN: r118059
2006-10-26 04:35:45 +00:00
Jerry DeLisle 9e7fc6b946 re PR fortran/29277 (Formated stream output: Translate "\n" / achar(10) into "\r\n" on some platforms)
2006-10-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/29277
	* io/write.c (write_a): Add conversion of LF to CR-LF for systems with
	#define HAVE_CRLF.

From-SVN: r117866
2006-10-18 23:13:33 +00:00
Tobias Burnus 8b6dba81f0 in_pack.m4: Fixed a typo.
2006-10-16  Tobias Burnus  <burnus@net-b.de>

        * m4/in_pack.m4: Fixed a typo.
        * m4/iforeach.m4: Fixed a typo.
        * m4/eoshift1.m4: Fixed a typo.
        * m4/eoshift3.m4: Fixed a typo.
        * m4/cshift1.m4: Fixed a typo.
        * m4/in_unpack.m4: Fixed a typo.
        * m4/reshape.m4: Fixed a typo.
        * m4/ifunction.m4: Fixed a typo.
        * runtime/environ.c: Fixed a typo.
        * runtime/in_pack_generic.c: Fixed a typo.
        * runtime/in_unpack_generic.c: Fixed a typo.
        * runtime/memory.c: Fixed a typo.
        * intrinsics/cshift0.c: Fixed a typo.
        * intrinsics/cpu_time.c: Fixed a typo.
        * intrinsics/pack_generic.c: Fixed a typo.
        * intrinsics/unpack_generic.c: Fixed a typo.
        * intrinsics/eoshift0.c: Fixed a typo.
        * intrinsics/eoshift2.c: Fixed a typo.
        * intrinsics/reshape_generic.c: Fixed a typo.
        * io/open.c: Fixed a typo.
        * io/list_read.c: Fixed a typo.
        * io/io.h: Fixed a typo.
        * io/transfer.c: Fixed a typo.
        * io/write.c: Fixed a typo.

From-SVN: r117857
2006-10-18 19:17:49 +02:00
Jerry DeLisle 09861cbee6 re PR fortran/29277 (Formated stream output: Translate "\n" / achar(10) into "\r\n" on some platforms)
2006-10-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/29277
	* io/list_read.c (next_char): Update strm_pos.
	(eat_separator): Delete extra call to unget_char.
	* io/transfer.c (read_block): Use read_sf for formatted stream I/O.
	(next_record_r): Update strm_pos for formatted stream I/O and handle
	end-of-record correctly.
	(next_record_w): Ditto.
	(next_record): Enable next record (r/w) functions and update strm_pos.
	(finalize_transfer): Call next_record to finish the record.

From-SVN: r117846
2006-10-18 04:04:07 +00:00
Danny Smith 6a7c793f3e re PR libfortran/27964 (Wrong line ends on windows (XP))
PR libfortran/27964
	* configure.ac: Check for setmode() function.
	* configure: Regenerate.
	* config.h.in: Regenerate.
	* io/unix.c (output_stream): Force stdout to binary mode. 
	(error_stream): Force stderr to binary mode.

From-SVN: r117166
2006-09-23 01:56:55 +00:00
Jerry DeLisle 701306112e re PR fortran/29053 (Consecutive STREAM I/O file positions mixed up)
2006-09-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/29053
	* io.h (gfc_unit): Add variable, strm_pos, to track
	STREAM I/O file position.
	* file_pos.c (st_rewind): Set strm_pos to beginning.
	* open.c (new_unit): Initialize strm_pos.
	* read.c (read_x): Bump strm_pos.
	* inquire.c (inquire_via_unit): Return strm_pos value.
	* transfer.c (read_block),(read_block_direct),(write_block)
	(write_buf): Seek to strm_pos - 1.  Update strm_pos when done.
	(pre_position): Initialize strm_pos.
	(data_transfer_init): Set strm_pos if DT_HAS_REC.
	(finalize_transfer): Flush file, no need to update strm_pos.

From-SVN: r116970
2006-09-15 13:16:15 +00:00
Jerry DeLisle 20e1580fad re PR libfortran/28354 ([4.1 Only] 0.99999 printed as 0. instead of 1. by format(f3.0))
2006-08-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/28354
	* io/write.c: Check for special case of zero precision in format
	and pre-round the real value.

From-SVN: r116502
2006-08-28 05:14:05 +00:00
Jerry DeLisle 91b30ee5b9 re PR fortran/25828 ([f2003] ACCESS='STREAM' io support)
2006-08-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/25828
	* libgfortran.h: Rename GFC_LARGE_IO_INT to GFC_IO_INT.
	* io/file_pos.c (st_backspace): Ignore if access=STREAM.
	(st_rewind): Handle case of access=STREAM.
	* io/open.c (access_opt): Add STREAM_ACCESS.
	(edit_modes): Set current_record to zero only if not STREAM.
	(new_unit): Initialize maxrec, recl, and last_record for STREAM.
	* io/read.c (read_x): Advance file position for STREAM.
	* io/io.h (enum unit_access): Align IOPARM flags with frontend.
	Add ACCESS_STREAM. Add prototype for is_stream_io () function.
	Use GFC_IO_INT.
	* io/inquire.c (inquire_via_unit): Add text for access = "STREAM".
	* io/unit.c (is_stream_io): New function to return true if access =
	STREAM.
	* io/transfer.c (file_mode): Add modes for unformatted stream and
	formatted stream. (current_mode): Return appropriate file mode based
	on access flags.
	(read_block): Handle formatted stream reads.
	(read_block_direct): Handle unformatted stream reads.
	(write_block): Handle formatted stream writes.
	(write_buf): Handle unformatted stream writes.
	(unformatted_read): Fix up, use temporary for size.
	(pre_position): Position file for STREAM access.
	(data_transfer_init): Initialize for stream access, skip irrelevent
	error checks.
	(next_record_r),(next_record_w), and (next_record): Do nothing for
	stream I/O.
	(finalize_transfer): Flush when all done if stream I/O.

From-SVN: r116172
2006-08-15 23:06:44 +00:00
Jerry DeLisle e43c3311bd re PR fortran/28335 (flush() / write() statement on closed units - error?)
2006-07-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/28335
	* file_position.c (st_flush): Add clearer error when UNIT does not
	exist. Add reference to standard in comment.

From-SVN: r115835
2006-07-31 01:32:38 +00:00
Jerry DeLisle b8d403b467 re PR fortran/28335 (flush() / write() statement on closed units - error?)
2006-07-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/28335
	* close.c (st_close): Revert previous patch and add comment.
	* file_position.c (st_flush): Revert previous patch and add comment.

From-SVN: r115829
2006-07-31 00:15:08 +00:00
Janne Blomqvist 6097a89729 transfer.c (transfer_array): Remove stride0 fix.
2006-07-30  Janne Blomqvist  <jb@gcc.gnu.org>

	* io/transfer.c (transfer_array): Remove stride0 fix.

From-SVN: r115818
2006-07-30 13:23:26 +03:00
Jerry DeLisle ca8d5bc6c6 2006-07-25 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/258335
	* close.c (st_close): Add error when UNIT does not exist.
	* file_position.c (st_flush): Add error when UNIT does not exist.

From-SVN: r115749
2006-07-26 01:40:29 +00:00
Jerry DeLisle 566ffce895 re PR libfortran/25289 (Cannot handle record numbers large than huge(0_4))
2006-07-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/25289
	* libgfortran.h: Add conditional definition of GFC_LARGE_IO_INT type.
	* io/io.h (st_parameter_dt): Define rec as type GFC_LARGE_IO_INT.

From-SVN: r115698
2006-07-24 00:17:52 +00:00
Jerry DeLisle 397bc09a65 re PR fortran/28339 (gfortran misses a record from a format statement)
2006-07-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/28339
	* io/transfer.c (next_record_w): Use next_array_record result to set
	END_FILE. (write_block): Test for END_FILE before the next write occurs.
	* io/unit.c (get_internal_unit): Initialize iunit->endfile for internal
	unit.

From-SVN: r115670
2006-07-22 03:14:27 +00:00
Jerry DeLisle 2e4444278c re PR libfortran/27704 (Incorrect runtime error on multiple OPEN)
2006-07-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/27704
	* runtime/error.c (notify_std): Pass common flags into function. Use
	flags to show locus of error or warning.
	* libgfortran.h: Add enum try.  Add prototype for notify_std.
	* io/open.c (edit_modes): Allow status="old" and add extension to
	allow status="scratch"
	*io/list_read.c (nml_read_obj): Update call to notify_std.
	*io/io.h: Remove enum try and prototype for notify_std.
	*io/transfer.c (read_sf): Update call to notify_std.
	*io/format.c (parse_format_list): Update call to notify_std.

From-SVN: r115168
2006-07-04 01:36:31 +00:00