Mail Archives: djgpp-workers/2001/02/04/12:41:39.1
> OK by me, but then make it 2^63-1 instead of 2^64-2. 2^63-1 is the
> largest *positive* integer that will fit into a "long long", if I'm not
I made that change. lfilelength has also been adjusted to return EOVERFLOW when the
file size is > 2^63-1 since that will cause a negative value to be returned.
Index: libc/posix/sys/stat/lfilelen.txh
===================================================================
RCS file: /cvs/djgpp/djgpp/src/libc/posix/sys/stat/lfilelen.txh,v
retrieving revision 1.2
diff -c -p -r1.2 lfilelen.txh
*** lfilelen.txh 2001/01/26 18:50:45 1.2
--- lfilelen.txh 2001/02/04 17:34:01
*************** The size of the file in bytes, or (if an
*** 19,25 ****
@var{errno} set to a value describing the cause of the failure.
The return value is of type @code{long long} which allows file sizes of
! @math{2^64-2} bytes to be returned. Note that FAT16 limits files to near
@math{2^31} bytes and FAT32 limits files to @math{2^32-2} bytes.
@subheading Portability
--- 19,25 ----
@var{errno} set to a value describing the cause of the failure.
The return value is of type @code{long long} which allows file sizes of
! @math{2^63-1} bytes to be returned. Note that FAT16 limits files to near
@math{2^31} bytes and FAT32 limits files to @math{2^32-2} bytes.
@subheading Portability
Index: libc/posix/sys/stat/lfilelen.c
===================================================================
RCS file: /cvs/djgpp/djgpp/src/libc/posix/sys/stat/lfilelen.c,v
retrieving revision 1.2
diff -c -p -r1.2 lfilelen.c
*** lfilelen.c 2001/01/28 16:19:21 1.2
--- lfilelen.c 2001/02/04 17:34:01
*************** lfilelength(int fhandle)
*** 43,48 ****
--- 43,54 ----
long retval_l = _farpeekl (_dos_ds, __tb + 0x24);
long retval_h = _farpeekl (_dos_ds, __tb + 0x20);
+ if (retval_h < 0)
+ {
+ errno = EOVERFLOW;
+ return -1;
+ }
+
retval = retval_l + retval_h * (1LL << 32);
return retval;
}
Index: docs/kb/wc204.txi
===================================================================
RCS file: /cvs/djgpp/djgpp/src/docs/kb/wc204.txi,v
retrieving revision 1.48
diff -c -p -r1.48 wc204.txi
*** wc204.txi 2001/02/02 15:10:41 1.48
--- wc204.txi 2001/02/04 17:34:03
*************** that OS.
*** 228,234 ****
@findex lfilelength AT r{, and FAT32}
The function @code{lfilelength} added with return type @code{long long}
! to support file sizes of up to @math{2^64-2}.
@pindex djasm AT r{, documentation}
Texinfo documentation (WIP) for @code{djasm} has been added.
--- 228,234 ----
@findex lfilelength AT r{, and FAT32}
The function @code{lfilelength} added with return type @code{long long}
! to support file sizes of up to @math{2^63-1}.
@pindex djasm AT r{, documentation}
Texinfo documentation (WIP) for @code{djasm} has been added.
Index: libc/ansi/errno/errno.txh
===================================================================
RCS file: /cvs/djgpp/djgpp/src/libc/ansi/errno/errno.txh,v
retrieving revision 1.8
diff -c -p -r1.8 errno.txh
*** errno.txh 2001/01/26 17:08:16 1.8
--- errno.txh 2001/02/04 17:34:05
*************** file handling function in library. Usual
*** 247,253 ****
EOVERFLOW -- Value too large. @code{filelength} can assign this to
@code{errno} when a file's length is larger than @math{2^31-2}
! (@pxref{filelength}).
@end table
--- 247,254 ----
EOVERFLOW -- Value too large. @code{filelength} can assign this to
@code{errno} when a file's length is larger than @math{2^31-2}
! (@pxref{filelength}). @code{lfilelength} can assign this to @code{errno}
! when a file's length is larger than @math{2^63-1} (@pxref{lfilelength}).
@end table
- Raw text -