Date: Thu, 16 Aug 2001 00:16:48 +0300 From: "Eli Zaretskii" Sender: halo1 AT zahav DOT net DOT il To: "Tim Van Holder" Message-Id: <3277-Thu16Aug2001001648+0300-eliz@is.elta.co.il> X-Mailer: Emacs 20.6 (via feedmail 8.3.emacs20_6 I) and Blat ver 1.8.9 CC: djgpp-workers AT delorie DOT com In-reply-to: Subject: Re: Another quirk: unremovable files References: Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk > From: "Tim Van Holder" > Date: Wed, 15 Aug 2001 19:54:44 +0200 > > Odd this - if a DOS box crashes under DJGPP (say, as a result > of selector exhaustion), files that were open in that session > are unremovable by DJGPP tools. I've seen this. I think it's a Windows ``feature'': it still thinks those files are open by some program. You can verify that by running a loop which calls function 440Dh, subfunction 086Dh of Int 21h (see the details below). > The current autoconf testsuite is a huge shell script and can > no longer run to completion (it crashes the DOS box around > test number 140 of 157). If I open a new DOS box after such > a crash, and run 'make clean' in the tests directory, rm > complains it cannot remove testsuite.log, at-stderr and > at-stdout, all files that were open during the testsuite run. > 4DOS' (and presumably command.com's) 'del' deletes them without > a hitch. That's not what I've seen: in my cases, DEL also won't delete the files. What error code does `rm' report? You might consider stepping into `remove' and seeing what exactly fails there, and how. --------D-21440DCX086D----------------------- INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - ENUMERATE OPEN FILES AX = 440Dh CX = 086Dh / 486Dh (category code 08h for FAT12/16, 48h for FAT32; minor code 6Dh) BL = drive number (00h=default,01h=A:,etc) DS:DX -> buffer for ASCIZ pathname SI = file index (0000h to number of open files-1) DI = enumeration type (0000h all files, 0001h unmovable files) Return: CF set on error AX = error code (01h,02h,12h,etc.) (see #01680 at AH=59h/BX=0000h) 0012h if file index is out of range CF clear if successful AX = file open mode (BX from AX=6C00h or AX=716Ch) CX = file type (see #01577) SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=086Ch SeeAlso: AX=440Dh/CX=086Eh,AX=6C00h,AX=716Ch (Table 01577) Values for file type: 0000h normal file 0001h memory-mapped file (unmovable) 0002h unmovable file 0004h swap file