]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libgfortran/io/close.c
Update copyright years.
[thirdparty/gcc.git] / libgfortran / io / close.c
index 7fa968faf6200de598fc104ac4e9822400950c8a..7decb53c5a927623b520c58a43ab6322c7fbdcea 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2024 Free Software Foundation, Inc.
    Contributed by Andy Vaught
 
 This file is part of the GNU Fortran 95 runtime library (libgfortran).
@@ -31,7 +31,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #endif
 
 typedef enum
-{ CLOSE_DELETE, CLOSE_KEEP, CLOSE_UNSPECIFIED }
+{ CLOSE_INVALID = - 1, CLOSE_DELETE, CLOSE_KEEP, CLOSE_UNSPECIFIED }
 close_status;
 
 static const st_option status_opt[] = {
@@ -61,6 +61,12 @@ st_close (st_parameter_close *clp)
     find_option (&clp->common, clp->status, clp->status_len,
                 status_opt, "Bad STATUS parameter in CLOSE statement");
 
+  if (status == CLOSE_INVALID)
+    {
+      library_end ();
+      return;
+    }
+
   u = find_unit (clp->common.unit);
 
   if (ASYNC_IO && u && u->au)
@@ -102,8 +108,7 @@ st_close (st_parameter_close *clp)
 
                  if (remove (u->filename))
                    generate_error (&clp->common, LIBERROR_OS,
-                           "File cannot be deleted, possibly in use by"
-                           " another process");
+                                   "File cannot be deleted");
 #else
                  path = strdup (u->filename);
 #endif
@@ -118,8 +123,7 @@ st_close (st_parameter_close *clp)
        {
          if (remove (path))
            generate_error (&clp->common, LIBERROR_OS,
-                   "File cannot be deleted, possibly in use by"
-                   " another process");
+                           "File cannot be deleted");
          free (path);
        }
 #endif