delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2003/01/26/13:57:25

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 <rich AT phekda DOT freeserve DOT co DOT uk>
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>
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 <stdio.h>
#include <stdlib.h>
#include <string.h>

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---

- Raw text -


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