delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2001/08/15/18:49:08

Date: Thu, 16 Aug 2001 00:16:48 +0300
From: "Eli Zaretskii" <eliz AT is DOT elta DOT co DOT il>
Sender: halo1 AT zahav DOT net DOT il
To: "Tim Van Holder" <tim DOT van DOT holder AT pandora DOT be>
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: <CAEGKOHJKAAFPKOCLHDIAELKCGAA.tim.van.holder@pandora.be>
Subject: Re: Another quirk: unremovable files
References: <CAEGKOHJKAAFPKOCLHDIAELKCGAA DOT tim DOT van DOT holder AT pandora DOT be>
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

> From: "Tim Van Holder" <tim DOT van DOT holder AT pandora DOT be>
> 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

- Raw text -


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