|
@@ -368,19 +368,18 @@ TYPE
|
|
|
END;
|
|
|
REPEAT
|
|
|
n := Unix.read( fdold, ADDRESSOF( buf ), Bufsize ); (*can return -1 with EINTR without any particular reason*)
|
|
|
- IF n>0 THEN
|
|
|
+ IF n > 0 THEN
|
|
|
REPEAT
|
|
|
r := Unix.write( fdnew, ADDRESSOF( buf ), n );
|
|
|
- res:= Unix.errno();
|
|
|
- UNTIL (r>=0) OR (res#Unix.EINTR); (*ignore EINTR, retry*)
|
|
|
+ IF r < 0 THEN res:= Unix.errno( ) END;
|
|
|
+ UNTIL (r >= 0) OR (res # Unix.EINTR); (*ignore EINTR, retry*)
|
|
|
IF r < 0 THEN
|
|
|
- res := Unix.errno();
|
|
|
r := Unix.close( fdold );
|
|
|
r := Unix.close( fdnew );
|
|
|
RETURN NoDesc;
|
|
|
END;
|
|
|
END
|
|
|
- UNTIL n=0;
|
|
|
+ UNTIL n = 0;
|
|
|
r := Unix.unlink( ADDRESSOF( old ) );
|
|
|
r := Unix.close( fdold );
|
|
|
r := Unix.close( fdnew );
|
|
@@ -596,10 +595,8 @@ TYPE
|
|
|
IF buf.org # fpos THEN res := Unix.lseek( fd, buf.org, 0 ) END;
|
|
|
REPEAT
|
|
|
res := Unix.write( fd, ADDRESSOF( buf.data ), buf.size );
|
|
|
- IF res<0 THEN
|
|
|
- err:=Unix.errno();
|
|
|
- END;
|
|
|
- UNTIL (res>=0) OR (err#Unix.EINTR); (*ignore EINTR, retry*)
|
|
|
+ IF res < 0 THEN err := Unix.errno() END;
|
|
|
+ UNTIL (res >= 0) OR (err # Unix.EINTR); (*ignore EINTR, retry*)
|
|
|
IF res < 0 THEN Halt( SELF, TRUE, "UnixFiles.File.Flush: write failed" ) END;
|
|
|
fpos := buf.org + buf.size; buf.chg := FALSE;
|
|
|
res := Unix.fstat( fd, stat ); mtime := stat.mtime.sec
|
|
@@ -642,7 +639,9 @@ TYPE
|
|
|
IF res < 0 THEN Halt( SELF, TRUE, "UnixFiles.File.Set: lseek failed" ) END;
|
|
|
REPEAT
|
|
|
n := Unix.read( fd, ADDRESSOF( buf.data ), Bufsize ); (*can return -1 with EINTR without warning*)
|
|
|
- UNTIL n>=0;
|
|
|
+ IF n < 0 THEN res:= Unix.errno( ) END;
|
|
|
+ UNTIL (n >= 0) OR ((res # Unix.EINTR) & (res # Unix.EINVAL));
|
|
|
+ (* Solaris returns EINVAL instead of EINTR ! ??? *)
|
|
|
IF n < 0 THEN
|
|
|
IF p < fsize THEN Halt( SELF, TRUE, "UnixFiles.File.Set: read failed" )
|
|
|
ELSE n := 0
|
|
@@ -959,7 +958,7 @@ TYPE
|
|
|
END;
|
|
|
UNTIL (i >= 0) & (path[i] = 0X);
|
|
|
IF (i > 1) & (path[i - 1] = '/') THEN path[i - 1] := 0X END;
|
|
|
- IF path = "" THEN path := "." END;
|
|
|
+ IF path = "" THEN COPY( cwd, path ) END;
|
|
|
END CleanPath;
|
|
|
|
|
|
|