X-Authentication-Warning: delorie.com: mail set sender to djgpp-workers-bounces using -f X-Recipient: djgpp-workers AT delorie DOT com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=piMihaEzBEDKPvE72hEI+sgMMANKuiDK5HY+C4fZhCc=; b=uTr4Lv/1I5tFyS3AQCYO7II6gOBo+yfUK71Cz8PCZZQWCY+034AC4P670UvdTLXoNW cqXU+OoCV7ixCHKod74nN8BECGrVOAIy4Jk7RbndNf8Wv6P1yCpvkLqqpk71J3FzLPOQ pix7iYXhXaAq27Fzef5jCavSkDQM6m0IFYslA= MIME-Version: 1.0 Date: Sat, 2 Jul 2011 11:38:29 +0300 Message-ID: Subject: [patch] make _dos_getfileattr to return r.x.cx From: Ozkan Sezer To: djgpp-workers AT delorie DOT com Content-Type: text/plain; charset=ISO-8859-1 Reply-To: djgpp-workers AT delorie DOT com On Wed, Jun 8, 2011 at 3:37 AM, DJ Delorie wrote: > > ------- Start of forwarded message ------- > Date: Tue, 7 Jun 2011 20:13:01 -0400 (EDT) > From: David Winfrey > To: dj AT delorie DOT com > Subject: Possible bug in _dos_getfileattr > Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed > > > I believe that _dos_getfileattr(), > in src\libc\dos\compat\d_getfa.c in the gcc452b.zip file, > needs to return r.x.cx instead of r.x.ax. > > It's consistently returning 0x4300, regardless of the > actual file attributes; this is the r.x.ax input value > for the DOS get_attributes call. > > Thanks, > > David L. Winfrey > dlw AT patriot DOT net > www.patriot.net/users/dlw > www.wsumc.net > ------- End of forwarded message ------- > The patch below is after the above bug report from the thread above. The lfn-aware version _chmod() returns r.x.cx too, so the suggestion seems valid, hence the suggested patch. Regards. Index: d_getfa.c =================================================================== RCS file: /cvs/djgpp/djgpp/src/libc/dos/compat/d_getfa.c,v retrieving revision 1.1 diff -U 7 -p -r1.1 d_getfa.c --- d_getfa.c 25 Nov 1995 02:18:00 -0000 1.1 +++ d_getfa.c 2 Jul 2011 08:33:24 -0000 @@ -31,10 +31,10 @@ unsigned int _dos_getfileattr(const char r.x.ds = __tb / 16; __dpmi_int(0x21, &r); if ( r.x.flags & 1 ) { errno = __doserr_to_errno(r.x.ax); return r.x.ax; } - *p_attr = r.x.ax; + *p_attr = r.x.cx; return 0; } -- O.S.