summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjb <jb@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-03 21:18:56 +0000
committerjb <jb@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-03 21:18:56 +0000
commiteb3e44d24587ef5ac02b8a76c28549468536b699 (patch)
tree593d7f86e1d9512136f291a704411e7af2722593
parent09618b06dd971ede9b7bd892c3b6c7193fd52872 (diff)
downloadgcc-eb3e44d24587ef5ac02b8a76c28549468536b699.tar.gz
libgfortran: Use remove(3) instead of unlink(2) when deleting files.
testsuite: 2015-09-04 Janne Blomqvist <jb@gcc.gnu.org> * gfortran.dg/read_dir.f90: Delete empty directory when closing rather than calling rmdir, cleanup if open fails. libgfortran: 2015-09-04 Janne Blomqvist <jb@gcc.gnu.org> * io/unix.h (delete_file): Remove prototype. * io/unix.c (delete_file): Remove function. * io/close.c (st_close): Replace delete_file and unlink with remove. * io/open.c (already_open): Replace unlink with remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227472 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/read_dir.f9011
-rw-r--r--libgfortran/ChangeLog8
-rw-r--r--libgfortran/io/close.c4
-rw-r--r--libgfortran/io/open.c2
-rw-r--r--libgfortran/io/unix.c10
-rw-r--r--libgfortran/io/unix.h3
7 files changed, 22 insertions, 21 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 13f5d7ebc5c..e2c55bae8e8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-04 Janne Blomqvist <jb@gcc.gnu.org>
+
+ * gfortran.dg/read_dir.f90: Delete empty directory when closing
+ rather than calling rmdir, cleanup if open fails.
+
2015-09-03 Bill Schmidt <wschmidt@vnet.linux.ibm.com>
* gcc.target/powerpc/vec-mult-char-1.c: New test.
diff --git a/gcc/testsuite/gfortran.dg/read_dir.f90 b/gcc/testsuite/gfortran.dg/read_dir.f90
index 0e28f9f497e..4009ed69e63 100644
--- a/gcc/testsuite/gfortran.dg/read_dir.f90
+++ b/gcc/testsuite/gfortran.dg/read_dir.f90
@@ -7,13 +7,14 @@ program bug
integer ios
call system('[ -d junko.dir ] || mkdir junko.dir')
open(unit=10, file='junko.dir',iostat=ios,action='read',access='stream')
- if (ios.ne.0) call abort
+ if (ios.ne.0) then
+ call system('rmdir junko.dir')
+ call abort
+ end if
read(10, iostat=ios) c
if (ios.ne.21) then
- close(10)
- call system('rmdir junko.dir')
+ close(10, status='delete')
call abort
end if
- close(10)
- call system('rmdir junko.dir')
+ close(10, status='delete')
end program bug
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 0958ca76863..5da6ea32fd6 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,11 @@
+2015-09-04 Janne Blomqvist <jb@gcc.gnu.org>
+
+ * io/unix.h (delete_file): Remove prototype.
+ * io/unix.c (delete_file): Remove function.
+ * io/close.c (st_close): Replace delete_file and unlink with
+ remove.
+ * io/open.c (already_open): Replace unlink with remove.
+
2015-09-02 Janne Blomqvist <jb@gcc.gnu.org>
PR libfortran/67414
diff --git a/libgfortran/io/close.c b/libgfortran/io/close.c
index 38855ee9832..1e109933397 100644
--- a/libgfortran/io/close.c
+++ b/libgfortran/io/close.c
@@ -80,7 +80,7 @@ st_close (st_parameter_close *clp)
if (status == CLOSE_DELETE)
{
#if HAVE_UNLINK_OPEN_FILE
- delete_file (u);
+ remove (u->filename);
#else
path = strdup (u->filename);
#endif
@@ -92,7 +92,7 @@ st_close (st_parameter_close *clp)
#if !HAVE_UNLINK_OPEN_FILE
if (path != NULL)
{
- unlink (path);
+ remove (path);
free (path);
}
#endif
diff --git a/libgfortran/io/open.c b/libgfortran/io/open.c
index 4654de27bd1..630bca6f8d0 100644
--- a/libgfortran/io/open.c
+++ b/libgfortran/io/open.c
@@ -664,7 +664,7 @@ already_open (st_parameter_open *opp, gfc_unit * u, unit_flags * flags)
#if !HAVE_UNLINK_OPEN_FILE
if (u->filename && u->flags.status == STATUS_SCRATCH)
- unlink (u->filename);
+ remove (u->filename);
#endif
free (u->filename);
u->filename = NULL;
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index fd5f2779021..5385d8b7700 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -1716,16 +1716,6 @@ flush_all_units (void)
}
-/* delete_file()-- Given a unit structure, delete the file associated
- * with the unit. Returns nonzero if something went wrong. */
-
-int
-delete_file (gfc_unit * u)
-{
- return unlink (u->filename);
-}
-
-
/* file_exists()-- Returns nonzero if the current filename exists on
* the system */
diff --git a/libgfortran/io/unix.h b/libgfortran/io/unix.h
index 78a41f79f4b..d1aa75dbf4e 100644
--- a/libgfortran/io/unix.h
+++ b/libgfortran/io/unix.h
@@ -141,9 +141,6 @@ internal_proto(compare_file_filename);
extern gfc_unit *find_file (const char *file, gfc_charlen_type file_len);
internal_proto(find_file);
-extern int delete_file (gfc_unit *);
-internal_proto(delete_file);
-
extern int file_exists (const char *file, gfc_charlen_type file_len);
internal_proto(file_exists);