|
From: | John A Meinel |
Subject: | Re: [Gnu-arch-users] Re: darcs vs tla |
Date: | Thu, 18 Nov 2004 15:59:16 -0600 |
User-agent: | Mozilla Thunderbird 0.9 (Windows/20041103) |
Adrian Irving-Beer wrote:
On Thu, Nov 18, 2004 at 03:02:57PM -0600, John A Meinel wrote:hackerlab creates a temporary executable to generate an output file and then deletes it. But on cygwin/windows the file ends with a .exe, so rm cannot find it to delete it.I know there is no 'gcc contract', but doesn't saying 'ld -o foo' or 'gcc -o foo' and getting foo.exe (a) violate the expectation of using -o, and (b) break almost every other Makefile out there? Not saying it's not a problem. Just confuses me why Cygwin would do this. As I recall, all their system executables end in .exe too, although you call them without like in Unix. Does Windows literally only run files with a .exe extension? I haven't used Cygwin or Windows in years.
Windows will only run files with a .exe, .com, .bat, maybe a couple more. Windows determines what is executable from the extension (it has no X bit)
cygwin works around this by pretending when you say ls That you really meant ls.exe A lot of makefiles I've seen have this workaround EXE= ifeq($OS,Windows_NT) EXE=.exe endif myprog$(EXE) : <dependencies> You can also get make to work by supplying rm ,es$(EXE) <other stuff> or using -rm ,es <other stuff> which won't actually remove ,es.exe I think most tools convert the filename to exe as needed. For instance: $ ls /bin/ls /bin/ls $ ls /bin/ls* /bin/ls.exeNotice that there does not exist a file named "/bin/ls" it is actually /bin/ls.exe
I'm guessing that rm is an exception because they didn't want to remove something you didn't exactly say (since you are deleting). Playing nice with ls, find, etc is all good, but secretly deleting something would be bad.
John =:->
signature.asc
Description: OpenPGP digital signature
[Prev in Thread] | Current Thread | [Next in Thread] |