From e9659243f616268909e31cdf9d6d0594ee1965a1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Wed, 2 Jul 1997 18:05:51 +0200
Subject: [PATCH] Made some functions reentrant.

Rev: lib/modules/Stdio.pmod:1.6
---
 lib/modules/Stdio.pmod | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/lib/modules/Stdio.pmod b/lib/modules/Stdio.pmod
index 231b76b8b9..c972fa8a8c 100644
--- a/lib/modules/Stdio.pmod
+++ b/lib/modules/Stdio.pmod
@@ -146,14 +146,12 @@ class FILE {
     }
   };
 
-object stdin=FILE("stdin");
-
-private static inherit File;
+object(FILE) stdin=FILE("stdin");
 
 string read_file(string filename,void|int start,void|int len)
 {
-  object buf,f;
-  string ret,tmp;
+  object(FILE) f;
+  string ret, tmp;
   f=FILE();
   if(!f->open(filename,"r")) return 0;
 
@@ -167,7 +165,7 @@ string read_file(string filename,void|int start,void|int len)
     len=0x7fffffff;
   case 3:
     while(start-- && f->gets());
-    buf=String_buffer();
+    object(String_buffer) buf=String_buffer();
     while(len-- && (tmp=f->gets()))
     {
       buf->append(tmp);
@@ -184,7 +182,9 @@ string read_file(string filename,void|int start,void|int len)
 string read_bytes(string filename,void|int start,void|int len)
 {
   string ret;
-  if(!open(filename,"r"))
+  object(File) f = File();
+
+  if(!f->open(filename,"r"))
     return 0;
   
   switch(query_num_arg())
@@ -193,21 +193,23 @@ string read_bytes(string filename,void|int start,void|int len)
   case 2:
     len=0x7fffffff;
   case 3:
-    seek(start);
+    f->seek(start);
   }
-  ret=read(len);
-  close();
+  ret=f->read(len);
+  f->close();
   return ret;
 }
 
 int write_file(string filename,string what)
 {
   int ret;
-  if(!open(filename,"awc"))
+  object(File) f = File();
+
+  if(!f->open(filename,"awc"))
     error("Couldn't open file "+filename+".\n");
   
-  ret=write(what);
-  close();
+  ret=f->write(what);
+  f->close();
   return ret;
 }
 
-- 
GitLab