]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[PATCH] [PR modula2/117203] Followup add Delete procedure function
authorGaius Mulley <gaiusmod2@gmail.com>
Fri, 18 Jul 2025 07:48:22 +0000 (08:48 +0100)
committerGaius Mulley <gaiusmod2@gmail.com>
Fri, 18 Jul 2025 07:48:22 +0000 (08:48 +0100)
This patch provides GetFileName procedure function for
FIO.File, FileSystem.File and IOChan.ChanId.  The
return result from these procedures can be passed into
StringFileSysOp.Unlink to complete the required delete.

gcc/m2/ChangeLog:

PR modula2/117203
* gm2-libs-log/FileSystem.def (GetFileName): New
procedure function.
(WriteString): New procedure.
* gm2-libs-log/FileSystem.mod (GetFileName): New
procedure function.
(WriteString): New procedure.
* gm2-libs/SFIO.def (GetFileName): New procedure function.
* gm2-libs/SFIO.mod (GetFileName): New procedure function.
* gm2-libs-iso/IOChanUtils.def: New file.
* gm2-libs-iso/IOChanUtils.mod: New file.

libgm2/ChangeLog:

PR modula2/117203
* libm2iso/Makefile.am (M2DEFS): Add IOChanUtils.def.
(M2MODS): Add IOChanUtils.mod.
* libm2iso/Makefile.in: Regenerate.

gcc/testsuite/ChangeLog:

PR modula2/117203
* gm2/isolib/run/pass/testdelete2.mod: New test.
* gm2/pimlib/logitech/run/pass/testdelete2.mod: New test.
* gm2/pimlib/run/pass/testdelete.mod: New test.

(cherry picked from commit 620a40fa8843dd7f80547bbd63549abc8bbe9521)

Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
gcc/m2/gm2-libs-iso/IOChanUtils.def [new file with mode: 0644]
gcc/m2/gm2-libs-iso/IOChanUtils.mod [new file with mode: 0644]
gcc/m2/gm2-libs-log/FileSystem.def
gcc/m2/gm2-libs-log/FileSystem.mod
gcc/m2/gm2-libs/SFIO.def
gcc/m2/gm2-libs/SFIO.mod
gcc/testsuite/gm2/isolib/run/pass/testdelete2.mod [new file with mode: 0644]
gcc/testsuite/gm2/pimlib/logitech/run/pass/testdelete2.mod [new file with mode: 0644]
gcc/testsuite/gm2/pimlib/run/pass/testdelete.mod [new file with mode: 0644]
libgm2/libm2iso/Makefile.am
libgm2/libm2iso/Makefile.in

diff --git a/gcc/m2/gm2-libs-iso/IOChanUtils.def b/gcc/m2/gm2-libs-iso/IOChanUtils.def
new file mode 100644 (file)
index 0000000..e38f83a
--- /dev/null
@@ -0,0 +1,27 @@
+DEFINITION MODULE IOChanUtils ;
+
+(*
+    Title      : IOChanUtils
+    Author     : Gaius Mulley
+    System     : GNU Modula-2
+    Date       : Sat Jun 28 23:33:06 2025
+    Revision   : $Version$
+    Description: provides additional procedures to work on
+                 ChanIds.
+*)
+
+FROM DynamicStrings IMPORT String ;
+
+IMPORT IOChan ;
+
+
+(*
+   GetFileName - returns the filename as a new string associated
+                 with chanid c.  This string should be killed by
+                 the caller.
+*)
+
+PROCEDURE GetFileName (c: IOChan.ChanId) : String ;
+
+
+END IOChanUtils.
diff --git a/gcc/m2/gm2-libs-iso/IOChanUtils.mod b/gcc/m2/gm2-libs-iso/IOChanUtils.mod
new file mode 100644 (file)
index 0000000..5cbb2a9
--- /dev/null
@@ -0,0 +1,18 @@
+IMPLEMENTATION MODULE IOChanUtils ;
+
+IMPORT IOChan, SFIO, RTio ;
+
+
+(*
+   GetFileName - returns the filename as a new string associated
+                 with chanid c.  This string should be killed by
+                 the caller.
+*)
+
+PROCEDURE GetFileName (c: IOChan.ChanId) : String ;
+BEGIN
+   RETURN SFIO.GetFileName (RTio.GetFile (c))
+END GetFileName ;
+
+
+END IOChanUtils.
index 3a887205e44a62818f6748d6d32c2800823a6725..42e1399689dd9bb0cc205a244a25688de8f24d42 100644 (file)
@@ -33,14 +33,6 @@ FROM SYSTEM IMPORT WORD, BYTE, ADDRESS ;
 IMPORT FIO ;
 FROM DynamicStrings IMPORT String ;
 
-EXPORT QUALIFIED File, Response, Flag, FlagSet,
-
-                 Create, Close, Lookup, Rename, Delete,
-                 SetRead, SetWrite, SetModify, SetOpen,
-                 Doio, SetPos, GetPos, Length, Reset,
-
-                 ReadWord, ReadChar, ReadByte, ReadNBytes,
-                 WriteWord, WriteChar, WriteByte, WriteNBytes ;
 
 TYPE
    File = RECORD
@@ -272,4 +264,21 @@ PROCEDURE Doio (VAR f: File) ;
 PROCEDURE FileNameChar (ch: CHAR) : CHAR ;
 
 
+(*
+   GetFileName - return a new string containing the name of the file.
+                 The string should be killed by the caller.
+*)
+
+PROCEDURE GetFileName (file: File) : String ;
+
+
+(*
+   WriteString - writes contents to file.  The nul char
+                 will terminate the contents string otherwise
+                 all characters 0..HIGH (contents) are written.
+*)
+
+PROCEDURE WriteString (file: File; contents: ARRAY OF CHAR) ;
+
+
 END FileSystem.
index fbbc42229adbb0b31e431d6c408467e09ef62a6c..4b06b5b4d8848265ae35f7e56f01789d418c2b72 100644 (file)
@@ -29,8 +29,11 @@ IMPLEMENTATION MODULE FileSystem ;
 FROM M2RTS IMPORT InstallTerminationProcedure ;
 FROM Storage IMPORT ALLOCATE ;
 FROM SYSTEM IMPORT ADR, COFF_T ;
-IMPORT SFIO, libc, wrapc ;
-FROM DynamicStrings IMPORT InitString, ConCat, ConCatChar, KillString, string ;
+IMPORT SFIO, libc, wrapc, StrLib ;
+
+FROM DynamicStrings IMPORT InitString, ConCat, ConCatChar,
+                           KillString, string, Dup ;
+
 FROM FormatStrings IMPORT Sprintf2 ;
 
 CONST
@@ -594,6 +597,37 @@ BEGIN
 END FileNameChar ;
 
 
+(*
+   GetFileName - return a new string containing the name of the file.
+                 The string should be killed by the caller.
+*)
+
+PROCEDURE GetFileName (file: File) : String ;
+BEGIN
+   RETURN Dup (file.name)
+END GetFileName ;
+
+
+(*
+   WriteString - writes contents to file.  The nul char
+                 will terminate the contents string otherwise
+                 all characters 0..HIGH (contents) are written.
+*)
+
+PROCEDURE WriteString (file: File; contents: ARRAY OF CHAR) ;
+VAR
+   ch     : CHAR ;
+   i, high: CARDINAL ;
+BEGIN
+   i := 0 ;
+   high := StrLib.StrLen (contents) ;
+   WHILE i <= high DO
+      WriteChar (file, contents[i]) ;
+      INC (i)
+   END
+END WriteString ;
+
+
 (*
    MakeTemporary - creates a temporary file and returns its name.
 *)
index 81adf8ace13dc94ea0981baa8e21ae5c8ff30394..a39043756d264813b5b304d62f66495f6c9ea5fc 100644 (file)
@@ -29,8 +29,6 @@ DEFINITION MODULE SFIO ;
 FROM DynamicStrings IMPORT String ;
 FROM FIO IMPORT File ;
 
-EXPORT QUALIFIED OpenToRead, OpenToWrite, OpenForRandom, Exists, WriteS, ReadS ;
-
 
 (*
    Exists - returns TRUE if a file named, fname exists for reading.
@@ -91,4 +89,12 @@ PROCEDURE WriteS (file: File; s: String) : String ;
 PROCEDURE ReadS (file: File) : String ;
 
 
+(*
+   GetFileName - return a new string containing the name of the file.
+                 The string should be killed by the caller.
+*)
+
+PROCEDURE GetFileName (file: File) : String ;
+
+
 END SFIO.
index a4834b67a216601dfde44b428b1909d43bcee3a0..7feb1120b425ded4dec18327a1333ac5be77e33f 100644 (file)
@@ -29,10 +29,12 @@ IMPLEMENTATION MODULE SFIO ;
 FROM ASCII IMPORT nul ;
 
 FROM DynamicStrings IMPORT string, Length, InitString, ConCatChar,
+                           InitStringCharStar,
                            InitStringDB, InitStringCharStarDB,
                            InitStringCharDB, MultDB, DupDB, SliceDB ;
 
-FROM FIO IMPORT exists, openToRead, openToWrite, openForRandom, WriteNBytes, ReadChar,
+FROM FIO IMPORT exists, openToRead, openToWrite, openForRandom,
+                WriteNBytes, ReadChar, getFileName,
                 EOLN, EOF, IsNoError ;
 
 (*
@@ -144,4 +146,15 @@ BEGIN
 END ReadS ;
 
 
+(*
+   GetFileName - return a new string containing the name of the file.
+                 The string should be killed by the caller.
+*)
+
+PROCEDURE GetFileName (file: File) : String ;
+BEGIN
+   RETURN InitStringCharStar (getFileName (file))
+END GetFileName ;
+
+
 END SFIO.
diff --git a/gcc/testsuite/gm2/isolib/run/pass/testdelete2.mod b/gcc/testsuite/gm2/isolib/run/pass/testdelete2.mod
new file mode 100644 (file)
index 0000000..386b49d
--- /dev/null
@@ -0,0 +1,107 @@
+MODULE testdelete2 ;
+
+(* A test module to test file creation and deletion using ISO
+   libraries.  *)
+
+
+IMPORT DynamicStrings, StringFileSysOp,
+       FileSysOp, SeqFile, TextIO, Strings,
+       IOChanUtils ;
+
+FROM libc IMPORT printf, exit ;
+FROM FormatStrings IMPORT Sprintf1 ;
+
+
+CONST
+   MaxFile = 10 ;
+
+VAR
+   files: ARRAY [0..MaxFile] OF SeqFile.ChanId ;
+
+
+PROCEDURE Assert (condition: BOOLEAN; line: CARDINAL) ;
+BEGIN
+   IF NOT condition
+   THEN
+      printf ("%s:%d: assert failed\n", __FILE__, line) ;
+      exit (1)
+   END
+END Assert ;
+
+
+(*
+   CreateFiles - create MaxFile files saving the file handle
+                 into files.
+*)
+
+PROCEDURE CreateFiles ;
+VAR
+   i   : CARDINAL ;
+   name: ARRAY [0..10] OF CHAR ;
+   ch  : CHAR ;
+   res : SeqFile.OpenResults ;
+BEGIN
+   FOR i := 1 TO HIGH (files) DO
+      Strings.Assign ('file', name) ;
+      ch := CHR (ORD ('0')+i-1) ;
+      name[4] := ch ;
+      name[5] := 0C ;
+      SeqFile.OpenWrite (files[i], name,
+                         SeqFile.text+SeqFile.write, res) ;
+      TextIO.WriteString (files[i], "some text inside file ") ;
+      TextIO.WriteLn (files[i]) ;
+      SeqFile.Close (files[i])
+   END
+END CreateFiles ;
+
+
+(*
+   DeleteFiles - delete every file in files.
+*)
+
+PROCEDURE DeleteFiles ;
+VAR
+   i   : CARDINAL ;
+   name: ARRAY [0..10] OF CHAR ;
+   s   : DynamicStrings.String ;
+   ch  : CHAR ;
+   res : SeqFile.OpenResults ;
+BEGIN
+   (* Open the files first.  *)
+   FOR i := 1 TO HIGH (files) DO
+      Strings.Assign ('file', name) ;
+      ch := CHR (ORD ('0')+i-1) ;
+      name[4] := ch ;
+      name[5] := 0C ;
+      SeqFile.OpenRead (files[i], name, SeqFile.text, res) ;
+      Assert (FileSysOp.Exists (name), __LINE__) ;
+      Assert (FileSysOp.IsFile (name), __LINE__)
+   END ;
+   (* Now delete them.  *)
+   FOR i := 1 TO HIGH (files) DO
+      s := IOChanUtils.GetFileName (files[i]) ;
+      Assert (StringFileSysOp.Exists (s), __LINE__) ;
+      Assert (StringFileSysOp.IsFile (s), __LINE__) ;
+      Assert (StringFileSysOp.Unlink (s), __LINE__) ;
+      Assert (NOT StringFileSysOp.Exists (s), __LINE__) ;
+      SeqFile.Close (files[i]) ;
+      s := DynamicStrings.KillString (s)
+   END
+END DeleteFiles ;
+
+
+(*
+   Init -
+*)
+
+PROCEDURE Init ;
+BEGIN
+   CreateFiles ;
+   DeleteFiles ;
+   printf ("all tests passed\n")
+END Init ;
+
+
+BEGIN
+   Init
+END testdelete2.
diff --git a/gcc/testsuite/gm2/pimlib/logitech/run/pass/testdelete2.mod b/gcc/testsuite/gm2/pimlib/logitech/run/pass/testdelete2.mod
new file mode 100644 (file)
index 0000000..977d498
--- /dev/null
@@ -0,0 +1,104 @@
+MODULE testdelete2 ;
+
+(* A test module to test file creation and deletion using log
+   libraries.  *)
+
+
+IMPORT FIO, SFIO, DynamicStrings, StringFileSysOp,
+       FileSysOp, FileSystem, StrLib ;
+
+FROM libc IMPORT printf, exit ;
+FROM FormatStrings IMPORT Sprintf1 ;
+
+
+CONST
+   MaxFile = 10 ;
+
+VAR
+   files: ARRAY [0..MaxFile] OF FileSystem.File ;
+
+
+PROCEDURE Assert (condition: BOOLEAN; line: CARDINAL) ;
+BEGIN
+   IF NOT condition
+   THEN
+      printf ("%s:%d: assert failed\n", __FILE__, line) ;
+      exit (1)
+   END
+END Assert ;
+
+
+(*
+   CreateFiles - create MaxFile files saving the file handle
+                 into files.
+*)
+
+PROCEDURE CreateFiles ;
+VAR
+   i   : CARDINAL ;
+   name: ARRAY [0..10] OF CHAR ;
+   ch  : CHAR ;
+BEGIN
+   FOR i := 1 TO HIGH (files) DO
+      StrLib.StrCopy ('file', name) ;
+      ch := CHR (ORD ('0')+i-1) ;
+      name[4] := ch ;
+      name[5] := 0C ;
+      FileSystem.Lookup (files[i], name, TRUE) ;
+      FileSystem.WriteString (files[i], "some text inside file ") ;
+      FileSystem.WriteChar (files[i], ch) ;
+      FileSystem.WriteString (files[i], "\n") ;
+      FileSystem.Close (files[i])
+   END
+END CreateFiles ;
+
+
+(*
+   DeleteFiles - delete every file in files.
+*)
+
+PROCEDURE DeleteFiles ;
+VAR
+   i   : CARDINAL ;
+   name: ARRAY [0..10] OF CHAR ;
+   s   : DynamicStrings.String ;
+   ch  : CHAR ;
+BEGIN
+   (* Open the files first.  *)
+   FOR i := 1 TO HIGH (files) DO
+      StrLib.StrCopy ('file', name) ;
+      ch := CHR (ORD ('0')+i-1) ;
+      name[4] := ch ;
+      name[5] := 0C ;
+      FileSystem.Lookup (files[i], name, FALSE) ;
+      Assert (FileSysOp.Exists (name), __LINE__) ;
+      Assert (FileSysOp.IsFile (name), __LINE__)
+   END ;
+   (* Now delete them.  *)
+   FOR i := 1 TO HIGH (files) DO
+      s := FileSystem.GetFileName (files[i]) ;
+      Assert (StringFileSysOp.Exists (s), __LINE__) ;
+      Assert (StringFileSysOp.IsFile (s), __LINE__) ;
+      Assert (StringFileSysOp.Unlink (s), __LINE__) ;
+      Assert (NOT StringFileSysOp.Exists (s), __LINE__) ;
+      FileSystem.Close (files[i]) ;
+      s := DynamicStrings.KillString (s)
+   END
+END DeleteFiles ;
+
+
+(*
+   Init -
+*)
+
+PROCEDURE Init ;
+BEGIN
+   CreateFiles ;
+   DeleteFiles ;
+   printf ("all tests passed\n")
+END Init ;
+
+
+BEGIN
+   Init
+END testdelete2.
diff --git a/gcc/testsuite/gm2/pimlib/run/pass/testdelete.mod b/gcc/testsuite/gm2/pimlib/run/pass/testdelete.mod
new file mode 100644 (file)
index 0000000..8afdc44
--- /dev/null
@@ -0,0 +1,97 @@
+MODULE testdelete ;
+
+(* A test module to test file creation and deletion using base
+   PIM libraries.  *)
+
+
+IMPORT FIO, SFIO, DynamicStrings, StringFileSysOp ;
+FROM libc IMPORT printf, exit ;
+FROM FormatStrings IMPORT Sprintf1 ;
+
+
+CONST
+   MaxFile = 10 ;
+
+VAR
+   files: ARRAY [0..MaxFile] OF FIO.File ;
+
+
+PROCEDURE Assert (condition: BOOLEAN; line: CARDINAL) ;
+BEGIN
+   IF NOT condition
+   THEN
+      printf ("%s:%d: assert failed\n", __FILE__, line) ;
+      exit (1)
+   END
+END Assert ;
+
+
+(*
+   CreateFiles - create MaxFile files saving the file handle
+                 into files.
+*)
+
+PROCEDURE CreateFiles ;
+VAR
+   i: CARDINAL ;
+   s: DynamicStrings.String ;
+BEGIN
+   FOR i := 1 TO HIGH (files) DO
+      s := DynamicStrings.InitString ("file%03d") ;
+      s := Sprintf1 (s, i) ;
+      files[i] := SFIO.OpenToWrite (s) ;
+      s := DynamicStrings.KillString (s) ;
+      s := DynamicStrings.InitString ("some text inside file %d\n") ;
+      s := Sprintf1 (s, i) ;
+      s := DynamicStrings.KillString (SFIO.WriteS (files[i], s)) ;
+      FIO.Close (files[i])
+   END
+END CreateFiles ;
+
+
+(*
+   DeleteFiles - delete every file in files.
+*)
+
+PROCEDURE DeleteFiles ;
+VAR
+   i: CARDINAL ;
+   s: DynamicStrings.String ;
+BEGIN
+   (* Open the files first.  *)
+   FOR i := 1 TO HIGH (files) DO
+      s := DynamicStrings.InitString ("file%03d") ;
+      s := Sprintf1 (s, i) ;
+      files[i] := SFIO.OpenToRead (s) ;
+      Assert (StringFileSysOp.Exists (s), __LINE__) ;
+      Assert (StringFileSysOp.IsFile (s), __LINE__) ;
+      s := DynamicStrings.KillString (s)
+   END ;
+   (* Now delete them.  *)
+   FOR i := 1 TO HIGH (files) DO
+      s := SFIO.GetFileName (files[i]) ;
+      Assert (StringFileSysOp.Exists (s), __LINE__) ;
+      Assert (StringFileSysOp.IsFile (s), __LINE__) ;
+      Assert (StringFileSysOp.Unlink (s), __LINE__) ;
+      Assert (NOT StringFileSysOp.Exists (s), __LINE__) ;
+      FIO.Close (files[i]) ;
+      s := DynamicStrings.KillString (s)
+   END
+END DeleteFiles ;
+
+
+(*
+   Init -
+*)
+
+PROCEDURE Init ;
+BEGIN
+   CreateFiles ;
+   DeleteFiles ;
+   printf ("all tests passed\n")
+END Init ;
+
+
+BEGIN
+   Init
+END testdelete.
index 12ea38f43a84de77f5b449ec5cf6e272fbc886f7..bd8af623222fa181b83901bb1d0dfc0aec80ce99 100644 (file)
@@ -104,6 +104,7 @@ M2DEFS = ChanConsts.def  CharClass.def \
          ConvTypes.def  COROUTINES.def \
          ErrnoCategory.def  EXCEPTIONS.def \
          GeneralUserExceptions.def  IOChan.def \
+         IOChanUtils.def \
          IOConsts.def  IOLink.def \
          IOResult.def  LongComplexMath.def \
          LongConv.def  LongIO.def \
@@ -149,7 +150,8 @@ M2MODS = ChanConsts.mod  CharClass.mod \
          ConvStringShort.mod \
          ConvTypes.mod  COROUTINES.mod \
          EXCEPTIONS.mod  GeneralUserExceptions.mod \
-         IOChan.mod  IOConsts.mod \
+         IOChan.mod  IOChanUtils.mod \
+         IOConsts.mod \
          IOLink.mod  IOResult.mod \
          LongComplexMath.mod  LongConv.mod \
          LongIO.mod  LongMath.mod \
index 628d94240149af0708bfaef2a0df5654e7ab04e9..1e48ad06ac49a627b2bfc5d0716a29448fc17be0 100644 (file)
@@ -163,16 +163,17 @@ libm2iso_la_LIBADD =
 @BUILD_ISOLIB_TRUE@    ConvStringShort.lo ConvTypes.lo \
 @BUILD_ISOLIB_TRUE@    COROUTINES.lo EXCEPTIONS.lo \
 @BUILD_ISOLIB_TRUE@    GeneralUserExceptions.lo IOChan.lo \
-@BUILD_ISOLIB_TRUE@    IOConsts.lo IOLink.lo IOResult.lo \
-@BUILD_ISOLIB_TRUE@    LongComplexMath.lo LongConv.lo LongIO.lo \
-@BUILD_ISOLIB_TRUE@    LongMath.lo LongStr.lo LongWholeIO.lo \
-@BUILD_ISOLIB_TRUE@    LowLong.lo LowReal.lo LowShort.lo \
-@BUILD_ISOLIB_TRUE@    M2EXCEPTION.lo M2RTS.lo MemStream.lo \
-@BUILD_ISOLIB_TRUE@    Preemptive.lo Processes.lo ProgramArgs.lo \
-@BUILD_ISOLIB_TRUE@    RandomNumber.lo RawIO.lo RealConv.lo \
-@BUILD_ISOLIB_TRUE@    RealIO.lo RealMath.lo RealStr.lo RndFile.lo \
-@BUILD_ISOLIB_TRUE@    RTdata.lo RTentity.lo RTfio.lo RTgenif.lo \
-@BUILD_ISOLIB_TRUE@    RTgen.lo RTio.lo Semaphores.lo SeqFile.lo \
+@BUILD_ISOLIB_TRUE@    IOChanUtils.lo IOConsts.lo IOLink.lo \
+@BUILD_ISOLIB_TRUE@    IOResult.lo LongComplexMath.lo LongConv.lo \
+@BUILD_ISOLIB_TRUE@    LongIO.lo LongMath.lo LongStr.lo \
+@BUILD_ISOLIB_TRUE@    LongWholeIO.lo LowLong.lo LowReal.lo \
+@BUILD_ISOLIB_TRUE@    LowShort.lo M2EXCEPTION.lo M2RTS.lo \
+@BUILD_ISOLIB_TRUE@    MemStream.lo Preemptive.lo Processes.lo \
+@BUILD_ISOLIB_TRUE@    ProgramArgs.lo RandomNumber.lo RawIO.lo \
+@BUILD_ISOLIB_TRUE@    RealConv.lo RealIO.lo RealMath.lo \
+@BUILD_ISOLIB_TRUE@    RealStr.lo RndFile.lo RTdata.lo RTentity.lo \
+@BUILD_ISOLIB_TRUE@    RTfio.lo RTgenif.lo RTgen.lo RTio.lo \
+@BUILD_ISOLIB_TRUE@    Semaphores.lo SeqFile.lo \
 @BUILD_ISOLIB_TRUE@    ShortComplexMath.lo ShortConv.lo ShortIO.lo \
 @BUILD_ISOLIB_TRUE@    ShortMath.lo ShortStr.lo ShortWholeIO.lo \
 @BUILD_ISOLIB_TRUE@    SimpleCipher.lo SIOResult.lo SLongIO.lo \
@@ -492,6 +493,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_ISOLIB_TRUE@         ConvTypes.def  COROUTINES.def \
 @BUILD_ISOLIB_TRUE@         ErrnoCategory.def  EXCEPTIONS.def \
 @BUILD_ISOLIB_TRUE@         GeneralUserExceptions.def  IOChan.def \
+@BUILD_ISOLIB_TRUE@         IOChanUtils.def \
 @BUILD_ISOLIB_TRUE@         IOConsts.def  IOLink.def \
 @BUILD_ISOLIB_TRUE@         IOResult.def  LongComplexMath.def \
 @BUILD_ISOLIB_TRUE@         LongConv.def  LongIO.def \
@@ -537,7 +539,8 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_ISOLIB_TRUE@         ConvStringShort.mod \
 @BUILD_ISOLIB_TRUE@         ConvTypes.mod  COROUTINES.mod \
 @BUILD_ISOLIB_TRUE@         EXCEPTIONS.mod  GeneralUserExceptions.mod \
-@BUILD_ISOLIB_TRUE@         IOChan.mod  IOConsts.mod \
+@BUILD_ISOLIB_TRUE@         IOChan.mod  IOChanUtils.mod \
+@BUILD_ISOLIB_TRUE@         IOConsts.mod \
 @BUILD_ISOLIB_TRUE@         IOLink.mod  IOResult.mod \
 @BUILD_ISOLIB_TRUE@         LongComplexMath.mod  LongConv.mod \
 @BUILD_ISOLIB_TRUE@         LongIO.mod  LongMath.mod \