0e05c303e5 
								
							 
						 
						
							
							
								
								PR libfortran/62768 Handle filenames with embedded null characters.  
							
							... 
							
							
							
							testsuite ChangeLog:
2014-09-17  Janne Blomqvist  <jb@gcc.gnu.org>
	PR libfortran/62768
	* gfortran.dg/filename_null.f90: New test.
libgfortran ChangeLog:
2014-09-17  Janne Blomqvist  <jb@gcc.gnu.org>
	PR libfortran/62768
	* io/io.h (gfc_unit): Store C string for the filename.
	* io/close.c (st_close): Use gfc_unit.filename.
	* io/inquire.c (inquire_via_unit): Likewise.
	* io/open.c (new_unit): Likewise.
	(already_open): Likewise, unlink file before freeing filename.
	* io/unit.c (init_units): Likewise.
	(close_unit_1): Likewise.
	(filename_from_unit): Likewise.
	* io/unix.c (compare_file_filename): Likewise.
	(find_file0): Likewise.
	(delete_file): Likewise.
From-SVN: r215307 
							
						 
						
							2014-09-17 00:40:28 +03:00  
				
					
						
							
							
								 
						
							
								9389649842 
								
							 
						 
						
							
							
								
								re PR libfortran/61640 (KIND=4 Character Array Internal Unit Read Fail)  
							
							... 
							
							
							
							2014-06-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	PR libgfortran/61640
	* io/list_read.c (next_char_internal): Adjust the read length to
	a single wide character. (eat_spaces): Add missing paren. 
	* io/unix.c (mem_read4): Use the correct mem_alloc function for
	wide character internal reads.
From-SVN: r212118 
							
						 
						
							2014-06-29 02:49:45 +00:00  
				
					
						
							
							
								 
						
							
								89a862b40a 
								
							 
						 
						
							
							
								
								PR 56981 Flush buffer at record boundary if possible.  
							
							... 
							
							
							
							2014-06-08  Janne Blomqvist  <jb@gcc.gnu.org>
	PR libfortran/56981
	* io/unix.h (struct stream_vtable): Add new member function,
	markeor.
	(smarkeor): New inline function.
	(flush_if_unbuffered): Remove prototype.
	* io/unix.c (raw_markeor): New function.
	(raw_vtable): Initialize markeor member.
	(buf_markeor): New function.
	(buf_vtable): Initialize markeor member.
	(mem_vtable): Likewise.
	(mem4_vtable): Likewise.
	(flush_if_unbuffered): Remove function.
	* io/transfer.c (next_record): Call smarkeor instead of
	flush_if_unbuffered.
From-SVN: r211353 
							
						 
						
							2014-06-08 08:43:29 +03:00  
				
					
						
							
							
								 
						
							
								4269f19c09 
								
							 
						 
						
							
							
								
								PR 60324 Handle long path names, don't use PATH_MAX.  
							
							... 
							
							
							
							From-SVN: r210738 
							
						 
						
							2014-05-22 06:51:25 +03:00  
				
					
						
							
							
								 
						
							
								870c7fa03a 
								
							 
						 
						
							
							
								
								PR 61187 Fix use of uninitialized memory.  
							
							... 
							
							
							
							2014-05-16  Janne Blomqvist  <jb@gcc.gnu.org>
	PR libfortran/61187
	* io/unix.c (raw_close): Check if s->fd is -1.
	(fd_to_stream): Check return value of fstat(), handle error.
From-SVN: r210527 
							
						 
						
							2014-05-16 23:37:13 +03:00  
				
					
						
							
							
								 
						
							
								b5b5834350 
								
							 
						 
						
							
							
								
								configure.ac: Check for presence of fcntl.  
							
							... 
							
							
							
							* configure.ac: Check for presence of fcntl.
	* configure: Regenerate.
	* config.h.in: Regenerate.
	* io/unix.c (set_close_on_exec): Check for HAVE_FCNTL.
From-SVN: r208634 
							
						 
						
							2014-03-18 09:58:17 +00:00  
				
					
						
							
							
								 
						
							
								f0bcf62899 
								
							 
						 
						
							
							
								
								Update copyright years in libgfortran/  
							
							... 
							
							
							
							From-SVN: r206296 
							
						 
						
							2014-01-02 22:25:45 +00:00  
				
					
						
							
							
								 
						
							
								95796c1fa5 
								
							 
						 
						
							
							
								
								unix.c (tempfile_open): Only use the needed flag O_CLOEXEC.  
							
							... 
							
							
							
							2013-12-17  Andreas Tobler  <andreast@gcc.gnu.org>
    * io/unix.c (tempfile_open): Only use the needed flag O_CLOEXEC.
From-SVN: r206064 
							
						 
						
							2013-12-17 19:12:39 +01:00  
				
					
						
							
							
								 
						
							
								35f48a901d 
								
							 
						 
						
							
							
								
								When file status is unknown, don't set O_CREAT when opening read-only.  
							
							... 
							
							
							
							2013-11-15  Janne Blomqvist  <jb@gcc.gnu.org>
	    Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	PR fortran/59108
	* io/unix.c (regular_file): Don't set O_CREAT when opening a file
	read-only with unknown status. Mask out O_CREAT when falling back
	to opening read-only if ACTION= is not set and read-write fails.
Co-Authored-By: Jerry DeLisle <jvdelisle@gcc.gnu.org>
From-SVN: r204864 
							
						 
						
							2013-11-16 00:00:36 +02:00  
				
					
						
							
							
								 
						
							
								c20fdb917f 
								
							 
						 
						
							
							
								
								Set close-on-exec flag when opening files.  
							
							... 
							
							
							
							2013-11-10  Janne Blomqvist  <jb@gcc.gnu.org>
	* configure.ac: Check presence of mkostemp.
	* io/unix.c (set_close_on_exec): New function.
	(tempfile_open): Use mkostemp and O_CLOEXEC if available, fallback
	to calling set_close_on_exec.
	(regular_file): Add O_CLOEXEC to flags if defined.
	(open_external): Call set_close_on_exec if O_CLOEXEC is not
	defined.
	* config.h.in: Regenerated.
	* configure: Regenerated.
	* Makefile.in: Regenerated.
	* aclocal.m4: Regenerated.
From-SVN: r204654 
							
						 
						
							2013-11-10 22:34:29 +02:00  
				
					
						
							
							
								 
						
							
								19f0e98f58 
								
							 
						 
						
							
							
								
								environ.c: Include unistd.h.  
							
							... 
							
							
							
							* runtime/environ.c: Include unistd.h.
        * runtime/pause.c: Test HAVE_UNISTD_H.
        * runtime/stop.c: Same.
        * io/open.c: Same.
        * io/unix.c: Same.
        * io/read.c (si_max): Protect declaration of value.
From-SVN: r198603 
							
						 
						
							2013-05-04 17:23:11 -04:00  
				
					
						
							
							
								 
						
							
								c033f5ae32 
								
							 
						 
						
							
							
								
								PR 56981 Improve unbuffered performance on special files.  
							
							... 
							
							
							
							2013-04-29  Janne Blomqvist  <jb@gcc.gnu.org>
        PR fortran/56981
        * io/transfer.c (next_record_w_unf): First fix head marker, then
        write tail.
        (next_record): Call flush_if_unbuffered.
        * io/unix.c (struct unix_stream): Add field unbuffered.
        (flush_if_unbuffered): New function.
        (fd_to_stream): New argument.
        (open_external): Fix fd_to_stream call.
        (input_stream): Likewise.
        (output_stream): Likewise.
        (error_stream): Likewise.
        * io/unix.h (flush_if_unbuffered): New prototype.
From-SVN: r198390 
							
						 
						
							2013-04-29 11:42:00 +03:00  
				
					
						
							
							
								 
						
							
								68aab0e225 
								
							 
						 
						
							
							
								
								Fix regression when writing formatted sequential to a pipe.  
							
							... 
							
							
							
							2013-02-21  Janne Blomqvist  <jb@gcc.gnu.org>
	PR libfortran/30162
	* io/open.c (test_endfile): Call stell only if size != 0.
	* io/unix.c (raw_tell): Revert r194679.
	(raw_size): Return size field only for regular files, otherwise 0.
From-SVN: r196210 
							
						 
						
							2013-02-21 21:03:10 +02:00  
				
					
						
							
							
								 
						
							
								e3c063ceda 
								
							 
						 
						
							
							
								
								Update copyright years in libgfortran.  
							
							... 
							
							
							
							From-SVN: r195167 
							
						 
						
							2013-01-14 18:20:58 +00:00  
				
					
						
							
							
								 
						
							
								a0edd35cf6 
								
							 
						 
						
							
							
								
								re PR libfortran/30162 (Document when sequential I/O with named pipes works)  
							
							... 
							
							
							
							2012-12-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
	PR libfortran/30162
	* io/unix.c (raw_tell):  If the lseek is done on a
	non-seekable file, return 0.
From-SVN: r194679 
							
						 
						
							2012-12-21 20:50:48 +00:00  
				
					
						
							
							
								 
						
							
								a0ceafd19b 
								
							 
						 
						
							
							
								
								re PR fortran/54878 (libgfortran issues found by the Coverity scanner)  
							
							... 
							
							
							
							2012-10-10  Tobias Burnus  <burnus@net-b.de>
	PR fortran/54878
	* io/unix.c (tempfile_open): Set umask before calling mkstemp.
From-SVN: r192325 
							
						 
						
							2012-10-10 20:42:34 +02:00  
				
					
						
							
							
								 
						
							
								7c0de75353 
								
							 
						 
						
							
							
								
								re PR fortran/52724 (Internal read with character(kind=4) data)  
							
							... 
							
							
							
							2012-09-29  Thomas König  <tkoenig@gcc.gnu.org>
	PR fortran/52724
	* list_read.c (next_char):  Handle kind=4 characters.
	* unix.c (open_internal4):  Correct lenth of internal file.
2012-09-29  Thomas König  <tkoenig@gcc.gnu.org>
	PR fortran/52724
	* gfortran.dg/internal_readwrite_3.f90:  New test.
From-SVN: r191854 
							
						 
						
							2012-09-29 17:38:46 +00:00  
				
					
						
							
							
								 
						
							
								7ed26a671c 
								
							 
						 
						
							
							
								
								chmod.c (chmod_func): On MinGW, don't set is_dir  
							
							... 
							
							
							
							2012-06-01  Tobias Burnus  <burnus@net-b.de>
        * intrinsics/chmod.c (chmod_func): On MinGW, don't set is_dir
        * and
        fix octal-mode handling.
        * io/unit.c (get_internal_unit): Add cast.
        * io/unix.c (min): Undef "min" before defining it.
        * runtime/backtrace.c (show_backtrace): Move label into
        ifndef __MINGW__ block.
From-SVN: r188098 
							
						 
						
							2012-06-01 07:53:31 +02:00  
				
					
						
							
							
								 
						
							
								9daf64e704 
								
							 
						 
						
							
							
								
								revert: unix.c (tempfile_open): Pass mode to "open" for O_CREAT.  
							
							... 
							
							
							
							2012-05-31  Tobias Burnus  <burnus@net-b.de>
        Revert:
        2012-05-16  Tobias Burnus  <burnus@net-b.de>
        * io/unix.c (tempfile_open): Pass mode to "open" for O_CREAT.
From-SVN: r188048 
							
						 
						
							2012-05-31 08:10:18 +02:00  
				
					
						
							
							
								 
						
							
								e10f759e19 
								
							 
						 
						
							
							
								
								unix.c (tempfile_open): Pass mode to "open" for O_CREAT.  
							
							... 
							
							
							
							2012-05-16  Tobias Burnus  <burnus@net-b.de>
        * io/unix.c (tempfile_open): Pass mode to "open" for O_CREAT.
From-SVN: r187604 
							
						 
						
							2012-05-16 20:39:34 +02:00  
				
					
						
							
							
								 
						
							
								68ee9c0807 
								
							 
						 
						
							
							
								
								Fix handling of temporary files.  
							
							... 
							
							
							
							2012-05-05  Janne Blomqvist  <jb@gcc.gnu.org>
        * gfortran.texi (GFORTRAN_TMPDIR): Rename to TMPDIR, explain
        algorithm for choosing temp directory.
2012-05-05  Janne Blomqvist  <jb@gcc.gnu.org>
        * config.h.in: Regenerated.
        * configure: Regenerated.
        * configure.ac: Add checks for getegid and __secure_getenv.
        * io/unix.c (P_tmpdir): Fallback definition for macro.
        (tempfile_open): New function.
        (tempfile): Use secure_getenv, call tempfile_open to try each
        directory in turn.
        * libgfortran.h (DEFAULT_TMPDIR): Remove macro.
        (secure_getenv): New macro/prototype.
        * runtime/environ.c (secure_getenv): New function.
        (variable_table): Rename GFORTRAN_TMPDIR to TMPDIR.
        * runtime/main.c (find_addr2line): Use secure_getenv.
From-SVN: r187190 
							
						 
						
							2012-05-05 09:30:51 +03:00  
				
					
						
							
							
								 
						
							
								79617d7e2e 
								
							 
						 
						
							
							
								
								re PR libfortran/38199 (missed optimization: I/O performance)  
							
							... 
							
							
							
							2012-04-15  Thomas Koenig  <tkoenig@gcc.gnu.org>
	PR libfortran/38199
	PR libfortran/50673
	* intrinsics/string_intriniscs_inc.c (string_len_trim):
	Remove prototypes for string_len_trim and move to...
	* libgfortran.h (string_len_trim): ... here and
	(string_len_trim_char4): ...here.
	* io/unit.c: For non-array internal arrays where we do reading,
	adjust the record length to the last non-blank character.
	* io/unix.c:  Fix typo.
From-SVN: r186466 
							
						 
						
							2012-04-15 11:52:44 +00:00  
				
					
						
							
							
								 
						
							
								1a0fd3d33a 
								
							 
						 
						
							
							
								
								Combined get_mem and internal_malloc_size.  
							
							... 
							
							
							
							2012-03-26  Janne Blomqvist  <jb@gcc.gnu.org>
	* runtime/memory.c (get_mem): Rename to xmalloc, check for zero
	size.
	(internal_malloc_size): Remove.
	* libgfortran.h (get_mem): Rename to xmalloc.
	(internal_malloc_size): Remove prototype.
	* Makefile.am (i_iall_c): Fix dependency.
	(i_iany_c): Likewise.
	(i_iparity_c): Likewise.
	(i_norm2_c): Likewise.
	(i_parity_c): Likewise.
	* Makefile.in: Regenerated.
	* m4/parity.m4: Fix typo in comment.
	* generated/all_l1.c: Regenerated.
	* generated/all_l16.c: Regenerated.
	* generated/all_l2.c: Regenerated.
	* generated/all_l4.c: Regenerated.
	* generated/all_l8.c: Regenerated.
	* generated/any_l1.c: Regenerated.
	* generated/any_l16.c: Regenerated.
	* generated/any_l2.c: Regenerated.
	* generated/any_l4.c: Regenerated.
	* generated/any_l8.c: Regenerated.
	* generated/bessel_r10.c: Regenerated.
	* generated/bessel_r16.c: Regenerated.
	* generated/bessel_r4.c: Regenerated.
	* generated/bessel_r8.c: Regenerated.
	* generated/count_16_l.c: Regenerated.
	* generated/count_1_l.c: Regenerated.
	* generated/count_2_l.c: Regenerated.
	* generated/count_4_l.c: Regenerated.
	* generated/count_8_l.c: Regenerated.
	* generated/cshift1_16.c: Regenerated.
	* generated/cshift1_4.c: Regenerated.
	* generated/cshift1_8.c: Regenerated.
	* generated/eoshift1_16.c: Regenerated.
	* generated/eoshift1_4.c: Regenerated.
	* generated/eoshift1_8.c: Regenerated.
	* generated/eoshift3_16.c: Regenerated.
	* generated/eoshift3_4.c: Regenerated.
	* generated/eoshift3_8.c: Regenerated.
	* generated/iall_i1.c: Regenerated.
	* generated/iall_i16.c: Regenerated.
	* generated/iall_i2.c: Regenerated.
	* generated/iall_i4.c: Regenerated.
	* generated/iall_i8.c: Regenerated.
	* generated/iany_i1.c: Regenerated.
	* generated/iany_i16.c: Regenerated.
	* generated/iany_i2.c: Regenerated.
	* generated/iany_i4.c: Regenerated.
	* generated/iany_i8.c: Regenerated.
	* generated/in_pack_c10.c: Regenerated.
	* generated/in_pack_c16.c: Regenerated.
	* generated/in_pack_c4.c: Regenerated.
	* generated/in_pack_c8.c: Regenerated.
	* generated/in_pack_i1.c: Regenerated.
	* generated/in_pack_i16.c: Regenerated.
	* generated/in_pack_i2.c: Regenerated.
	* generated/in_pack_i4.c: Regenerated.
	* generated/in_pack_i8.c: Regenerated.
	* generated/in_pack_r10.c: Regenerated.
	* generated/in_pack_r16.c: Regenerated.
	* generated/in_pack_r4.c: Regenerated.
	* generated/in_pack_r8.c: Regenerated.
	* generated/iparity_i1.c: Regenerated.
	* generated/iparity_i16.c: Regenerated.
	* generated/iparity_i2.c: Regenerated.
	* generated/iparity_i4.c: Regenerated.
	* generated/iparity_i8.c: Regenerated.
	* generated/matmul_c10.c: Regenerated.
	* generated/matmul_c16.c: Regenerated.
	* generated/matmul_c4.c: Regenerated.
	* generated/matmul_c8.c: Regenerated.
	* generated/matmul_i1.c: Regenerated.
	* generated/matmul_i16.c: Regenerated.
	* generated/matmul_i2.c: Regenerated.
	* generated/matmul_i4.c: Regenerated.
	* generated/matmul_i8.c: Regenerated.
	* generated/matmul_l16.c: Regenerated.
	* generated/matmul_l4.c: Regenerated.
	* generated/matmul_l8.c: Regenerated.
	* generated/matmul_r10.c: Regenerated.
	* generated/matmul_r16.c: Regenerated.
	* generated/matmul_r4.c: Regenerated.
	* generated/matmul_r8.c: Regenerated.
	* generated/maxloc0_16_i1.c: Regenerated.
	* generated/maxloc0_16_i16.c: Regenerated.
	* generated/maxloc0_16_i2.c: Regenerated.
	* generated/maxloc0_16_i4.c: Regenerated.
	* generated/maxloc0_16_i8.c: Regenerated.
	* generated/maxloc0_16_r10.c: Regenerated.
	* generated/maxloc0_16_r16.c: Regenerated.
	* generated/maxloc0_16_r4.c: Regenerated.
	* generated/maxloc0_16_r8.c: Regenerated.
	* generated/maxloc0_4_i1.c: Regenerated.
	* generated/maxloc0_4_i16.c: Regenerated.
	* generated/maxloc0_4_i2.c: Regenerated.
	* generated/maxloc0_4_i4.c: Regenerated.
	* generated/maxloc0_4_i8.c: Regenerated.
	* generated/maxloc0_4_r10.c: Regenerated.
	* generated/maxloc0_4_r16.c: Regenerated.
	* generated/maxloc0_4_r4.c: Regenerated.
	* generated/maxloc0_4_r8.c: Regenerated.
	* generated/maxloc0_8_i1.c: Regenerated.
	* generated/maxloc0_8_i16.c: Regenerated.
	* generated/maxloc0_8_i2.c: Regenerated.
	* generated/maxloc0_8_i4.c: Regenerated.
	* generated/maxloc0_8_i8.c: Regenerated.
	* generated/maxloc0_8_r10.c: Regenerated.
	* generated/maxloc0_8_r16.c: Regenerated.
	* generated/maxloc0_8_r4.c: Regenerated.
	* generated/maxloc0_8_r8.c: Regenerated.
	* generated/maxloc1_16_i1.c: Regenerated.
	* generated/maxloc1_16_i16.c: Regenerated.
	* generated/maxloc1_16_i2.c: Regenerated.
	* generated/maxloc1_16_i4.c: Regenerated.
	* generated/maxloc1_16_i8.c: Regenerated.
	* generated/maxloc1_16_r10.c: Regenerated.
	* generated/maxloc1_16_r16.c: Regenerated.
	* generated/maxloc1_16_r4.c: Regenerated.
	* generated/maxloc1_16_r8.c: Regenerated.
	* generated/maxloc1_4_i1.c: Regenerated.
	* generated/maxloc1_4_i16.c: Regenerated.
	* generated/maxloc1_4_i2.c: Regenerated.
	* generated/maxloc1_4_i4.c: Regenerated.
	* generated/maxloc1_4_i8.c: Regenerated.
	* generated/maxloc1_4_r10.c: Regenerated.
	* generated/maxloc1_4_r16.c: Regenerated.
	* generated/maxloc1_4_r4.c: Regenerated.
	* generated/maxloc1_4_r8.c: Regenerated.
	* generated/maxloc1_8_i1.c: Regenerated.
	* generated/maxloc1_8_i16.c: Regenerated.
	* generated/maxloc1_8_i2.c: Regenerated.
	* generated/maxloc1_8_i4.c: Regenerated.
	* generated/maxloc1_8_i8.c: Regenerated.
	* generated/maxloc1_8_r10.c: Regenerated.
	* generated/maxloc1_8_r16.c: Regenerated.
	* generated/maxloc1_8_r4.c: Regenerated.
	* generated/maxloc1_8_r8.c: Regenerated.
	* generated/maxval_i1.c: Regenerated.
	* generated/maxval_i16.c: Regenerated.
	* generated/maxval_i2.c: Regenerated.
	* generated/maxval_i4.c: Regenerated.
	* generated/maxval_i8.c: Regenerated.
	* generated/maxval_r10.c: Regenerated.
	* generated/maxval_r16.c: Regenerated.
	* generated/maxval_r4.c: Regenerated.
	* generated/maxval_r8.c: Regenerated.
	* generated/minloc0_16_i1.c: Regenerated.
	* generated/minloc0_16_i16.c: Regenerated.
	* generated/minloc0_16_i2.c: Regenerated.
	* generated/minloc0_16_i4.c: Regenerated.
	* generated/minloc0_16_i8.c: Regenerated.
	* generated/minloc0_16_r10.c: Regenerated.
	* generated/minloc0_16_r16.c: Regenerated.
	* generated/minloc0_16_r4.c: Regenerated.
	* generated/minloc0_16_r8.c: Regenerated.
	* generated/minloc0_4_i1.c: Regenerated.
	* generated/minloc0_4_i16.c: Regenerated.
	* generated/minloc0_4_i2.c: Regenerated.
	* generated/minloc0_4_i4.c: Regenerated.
	* generated/minloc0_4_i8.c: Regenerated.
	* generated/minloc0_4_r10.c: Regenerated.
	* generated/minloc0_4_r16.c: Regenerated.
	* generated/minloc0_4_r4.c: Regenerated.
	* generated/minloc0_4_r8.c: Regenerated.
	* generated/minloc0_8_i1.c: Regenerated.
	* generated/minloc0_8_i16.c: Regenerated.
	* generated/minloc0_8_i2.c: Regenerated.
	* generated/minloc0_8_i4.c: Regenerated.
	* generated/minloc0_8_i8.c: Regenerated.
	* generated/minloc0_8_r10.c: Regenerated.
	* generated/minloc0_8_r16.c: Regenerated.
	* generated/minloc0_8_r4.c: Regenerated.
	* generated/minloc0_8_r8.c: Regenerated.
	* generated/minloc1_16_i1.c: Regenerated.
	* generated/minloc1_16_i16.c: Regenerated.
	* generated/minloc1_16_i2.c: Regenerated.
	* generated/minloc1_16_i4.c: Regenerated.
	* generated/minloc1_16_i8.c: Regenerated.
	* generated/minloc1_16_r10.c: Regenerated.
	* generated/minloc1_16_r16.c: Regenerated.
	* generated/minloc1_16_r4.c: Regenerated.
	* generated/minloc1_16_r8.c: Regenerated.
	* generated/minloc1_4_i1.c: Regenerated.
	* generated/minloc1_4_i16.c: Regenerated.
	* generated/minloc1_4_i2.c: Regenerated.
	* generated/minloc1_4_i4.c: Regenerated.
	* generated/minloc1_4_i8.c: Regenerated.
	* generated/minloc1_4_r10.c: Regenerated.
	* generated/minloc1_4_r16.c: Regenerated.
	* generated/minloc1_4_r4.c: Regenerated.
	* generated/minloc1_4_r8.c: Regenerated.
	* generated/minloc1_8_i1.c: Regenerated.
	* generated/minloc1_8_i16.c: Regenerated.
	* generated/minloc1_8_i2.c: Regenerated.
	* generated/minloc1_8_i4.c: Regenerated.
	* generated/minloc1_8_i8.c: Regenerated.
	* generated/minloc1_8_r10.c: Regenerated.
	* generated/minloc1_8_r16.c: Regenerated.
	* generated/minloc1_8_r4.c: Regenerated.
	* generated/minloc1_8_r8.c: Regenerated.
	* generated/minval_i1.c: Regenerated.
	* generated/minval_i16.c: Regenerated.
	* generated/minval_i2.c: Regenerated.
	* generated/minval_i4.c: Regenerated.
	* generated/minval_i8.c: Regenerated.
	* generated/minval_r10.c: Regenerated.
	* generated/minval_r16.c: Regenerated.
	* generated/minval_r4.c: Regenerated.
	* generated/minval_r8.c: Regenerated.
	* generated/norm2_r10.c: Regenerated.
	* generated/norm2_r16.c: Regenerated.
	* generated/norm2_r4.c: Regenerated.
	* generated/norm2_r8.c: Regenerated.
	* generated/pack_c10.c: Regenerated.
	* generated/pack_c16.c: Regenerated.
	* generated/pack_c4.c: Regenerated.
	* generated/pack_c8.c: Regenerated.
	* generated/pack_i1.c: Regenerated.
	* generated/pack_i16.c: Regenerated.
	* generated/pack_i2.c: Regenerated.
	* generated/pack_i4.c: Regenerated.
	* generated/pack_i8.c: Regenerated.
	* generated/pack_r10.c: Regenerated.
	* generated/pack_r16.c: Regenerated.
	* generated/pack_r4.c: Regenerated.
	* generated/pack_r8.c: Regenerated.
	* generated/parity_l1.c: Regenerated.
	* generated/parity_l16.c: Regenerated.
	* generated/parity_l2.c: Regenerated.
	* generated/parity_l4.c: Regenerated.
	* generated/parity_l8.c: Regenerated.
	* generated/product_c10.c: Regenerated.
	* generated/product_c16.c: Regenerated.
	* generated/product_c4.c: Regenerated.
	* generated/product_c8.c: Regenerated.
	* generated/product_i1.c: Regenerated.
	* generated/product_i16.c: Regenerated.
	* generated/product_i2.c: Regenerated.
	* generated/product_i4.c: Regenerated.
	* generated/product_i8.c: Regenerated.
	* generated/product_r10.c: Regenerated.
	* generated/product_r16.c: Regenerated.
	* generated/product_r4.c: Regenerated.
	* generated/product_r8.c: Regenerated.
	* generated/reshape_c10.c: Regenerated.
	* generated/reshape_c16.c: Regenerated.
	* generated/reshape_c4.c: Regenerated.
	* generated/reshape_c8.c: Regenerated.
	* generated/reshape_i16.c: Regenerated.
	* generated/reshape_i4.c: Regenerated.
	* generated/reshape_i8.c: Regenerated.
	* generated/reshape_r10.c: Regenerated.
	* generated/reshape_r16.c: Regenerated.
	* generated/reshape_r4.c: Regenerated.
	* generated/reshape_r8.c: Regenerated.
	* generated/shape_i16.c: Regenerated.
	* generated/shape_i4.c: Regenerated.
	* generated/shape_i8.c: Regenerated.
	* generated/spread_c10.c: Regenerated.
	* generated/spread_c16.c: Regenerated.
	* generated/spread_c4.c: Regenerated.
	* generated/spread_c8.c: Regenerated.
	* generated/spread_i1.c: Regenerated.
	* generated/spread_i16.c: Regenerated.
	* generated/spread_i2.c: Regenerated.
	* generated/spread_i4.c: Regenerated.
	* generated/spread_i8.c: Regenerated.
	* generated/spread_r10.c: Regenerated.
	* generated/spread_r16.c: Regenerated.
	* generated/spread_r4.c: Regenerated.
	* generated/spread_r8.c: Regenerated.
	* generated/sum_c10.c: Regenerated.
	* generated/sum_c16.c: Regenerated.
	* generated/sum_c4.c: Regenerated.
	* generated/sum_c8.c: Regenerated.
	* generated/sum_i1.c: Regenerated.
	* generated/sum_i16.c: Regenerated.
	* generated/sum_i2.c: Regenerated.
	* generated/sum_i4.c: Regenerated.
	* generated/sum_i8.c: Regenerated.
	* generated/sum_r10.c: Regenerated.
	* generated/sum_r16.c: Regenerated.
	* generated/sum_r4.c: Regenerated.
	* generated/sum_r8.c: Regenerated.
	* generated/transpose_c10.c: Regenerated.
	* generated/transpose_c16.c: Regenerated.
	* generated/transpose_c4.c: Regenerated.
	* generated/transpose_c8.c: Regenerated.
	* generated/transpose_i16.c: Regenerated.
	* generated/transpose_i4.c: Regenerated.
	* generated/transpose_i8.c: Regenerated.
	* generated/transpose_r10.c: Regenerated.
	* generated/transpose_r16.c: Regenerated.
	* generated/transpose_r4.c: Regenerated.
	* generated/transpose_r8.c: Regenerated.
	* generated/unpack_c10.c: Regenerated.
	* generated/unpack_c16.c: Regenerated.
	* generated/unpack_c4.c: Regenerated.
	* generated/unpack_c8.c: Regenerated.
	* generated/unpack_i1.c: Regenerated.
	* generated/unpack_i16.c: Regenerated.
	* generated/unpack_i2.c: Regenerated.
	* generated/unpack_i4.c: Regenerated.
	* generated/unpack_i8.c: Regenerated.
	* generated/unpack_r10.c: Regenerated.
	* generated/unpack_r16.c: Regenerated.
	* generated/unpack_r4.c: Regenerated.
	* generated/unpack_r8.c: Regenerated.
	* intrinsics/cshift0.c: Use xmalloc.
	* intrinsics/ctime.c: Likewise.
	* intrinsics/date_and_time.c: Likewise.
	* intrinsics/eoshift0.c: Likewise.
	* intrinsics/eoshift2.c: Likewise.
	* intrinsics/getlog.c: Likewise.
	* intrinsics/pack_generic.c: Likewise.
	* intrinsics/reshape_generic.c: Likewise.
	* intrinsics/spread_generic.c: Likewise.
	* intrinsics/string_intrinsics_inc.c: Likewise.
	* intrinsics/transpose_generic.c: Likewise.
	* intrinsics/unpack_generic.c: Likewise.
	* io/fbuf.c: Likewise.
	* io/format.c: Likewise.
	* io/intrinsics.c: Likewise.
	* io/list_read.c: Likewise.
	* io/open.c: Likewise.
	* io/transfer.c: Likewise.
	* io/unit.c: Likewise.
	* io/unix.c: Likewise.
	* io/write.c: Likewise.
	* m4/bessel.m4: Likewise.
	* m4/cshift1.m4: Likewise.
	* m4/eoshift1.m4: Likewise.
	* m4/eoshift3.m4: Likewise.
	* m4/iforeach.m4: Likewise.
	* m4/ifunction.m4: Likewise.
	* m4/ifunction_logical.m4: Likewise.
	* m4/in_pack.m4: Likewise.
	* m4/matmul.m4: Likewise.
	* m4/matmull.m4: Likewise.
	* m4/pack.m4: Likewise.
	* m4/reshape.m4: Likewise.
	* m4/shape.m4: Likewise.
	* m4/spread.m4: Likewise.
	* m4/transpose.m4: Likewise.
	* m4/unpack.m4: Likewise.
	* runtime/convert_char.c: Likewise.
	* runtime/environ.c: Likewise.
	* runtime/in_pack_generic.c: Likewise.
From-SVN: r185806 
							
						 
						
							2012-03-26 18:16:05 +03:00  
				
					
						
							
							
								 
						
							
								f4471acbe3 
								
							 
						 
						
							
							
								
								Use calloc instead of malloc and memset.  
							
							... 
							
							
							
							2012-03-25  Janne Blomqvist  <jb@gcc.gnu.org>
	* runtime/memory.c (xcalloc): New function.
	* libgfortran.h (xcalloc): New prototype.
	* io/list_read.c (push_char): Use xcalloc instead of get_mem and
	memset.
	(l_push_char): Likewise.
	* io/unit.c (insert_unit): Likewise.
	(get_internal_unit): Likewise.
	* io/unix.c (open_internal): Likewise.
	(open_internal4): Likewise.
	(fd_to_stream): Likewise.
From-SVN: r185773 
							
						 
						
							2012-03-25 08:48:49 +03:00  
				
					
						
							
							
								 
						
							
								33959d1d3c 
								
							 
						 
						
							
							
								
								Share vtables instead of replicating them for each unit.  
							
							... 
							
							
							
							2012-03-16  Janne Blomqvist  <jb@gcc.gnu.org>
	* io/unix.h (struct stream): Rename to stream_vtable.
	(struct stream): New struct definition.
	(sread): Dereference vtable pointer.
	(swrite): Likewise.
	(sseek): Likewise.
	(struncate): Likewise.
	(sflush): Likewise.
	(sclose): Likewise.
	* io/unix.c (raw_vtable): New variable.
	(buf_vtable): Likewise.
	(mem_vtable): Likewise.
	(mem4_vtable): Likewise.
	(raw_init): Assign vtable pointer.
	(buf_init): Likewise.
	(open_internal): Likewise.
	(open_internal4): Likewise.
From-SVN: r185454 
							
						 
						
							2012-03-16 10:30:26 +02:00  
				
					
						
							
							
								 
						
							
								42dfafa935 
								
							 
						 
						
							
							
								
								PR 51646 Use POSIX mode flags in open() argument.  
							
							... 
							
							
							
							2011-12-22  Janne Blomqvist  <jb@gcc.gnu.org>
	Tobias Burnus  <burnus@net-b.de>
	PR libfortran/51646
	* acinclude.m4 (LIBGFOR_CHECK_UNLINK_OPEN_FILE): Use POSIX mode
	flags, omit mode argument when flags argument does not have
	O_CREAT.
	* io/unix.c (tempfile): Use POSIX mode flags.
	* configure: Regenerate.
Co-Authored-By: Tobias Burnus <burnus@net-b.de>
From-SVN: r182638 
							
						 
						
							2011-12-22 22:44:32 +02:00  
				
					
						
							
							
								 
						
							
								ed10039e8b 
								
							 
						 
						
							
							
								
								PR 50016 Slow I/O on MingW due to _commit  
							
							... 
							
							
							
							frontend ChangeLog:
2011-11-09  Janne Blomqvist  <jb@gcc.gnu.org>
	PR libfortran/50016
	* gfortran.texi (Data consistency and durability): New section.
testsuite ChangeLog:
2011-11-09  Janne Blomqvist  <jb@gcc.gnu.org>
	PR libfortran/50016
	* gfortran.dg/inquire_size.f90: Don't flush the unit.
libgfortran ChangeLog:
2011-11-09  Janne Blomqvist  <jb@gcc.gnu.org>
	PR libfortran/50016
	* io/inquire.c (inquire_via_unit): Flush the unit and use ssize.
	* io/unix.c (buf_flush): Don't call _commit.
From-SVN: r181207 
							
						 
						
							2011-11-09 17:46:15 +02:00  
				
					
						
							
							
								 
						
							
								3469bd8660 
								
							 
						 
						
							
							
								
								Introduce a size member function to struct stream.  
							
							... 
							
							
							
							2011-10-31  Janne Blomqvist  <jb@gcc.gnu.org>
	* io/unix.h (struct stream): Add size function pointer.
	(ssize): New inline function.
	(file_length): Remove prototype.
	* io/unix.c (raw_size): New function.
	(raw_init): Initialize st.size pointer.
	(buf_size): New function.
	(buf_init): Initialize st.size pointer.
	(open_internal): Likewise.
	(open_internal4): Likewise.
	(file_length): Remove function.
	* io/file_pos.c (st_rewind): Use ssize instead of file_length.
	* io/open.c (test_endfile): Likewise.
	* io/transfer.c (data_transfer_init): Likewise.
	(next_record_r): Likewise.
	(next_record_w): Likewise.
	* io/unit.c (update_position): Likewise.
From-SVN: r180702 
							
						 
						
							2011-10-31 16:52:26 +02:00  
				
					
						
							
							
								 
						
							
								7d5ee21935 
								
							 
						 
						
							
							
								
								Simplify handling of special files.  
							
							... 
							
							
							
							2011-10-31  Janne Blomqvist  <jb@gcc.gnu.org>
* io/file_pos.c (st_rewind): Handle regular and special files
identically.
* io/intrinsics.c (fseek_sub): Don't check whether we think the
file is seekable, just do what the caller says.
* io/transfer.c (skip_record): First try to seek, then fallback to
reading and throwing away what we read.
* io/unit.c (update_position): Don't check whether file is
seekable, just try to do what we're told.
(unit_truncate): Likewise.
* io/unix.c (struct unix_stream): Remove special_file flag.
(buf_flush): Remove code for handling unseekable files.
(buf_seek): Likewise.
(fd_to_stream): Use buffered IO only for regular files.
(file_length): Remove is_seekable() call.
(is_seekable): Remove function.
(is_special): Likewise.
* io/unix.h: Remove prototypes for is_seekable and is_special.
From-SVN: r180701 
							
						 
						
							2011-10-31 16:45:50 +02:00  
				
					
						
							
							
								 
						
							
								09ad57ec8f 
								
							 
						 
						
							
							
								
								Return error when trying to seek a non-seekable buffered file  
							
							... 
							
							
							
							From-SVN: r174947 
							
						 
						
							2011-06-11 13:52:18 +03:00  
				
					
						
							
							
								 
						
							
								5ea0705af7 
								
							 
						 
						
							
							
								
								Figure out whether a file is seekable with lseek()  
							
							... 
							
							
							
							From-SVN: r174946 
							
						 
						
							2011-06-11 13:19:49 +03:00  
				
					
						
							
							
								 
						
							
								1028b2bded 
								
							 
						 
						
							
							
								
								Error printing thread safety, remove GFORTRAN_USE_STDERR  
							
							... 
							
							
							
							From-SVN: r173749 
							
						 
						
							2011-05-14 10:55:51 +03:00  
				
					
						
							
							
								 
						
							
								1e03060224 
								
							 
						 
						
							
							
								
								Fix path handling  
							
							... 
							
							
							
							From-SVN: r173172 
							
						 
						
							2011-04-29 19:09:45 +03:00  
				
					
						
							
							
								 
						
							
								046957830e 
								
							 
						 
						
							
							
								
								remove useless if-before-free tests  
							
							... 
							
							
							
							Change "if (E) free (E);" to "free (E);" everywhere except in the
libgo/, intl/, zlib/ and classpath/ directories.
Also transform equivalent variants like
"if (E != NULL) free (E);" and allow an extra cast on the
argument to free.  Otherwise, the tested and freed "E"
expressions must be identical, modulo white space.
From-SVN: r172785 
							
						 
						
							2011-04-20 18:19:03 +00:00  
				
					
						
							
							
								 
						
							
								d30fe1c5cd 
								
							 
						 
						
							
							
								
								Replace sprintf with snprintf  
							
							... 
							
							
							
							From-SVN: r172590 
							
						 
						
							2011-04-16 20:43:03 +03:00  
				
					
						
							
							
								 
						
							
								99ebea0382 
								
							 
						 
						
							
							
								
								unix.c: Adapt stat DEFINEs since MinGW64 supports LFS.  
							
							... 
							
							
							
							2011-04-04  Tobias Burnus  <burnus@net-b.de>
        * unix.c: Adapt stat DEFINEs since MinGW64 supports LFS.
        (fallback_access, open_internal4, compare_file_filename,
        find_file, file_size, inquire_sequential, inquire_direct,
        inquire_formatted): Use "struct stat" instead of gfstat_t.
From-SVN: r171911 
							
						 
						
							2011-04-03 17:44:02 +02:00  
				
					
						
							
							
								 
						
							
								14bef49e53 
								
							 
						 
						
							
							
								
								re PR libfortran/47439 (Fun with scratch files on Windows  MKTEMP only allows for 26 files)  
							
							... 
							
							
							
							PR libfortran/47439
	* io/unix.c (tempfile): Work around poor mktemp() implementations.
	* gfortran.dg/scratch_1.f90: New test.
From-SVN: r171178 
							
						 
						
							2011-03-19 12:09:27 +00:00  
				
					
						
							
							
								 
						
							
								fe230fccd4 
								
							 
						 
						
							
							
								
								re PR libfortran/45165 (unix.c:fallback_access() leaks file descriptors)  
							
							... 
							
							
							
							PR libfortran/45165
	* unix.c (fallback_access): Fix file descriptor leaks.
From-SVN: r170517 
							
						 
						
							2011-02-26 15:21:45 +00:00  
				
					
						
							
							
								 
						
							
								6a0f6e7799 
								
							 
						 
						
							
							
								
								PR 47432 Use ttyname_r() if available  
							
							... 
							
							
							
							From-SVN: r169337 
							
						 
						
							2011-01-27 22:05:45 +02:00  
				
					
						
							
							
								 
						
							
								723553bdc1 
								
							 
						 
						
							
							
								
								PR 46267 strerror thread safety  
							
							... 
							
							
							
							From-SVN: r169110 
							
						 
						
							2011-01-22 00:42:17 +02:00  
				
					
						
							
							
								 
						
							
								9cd72574bc 
								
							 
						 
						
							
							
								
								PR47296 Segfault when running out of file descriptors  
							
							... 
							
							
							
							From-SVN: r168888 
							
						 
						
							2011-01-17 07:48:10 +02:00  
				
					
						
							
							
								 
						
							
								050d1a59d1 
								
							 
						 
						
							
							
								
								re PR fortran/47296 (I/O Segfault when running out of file descriptors)  
							
							... 
							
							
							
							2011-01-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	PR libgfortran/47296
	* io/unix.c (unpack_filename): Return non-zero if the filename passed
	in is NULL.
From-SVN: r168832 
							
						 
						
							2011-01-15 06:42:30 +00:00  
				
					
						
							
							
								 
						
							
								7debf73d34 
								
							 
						 
						
							
							
								
								Cache stat values, reduce syscalls  
							
							... 
							
							
							
							From-SVN: r166502 
							
						 
						
							2010-11-09 20:17:35 +02:00  
				
					
						
							
							
								 
						
							
								ce66b6f6ca 
								
							 
						 
						
							
							
								
								PR 44931 Move struct unix_stream to unix.c  
							
							... 
							
							
							
							From-SVN: r166325 
							
						 
						
							2010-11-04 21:29:28 +02:00  
				
					
						
							
							
								 
						
							
								332b9a5c15 
								
							 
						 
						
							
							
								
								Remove prot from unix_stream  
							
							... 
							
							
							
							From-SVN: r166284 
							
						 
						
							2010-11-04 01:07:11 +02:00  
				
					
						
							
							
								 
						
							
								576e00858c 
								
							 
						 
						
							
							
								
								Remove unused empty_internal_buffer function  
							
							... 
							
							
							
							From-SVN: r166276 
							
						 
						
							2010-11-03 22:49:31 +02:00  
				
					
						
							
							
								 
						
							
								47dad3ff97 
								
							 
						 
						
							
							
								
								Use access(2) instead of stat(2) to test file existence.  
							
							... 
							
							
							
							From-SVN: r162798 
							
						 
						
							2010-08-01 14:22:18 +03:00  
				
					
						
							
							
								 
						
							
								01b9977477 
								
							 
						 
						
							
							
								
								re PR fortran/44931 (For INPUT_UNIT, INQUIRE NAME= should not return "stdin")  
							
							... 
							
							
							
							2010-07-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	PR libfortran/44931
	* io/inquire.c (inquire_via_unit): Use ttyname to return actual device
	file name for stdin, stdout, and stderr.  If ttyname does not succeed
	fall back to default names for these units. Include string.h to allow
	using strlen function.
	* unix.c: Remove typedef of unix_stream structure, move to unix.h.
	* unix.h: Add typedef of unix_stream structure so that it is
	accessible to inquire.c.
From-SVN: r162667 
							
						 
						
							2010-07-29 01:32:23 +00:00  
				
					
						
							
							
								 
						
							
								746e63273f 
								
							 
						 
						
							
							
								
								re PR fortran/44953 (FAIL: gfortran.dg/char4_iunit_1.f03  *  execution test)  
							
							... 
							
							
							
							2010-07-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	PR libfortran/44953
	* io/unix.c (mem_alloc_w4): Return gfc_char4_t instead of char type
	pointer. (mem_write4): Remove cast to gfc_char4_t.
	* io/transfer.c (write_block): Use a gfc_char4_t pointer.
	(memset4): New helper function. (next_record_w): Use new helper
	function rather than sset for internal units.  Don't attempt to pad
	with spaces if it is not needed.
	* io/unix.h: Update prototype for mem_alloc_w4.
	* io/write.c (memset4): Use gfc_char4_t pointer and chracter type.
	Don't use multiply by 4 to compute offset. (memcpy4): Likewise.
	(write_default_char4): Use a gfc_char4_t pointer and update memset4
	and memcpy calls. (write_a): Likewise. (write_l): Likewise.
	(write_boz): Likewise. (write_decimal): Likewise. (write_x): Likewise.
	(write_char): Add support for character(kind=4) internal units that
	was previously missed. (write_integer): Use a gfc_char4_t pointer and
	update memset4 and memcpy calls. (write_character): Likewise.
	(write_separator): Add support for character(kind=4) internal units
	that was previously missed.
	* write_float.def (output_float): Use a gfc_char4_t pointer and
	update memset4 and memcpy calls. (write_infnan): Likewise.
	(output_float_FMT_G_): Likewise.
From-SVN: r162304 
							
						 
						
							2010-07-19 13:11:54 +00:00  
				
					
						
							
							
								 
						
							
								c7421e06ca 
								
							 
						 
						
							
							
								
								re PR fortran/37077 (Implement Internal Unit I/O for character KIND=4)  
							
							... 
							
							
							
							2010-07-12  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	PR libfortran/37077
	* io/read.c: Fix comment.
	* io/io.h (is_char4_unit): New macro.
	* io/unit.c (get_internal_unit): Call new function open_internal4.
	* io/unix.c (mem_alloc_r4): New function. (mem_alloc_w4): New function.
	(mem_read4): New function, temporary stub. (mem_write4): New function.
	(open_internal4): New function to set stream pointers to use the new
	mem functions.
	* io/transfer.c (write_block): Use new mem_alloc_w4 to access internal
	units of kind=4.
	* io/unix.h: Add prototypes for open_internal4, mem_alloc_w4, and
	mem_alloc_r4.
	* io/write.c (memset4): New helper function. (memcpy4): New helper
	function. (write_default_char4): Use new helper functions.
	(write_a): Likewise. (write_l): Likewise. (write_boz): Likewise.
	(write_decimal): Likewise. (write_x): Likewise.
	(write_integer): Likewise.
	* io/write_float.def (output_float): Add code blocks to handle internal
	unit kind=4 output utilizing gfc_char4_t pointers. (write_infnan): Use
	new helper functions. (OUTPUT_FLOAT_FMT_G): Update this macro likewise.
From-SVN: r162123 
							
						 
						
							2010-07-13 02:12:08 +00:00