Mail Archives: djgpp/2011/09/02/10:54:01
--bcaec51a75923ec7b504abf623ec
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
On Fri, Sep 2, 2011 at 1:46 PM, Juan Manuel Guerrero
<juan DOT guerrero AT gmx DOT de> wrote:
> On 2 Sep., 08:57, Eli Zaretskii <e DOT DOT DOT AT gnu DOT org> wrote:
>> > From: Juan Manuel Guerrero <juan DOT guerr DOT DOT DOT AT gmx DOT de>
>> > Date: Thu, 1 Sep 2011 15:19:03 -0700 (PDT)
>>
>> > OFYI, I have djgpp 2.03 installed on the same partition with the same
>> > MSDOS 6.22 so I can choose if I want to compile with 2.04 or 2.03.
>> > gcc 4.6.1 and djgpp-2.03 work flawlessly.
>>
>> Wait a minute. =A0Are you saying that the problem is _only_ with GCC
>> compiled with DJGPP 2.04, and that 2.03-compiled GCC works? =A0I don't
>> think you said that before.
>>
>> If you compile with v2.03 a simple program that calls 7A46, and then
>> run it with DOSLFN, does it also fail?
>>
>> If so, this is certainly due to the use of 7A46, because in v2.03
>> `filelength' didn't call that function and `lfilelength' didn't exist
>> at all.
>>
>> So I think we need to fix these 2 functions to work around this
>> problem.
>
> Sorry for having been =A0imprecise. =A0I usualy do not use djgpp 2.03
> anymore
> so I did not note that the gcc version compiled with 2.03 worked.
> Yes, you are right, the problem is only with 2.04's =A0`filelength' and
> `lfilelength'.
> Both use 71A6 and fail with EOVERFLOW under certain circunstances.
> The only thing we need to do is to fix both functions so they work
> like
> the 2.03 versions if the 71A6 call fails with EOVERFLOW.
>
> Regards,
> Juan M. Guerrero
>
>
Something like the following then? (Very quick+dirty patch, I know.)
I also wonder whether fchmod() and/or fstat() are affected by this
lfn issue...
Index: src/libc/posix/sys/stat/filelen.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /cvs/djgpp/djgpp/src/libc/posix/sys/stat/filelen.c,v
retrieving revision 1.6
diff -u -p -r1.6 filelen.c
--- src/libc/posix/sys/stat/filelen.c 25 Sep 2001 01:00:52 -0000 1.6
+++ src/libc/posix/sys/stat/filelen.c 2 Sep 2011 14:21:13 -0000
@@ -50,13 +50,19 @@ filelength(int fhandle)
if ((_farpeekl(_dos_ds, __tb + 0x20) !=3D 0) || (retval =3D=3D -1))
{
+ /*
errno =3D EOVERFLOW;
return -1L;
+ */
+ /* This failure can happen under certain circumstances,
+ e.g. for DOS 6.22 with LFN driver installed. Therefore,
+ fallback to no-lfn way instead of returning error. */
+ goto _nofln;
}
return retval;
}
}
-
+_nofln:
/* Remember the current file position, so we can return there
later. */
regs.x.ax =3D 0x4201; /* set pointer from current position */
Index: src/libc/posix/sys/stat/lfilelen.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /cvs/djgpp/djgpp/src/libc/posix/sys/stat/lfilelen.c,v
retrieving revision 1.3
diff -u -p -r1.3 lfilelen.c
--- src/libc/posix/sys/stat/lfilelen.c 4 Feb 2001 19:13:01 -0000 1.3
+++ src/libc/posix/sys/stat/lfilelen.c 2 Sep 2011 14:21:13 -0000
@@ -45,15 +45,21 @@ lfilelength(int fhandle)
if (retval_h < 0)
{
+ /*
errno =3D EOVERFLOW;
return -1;
+ */
+ /* This failure can happen under certain circumstances,
+ e.g. for DOS 6.22 with LFN driver installed. Therefore,
+ fallback to no-lfn way instead of returning error. */
+ goto _nofln;
}
retval =3D retval_l + retval_h * (1LL << 32);
return retval;
}
}
-
+_nofln:
/* Remember the current file position, so we can return there
later. */
regs.x.ax =3D 0x4201; /* set pointer from current position */
--
O.S.
--bcaec51a75923ec7b504abf623ec
Content-Type: application/octet-stream; name="71A6.diff"
Content-Disposition: attachment; filename="71A6.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gs39a12e0
SW5kZXg6IHNyYy9saWJjL3Bvc2l4L3N5cy9zdGF0L2ZpbGVsZW4uYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL2RqZ3BwL2RqZ3BwL3NyYy9saWJjL3Bvc2l4L3N5cy9zdGF0L2ZpbGVsZW4uYyx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXUgLXAgLXIxLjYgZmlsZWxlbi5jCi0tLSBz
cmMvbGliYy9wb3NpeC9zeXMvc3RhdC9maWxlbGVuLmMJMjUgU2VwIDIwMDEgMDE6MDA6NTIgLTAw
MDAJMS42CisrKyBzcmMvbGliYy9wb3NpeC9zeXMvc3RhdC9maWxlbGVuLmMJMiBTZXAgMjAxMSAx
NDoyMToxMyAtMDAwMApAQCAtNTAsMTMgKzUwLDE5IEBAIGZpbGVsZW5ndGgoaW50IGZoYW5kbGUp
CiAKICAgICAgIGlmICgoX2ZhcnBlZWtsKF9kb3NfZHMsIF9fdGIgKyAweDIwKSAhPSAwKSB8fCAo
cmV0dmFsID09IC0xKSkKICAgICAgIHsKKwkvKgogICAgICAgICBlcnJubyA9IEVPVkVSRkxPVzsK
ICAgICAgICAgcmV0dXJuIC0xTDsKKwkqLworCS8qIFRoaXMgZmFpbHVyZSBjYW4gaGFwcGVuIHVu
ZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywKKwkgICBlLmcuIGZvciBET1MgNi4yMiB3aXRoIExG
TiBkcml2ZXIgaW5zdGFsbGVkLiAgVGhlcmVmb3JlLAorCSAgIGZhbGxiYWNrIHRvIG5vLWxmbiB3
YXkgaW5zdGVhZCBvZiByZXR1cm5pbmcgZXJyb3IuICAqLworCWdvdG8gX25vZmxuOwogICAgICAg
fQogICAgICAgcmV0dXJuIHJldHZhbDsKICAgICB9CiAgIH0KLSAgCitfbm9mbG46CiAgIC8qIFJl
bWVtYmVyIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIHNvIHdlIGNhbiByZXR1cm4gdGhlcmUK
ICAgICAgbGF0ZXIuICAqLwogICByZWdzLnguYXggPSAweDQyMDE7ICAgICAgLyogc2V0IHBvaW50
ZXIgZnJvbSBjdXJyZW50IHBvc2l0aW9uICovCkluZGV4OiBzcmMvbGliYy9wb3NpeC9zeXMvc3Rh
dC9sZmlsZWxlbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZGpncHAvZGpncHAvc3JjL2xp
YmMvcG9zaXgvc3lzL3N0YXQvbGZpbGVsZW4uYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRp
ZmYgLXUgLXAgLXIxLjMgbGZpbGVsZW4uYwotLS0gc3JjL2xpYmMvcG9zaXgvc3lzL3N0YXQvbGZp
bGVsZW4uYwk0IEZlYiAyMDAxIDE5OjEzOjAxIC0wMDAwCTEuMworKysgc3JjL2xpYmMvcG9zaXgv
c3lzL3N0YXQvbGZpbGVsZW4uYwkyIFNlcCAyMDExIDE0OjIxOjEzIC0wMDAwCkBAIC00NSwxNSAr
NDUsMjEgQEAgbGZpbGVsZW5ndGgoaW50IGZoYW5kbGUpCiAKICAgICAgIGlmIChyZXR2YWxfaCA8
IDApCiAgICAgICB7CisJLyoKICAgICAgICAgZXJybm8gPSBFT1ZFUkZMT1c7CiAgICAgICAgIHJl
dHVybiAtMTsKKwkqLworCS8qIFRoaXMgZmFpbHVyZSBjYW4gaGFwcGVuIHVuZGVyIGNlcnRhaW4g
Y2lyY3Vtc3RhbmNlcywKKwkgICBlLmcuIGZvciBET1MgNi4yMiB3aXRoIExGTiBkcml2ZXIgaW5z
dGFsbGVkLiAgVGhlcmVmb3JlLAorCSAgIGZhbGxiYWNrIHRvIG5vLWxmbiB3YXkgaW5zdGVhZCBv
ZiByZXR1cm5pbmcgZXJyb3IuICAqLworCWdvdG8gX25vZmxuOwogICAgICAgfQogCiAgICAgICBy
ZXR2YWwgPSByZXR2YWxfbCArIHJldHZhbF9oICogKDFMTCA8PCAzMik7CiAgICAgICByZXR1cm4g
cmV0dmFsOwogICAgIH0KICAgfQotICAKK19ub2ZsbjoKICAgLyogUmVtZW1iZXIgdGhlIGN1cnJl
bnQgZmlsZSBwb3NpdGlvbiwgc28gd2UgY2FuIHJldHVybiB0aGVyZQogICAgICBsYXRlci4gICov
CiAgIHJlZ3MueC5heCA9IDB4NDIwMTsgICAgICAvKiBzZXQgcG9pbnRlciBmcm9tIGN1cnJlbnQg
cG9zaXRpb24gKi8K
--bcaec51a75923ec7b504abf623ec--
- Raw text -