ftp.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2011/09/18/08:45:09

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
From: Juan Manuel Guerrero <juan DOT guerrero AT gmx DOT de>
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> <j53tt9$gqg$1 AT speranza DOT aioe DOT org>
NNTP-Posting-Host: 95.208.137.71
Mime-Version: 1.0
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" <do_not_h DOT  DOT  DOT  AT noavailemail DOT cmm>
wrote:
> "Juan Manuel Guerrero" <juan DOT guerr DOT  DOT  DOT  AT gmx DOT de> 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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019