OSDN Git Service

gcc/fortran/
[pf3gnuchains/gcc-fork.git] / libgfortran / io / lock.c
index 7dc08e1..c39188f 100644 (file)
@@ -33,53 +33,28 @@ Boston, MA 02110-1301, USA.  */
 #include "libgfortran.h"
 #include "io.h"
 
-st_parameter ioparm;
-iexport_data(ioparm);
-
-namelist_info *ionml;
-global_t g;
-
-
 /* library_start()-- Called with a library call is entered.  */
 
 void
-library_start (void)
+library_start (st_parameter_common *cmp)
 {
-  if (g.in_library)
-    internal_error ("Recursive library calls not allowed");
-
-  /* The in_library flag indicates whether we're currently processing a
-     library call.  Some calls leave immediately, but READ and WRITE
-     processing return control to the caller but are still considered to
-     stay within the library. */
-  g.in_library = 1;
+  if ((cmp->flags & IOPARM_HAS_IOSTAT) != 0)
+    *cmp->iostat = ERROR_OK;
 
-  if (ioparm.iostat != NULL)
-    *ioparm.iostat = ERROR_OK;
-
-  ioparm.library_return = LIBRARY_OK;
+  cmp->flags &= ~IOPARM_LIBRETURN_MASK;
 }
 
 
-/* library_end()-- Called when a library call is complete in order to
-   clean up for the next call. */
-
 void
-library_end (void)
+free_ionml (st_parameter_dt *dtp)
 {
-  int t;
   namelist_info * t1, *t2;
 
-  g.in_library = 0;
-  filename = NULL;
-  line = 0;
-  t = ioparm.library_return;
-
   /* Delete the namelist, if it exists.  */
 
-  if (ionml != NULL)
+  if (dtp->u.p.ionml != NULL)
     {
-      t1 = ionml;
+      t1 = dtp->u.p.ionml;
       while (t1 != NULL)
        {
          t2 = t1;
@@ -93,8 +68,5 @@ library_end (void)
          free_mem (t2);
        }
     }
-  ionml = NULL;
-
-  memset (&ioparm, '\0', sizeof (ioparm));
-  ioparm.library_return = t;
+  dtp->u.p.ionml = NULL;
 }