Sender: rich AT phekda DOT freeserve DOT co DOT uk Message-ID: <3E342EAE.733C3809@phekda.freeserve.co.uk> Date: Sun, 26 Jan 2003 18:53:34 +0000 From: Richard Dawe X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.23 i586) X-Accept-Language: de,fr MIME-Version: 1.0 To: djgpp-workers AT delorie DOT com Subject: Re: DJGCPP Clio 2.04 Alpha update - New release in the next few days References: <250B3114DA16D511B82C00E0094005F809D31B6C AT MSGWAW11> <3E2AECE9 DOT FEB15D0 AT phekda DOT freeserve DOT co DOT uk> <003901c2c052$45309be0$0100a8c0 AT acp42g> <3E2BE86B DOT 1C5445A AT phekda DOT freeserve DOT co DOT uk> <3E318DE4 DOT 80E2C838 AT phekda DOT freeserve DOT co DOT uk> <2110-Sat25Jan2003200154+0200-eliz AT is DOT elta DOT co DOT il> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Reply-To: djgpp-workers AT delorie DOT com Hello. Eli Zaretskii wrote: [snip] > It should also be possible to do this from a normal DOS prompt: > > sh -c 'make install' Yes, I hadn't thought of that. Thanks. If I do another release, it'll have the updated instructions in readme.dos. > Alternatively, we could invent some trick to be put into ginstall's > sources that would work around the problem in a way Unix systems do. > Perhaps the new fd_props feature could help (via the delete-on-close > feature)? > > Btw, do I understand correctly that the problem only happens on > Windows? IIRC, DOS doesn't care if you overwrite a running program's > executable file on disk. On further investigation it seems like I'm confusing file removal and file overwriting. You can't unlink a running file on Windows. You may be able to under DOS, but that could cause filesystem corruption unless you have SHARE running, according to Ralph Brown's Interrupt List. You can overwrite a running program. See the program overme.c at the end of this mail. It works fine on Windows. I don't know about DOS. I said: "Since "make install" will overwrite the install program, we can't use ginstall. It can't overwrite itself with another executable, when it's running." This is actually untrue. It does work. Again, I don't know about DOS. Sorry for the confusion. Bye, Rich =] -- Richard Dawe [ http://www.phekda.freeserve.co.uk/richdawe/ ] ---Start overme.c--- #include #include #include int main (int argc, char *argv[]) { FILE *fp = NULL; fp = fopen(argv[0], "w"); if (!fp) { puts("Bleurgh"); return(EXIT_FAILURE); } fprintf(fp, "foo\n"); fclose(fp), fp = NULL; return(EXIT_SUCCESS); } ---End overme.c---