re PR fortran/61933 (Inquire on internal units)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Thu, 15 Jan 2015 03:57:29 +0000 (03:57 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Thu, 15 Jan 2015 03:57:29 +0000 (03:57 +0000)
2015-01-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/61933
* io/inquire.c (inquire_via_unit): Set existing to true if a
gfc_unit stucture was found for the given unit number.
* runtime/error.c (translate_error): Add case for
LIBERROR_INQUIRE_INTERNAL_UNIT.

From-SVN: r219631

libgfortran/ChangeLog
libgfortran/io/inquire.c
libgfortran/runtime/error.c

index 4e3ba2308b65bbc73fc83f9c147552f307b8f364..33fb6dad9e5a89ad7ad12e30a7609c7019bf06de 100644 (file)
@@ -1,3 +1,11 @@
+2015-01-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/61933
+       * io/inquire.c (inquire_via_unit): Set existing to true if a
+       gfc_unit stucture was found for the given unit number.
+       * runtime/error.c (translate_error): Add case for
+       LIBERROR_INQUIRE_INTERNAL_UNIT.
+
 2015-01-05  Jakub Jelinek  <jakub@redhat.com>
 
        Update copyright years.
index b53b1de54220bcbd1cd530c9468fa53ea652d214..21367a6d83fe87ff2118d1ebfd9d2438617b1d3e 100644 (file)
@@ -41,19 +41,11 @@ inquire_via_unit (st_parameter_inquire *iqp, gfc_unit * u)
   const char *p;
   GFC_INTEGER_4 cf = iqp->common.flags;
 
-  if ((cf & IOPARM_INQUIRE_HAS_EXIST) != 0)
-    {
-      *iqp->exist = (iqp->common.unit >= 0
-                    && iqp->common.unit <= GFC_INTEGER_4_HUGE);
+  if (iqp->common.unit == -1)
+    generate_error (&iqp->common, LIBERROR_INQUIRE_INTERNAL_UNIT, NULL);
 
-      if ((cf & IOPARM_INQUIRE_HAS_FILE) == 0)
-       {
-         if (!(*iqp->exist))
-           *iqp->common.iostat = LIBERROR_BAD_UNIT;
-         *iqp->exist = *iqp->exist
-                       && (*iqp->common.iostat != LIBERROR_BAD_UNIT);
-       }
-    }
+  if ((cf & IOPARM_INQUIRE_HAS_EXIST) != 0)
+    *iqp->exist = (u != NULL);
 
   if ((cf & IOPARM_INQUIRE_HAS_OPENED) != 0)
     *iqp->opened = (u != NULL);
index e2df96d23a9e4a6e784e9a682afe586ba44ba89a..098231916aa26e05160a6c9d6a4c31cab6a692cb 100644 (file)
@@ -488,6 +488,10 @@ translate_error (int code)
       p = "Unformatted file structure has been corrupted";
       break;
 
+    case LIBERROR_INQUIRE_INTERNAL_UNIT:
+      p = "Inquire statement identifies an internal file";
+      break;
+
     default:
       p = "Unknown error code";
       break;