X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f From: Juan Manuel Guerrero Newsgroups: comp.os.msdos.djgpp Subject: Re: Isues concerning the INT 21 Windows95 - LONG FILENAME FUNCTIONS (0x71XX) implementation. Date: Sun, 18 Sep 2011 05:24:04 -0700 (PDT) Organization: http://groups.google.com Lines: 69 Message-ID: <46230cec-f7fd-4718-ad72-c425371d1bbf@z5g2000yqf.googlegroups.com> References: <201109171356 DOT 53360 DOT juan DOT guerrero AT gmx DOT de> NNTP-Posting-Host: 95.208.137.71 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 X-Trace: posting.google.com 1316348727 15383 127.0.0.1 (18 Sep 2011 12:25:27 GMT) X-Complaints-To: groups-abuse AT google DOT com NNTP-Posting-Date: Sun, 18 Sep 2011 12:25:27 +0000 (UTC) Complaints-To: groups-abuse AT google DOT com Injection-Info: z5g2000yqf.googlegroups.com; posting-host=95.208.137.71; posting-account=OsAajgoAAADdKJnkJkmhzqP0jo6I_P_0 User-Agent: G2/1.0 X-Google-Web-Client: true X-Google-Header-Order: HUALESNKRC X-HTTP-UserAgent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2,gzip(gfe) Bytes: 3792 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com On 18 Sep., 07:00, "Rod Pemberton" wrote: > "Juan Manuel Guerrero" wrote in messagenews:201109171356 DOT 53360 DOT juan DOT guerrero AT gmx DOT de... > > Here is a patch > > - to set always the CF flag before calling a 0x71XX function > > - to check that AX does not contain 0x7100 after return signaling > > that the driver supports the called function. > > - to react if the driver does not support the function. > > In almost all cases I followed Eli Zaretskii's suggestions. > > > Could you recheck a few things? I'm just looking at the diffs ... > > 1) In _rename.c you have this: > > if (r.x.flags & 1 && r.x.ax != 0x7100) > > Is that correct? Aren't those two opposite conditions? It was "if > (r.x.flags & 1)". Should it be "if (r.x.flags & 1 || r.x.ax == 0x71a00)" ? Yes, you are right. It should be "if (r.x.flags & 1 || r.x.ax == 0x71a00)" > 2) In many places you check for ax and flags like this: > > if (r.x.flags & 1 || r.x.ax == 0x71a00) > > The point being that you said ax needs to be checked also because flags is > not always valid. > > Yet, in many other places you check for ax and flags like this: > > if (r.x.flags & 1) > { > if (r.x.ax == 0x7100) > > If flags is not always valid, does the check for 0x7100 work? Why > are these checks nested? Shouldn't these be logical or'd like the others? The nested check are to decide if the call failed because the operation failed and an error code or something else should be issued or if the call failed because the function was not implemented at all. In this case the SFN API should be called instead. I always set the CF before calling the 0x71XX function and I assumed that the CF value will be valid after return. If this cannot be assumed then it makes no sense at all to set CF before calling the function. _Iff_ the called function is not implemented and in this case the CF value gets corrupted (CF = 0) then the above code will not work. May be it will be better to check for AX and then deciding if CF is valid. > 3) From the filelist, the patches are for v2.04? If also for v2.03, > symlink.c uses LFNs. Sorry I do not understand this. My patches are always for the main CVS branch. That would be v2.04 (some day). I never submite any patch for other branches. It is not an inconvenience to me to make a second patch for the latest v2.03 branch, but ask DJ if he wants to see it commited or not. Regards, Juan M. Guerrero