libgfortran: Use remove(3) instead of unlink(2) when deleting files.
authorJanne Blomqvist <jb@gcc.gnu.org>
Thu, 3 Sep 2015 21:18:56 +0000 (00:18 +0300)
committerJanne Blomqvist <jb@gcc.gnu.org>
Thu, 3 Sep 2015 21:18:56 +0000 (00:18 +0300)
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.

From-SVN: r227472

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/read_dir.f90
libgfortran/ChangeLog
libgfortran/io/close.c
libgfortran/io/open.c
libgfortran/io/unix.c
libgfortran/io/unix.h

index 13f5d7ebc5cfa31850f8ef6db477e8d581e32877..e2c55bae8e8f70c4853ce67d72c5dd5ba749e4e2 100644 (file)
@@ -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.
index 0e28f9f497e8f406207f4e9910fbc14d300a1555..4009ed69e6383bc32e98f2883d771870f07ec623 100644 (file)
@@ -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
index 0958ca76863b51e047ef8ee11df81076e8240cc4..5da6ea32fd61a4a9e861e2d27b27dd7aec0c47c1 100644 (file)
@@ -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
index 38855ee9832bc7d7cad7eff3680913079ab5bfa5..1e109933397d93807cf49cbaf01427bc9456f0ce 100644 (file)
@@ -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
index 4654de27bd16418076c116fa68991e559381868a..630bca6f8d0359ad7cd9a0f4eeab74d5de91becf 100644 (file)
@@ -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;
index fd5f2779021c0aa2d1ded37742ed723688b8c3c6..5385d8b770006000a99866f720321eb37ea36a3f 100644 (file)
@@ -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 */
 
index 78a41f79f4b2884b46500e1056d973755c976ca0..d1aa75dbf4ec91788487353e6c43f4bee5f74a48 100644 (file)
@@ -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);