|
@@ -4,7 +4,7 @@ MODULE UnixFiles; (** AUTHOR "gf"; PURPOSE "Unix file systems" *)
|
|
|
|
|
|
(* derived fron (SPARCOberon) Files.Mod by J. Templ 1.12. 89/14.05.93 *)
|
|
(* derived fron (SPARCOberon) Files.Mod by J. Templ 1.12. 89/14.05.93 *)
|
|
|
|
|
|
-IMPORT S := SYSTEM, Unix, Kernel, Modules, Log := KernelLog, Files, Commands;
|
|
|
|
|
|
+IMPORT S := SYSTEM, Unix, Kernel, Modules, Log := KernelLog, Files, Commands, Tr := Trace;
|
|
|
|
|
|
|
|
|
|
CONST
|
|
CONST
|
|
@@ -369,7 +369,7 @@ TYPE
|
|
r := UnixWrite( fdnew, ADDRESSOF( buf ), n );
|
|
r := UnixWrite( fdnew, ADDRESSOF( buf ), n );
|
|
IF r < 0 THEN
|
|
IF r < 0 THEN
|
|
r := Unix.close( fdold );
|
|
r := Unix.close( fdold );
|
|
- r := Unix.close( fdnew );
|
|
|
|
|
|
+ r := Unix.close( fdnew );
|
|
RETURN NoDesc;
|
|
RETURN NoDesc;
|
|
END;
|
|
END;
|
|
END
|
|
END
|
|
@@ -492,7 +492,7 @@ TYPE
|
|
ELSE INC( i ); j := 0
|
|
ELSE INC( i ); j := 0
|
|
END
|
|
END
|
|
ELSE
|
|
ELSE
|
|
- dirName[j] := searchPath[i]; INC( j ); INC( i )
|
|
|
|
|
|
+ dirName[j] := searchPath[i]; INC( j ); INC( i )
|
|
END
|
|
END
|
|
END
|
|
END
|
|
END;
|
|
END;
|
|
@@ -577,7 +577,11 @@ TYPE
|
|
BEGIN
|
|
BEGIN
|
|
IF buf.chg THEN
|
|
IF buf.chg THEN
|
|
IF fd = NoDesc THEN CreateUnixFile END;
|
|
IF fd = NoDesc THEN CreateUnixFile END;
|
|
- IF buf.org # fpos THEN res := Unix.lseek( fd, buf.org, 0 ) END;
|
|
|
|
|
|
+ IF buf.org # fpos THEN
|
|
|
|
+ IF Unix.lseek( fd, buf.org, 0 ) = -1 THEN
|
|
|
|
+ Halt( SELF, TRUE, "UnixFiles.File.Flush: lseek failed" )
|
|
|
|
+ END
|
|
|
|
+ END;
|
|
res := UnixWrite( fd, ADDRESSOF( buf.data ), buf.size );
|
|
res := UnixWrite( fd, ADDRESSOF( buf.data ), buf.size );
|
|
IF res < 0 THEN Halt( SELF, TRUE, "UnixFiles.File.Flush: write failed" ) END;
|
|
IF res < 0 THEN Halt( SELF, TRUE, "UnixFiles.File.Flush: write failed" ) END;
|
|
fpos := buf.org + buf.size; buf.chg := FALSE;
|
|
fpos := buf.org + buf.size; buf.chg := FALSE;
|
|
@@ -617,8 +621,11 @@ TYPE
|
|
buf.size := 0
|
|
buf.size := 0
|
|
ELSE
|
|
ELSE
|
|
IF fd = NoDesc THEN CreateUnixFile END;
|
|
IF fd = NoDesc THEN CreateUnixFile END;
|
|
- IF fpos # org THEN res := Unix.lseek( fd, org, 0 ) END;
|
|
|
|
- IF res < 0 THEN Halt( SELF, TRUE, "UnixFiles.File.Set: lseek failed" ) END;
|
|
|
|
|
|
+ IF fpos # org THEN
|
|
|
|
+ IF Unix.lseek( fd, org, 0 ) = -1 THEN
|
|
|
|
+ Halt( SELF, TRUE, "UnixFiles.File.Set: lseek failed" )
|
|
|
|
+ END
|
|
|
|
+ END;
|
|
n := UnixRead( fd, ADDRESSOF( buf.data ), Bufsize );
|
|
n := UnixRead( fd, ADDRESSOF( buf.data ), Bufsize );
|
|
IF n < 0 THEN
|
|
IF n < 0 THEN
|
|
IF p < fsize THEN Halt( SELF, TRUE, "UnixFiles.File.Set: read failed" )
|
|
IF p < fsize THEN Halt( SELF, TRUE, "UnixFiles.File.Set: read failed" )
|