OS X patch for run_erl.c

Bjorn Gustavsson bjorn@REDACTED
Mon Dec 6 14:14:23 CET 2004


Thanks!

We have look at this issue. I can't promise we'll be able to do that
for R10B-2.

/Bjorn

"Peter L" <erlang@REDACTED> writes:

> This Sunday I discovered that my FreeBSD 4.3 had exactly the same
> problem as Sean had in his OS X, with mknod/mkfifo in the run_erl.c
> file. When I applied the same patch as Sean did I was able to start
> erlang as a daemon, which I had not been able to do before on FreeBSD.
> 
> Looking at this file run_erl.c in the latest R10B-1a version of
> OTP/Erlang, I was still unable to see any fix for this problem,
> despite it being well over a year since Sean reported the problem
> the first time.
> 
> Is it in Erlang or in FreeBSD / OS X, where the problem needs to be
> fixed? Because I guess that Erlang is supposed to support also OS X
> and FreeBSD...
> 
> A maybe related problem I had, was that I was not able to attach
> properly to the erlang daemon with the supplied bin/to_erl. Is there
> perhaps another fix that has to be applied for this to work under
> FreeBSD or OS X? Sean, any idea?
> 
> /Peter
> 
> %% ============ From the erlang list archive ===============
> 
>     * To: Bengt Kleberg
>     * Subject: Re: OS X patch for run_erl.c
>     * From: Sean Hinde
>     * Date: Fri, 19 Sep 2003 23:46:54 +0100
>     * Cc: Erlang Questions
> 
> On Monday, September 15, 2003, at 09:07  am, Bengt Kleberg wrote:
> 
> > Sean Hinde wrote:
> >> Hi,
> >> The following patch to run_erl.c is required for Erlang to run in
> >> embedded mode under OS X. Without this patch run_erl fails to create
> >> the
> >
> > ...deleted
> >> +#ifdef HAVE_MACH_O_DYLD_H
> >> +  if ((mkfifo(name, perm) < 0) && (errno != EEXIST))
> >> +#else
> >> +    if ((mknod(name, S_IFIFO | perm, 0) < 0) && (errno != EEXIST))
> >> +#endif
> >
> > perhaps mkfifo() is deprecated (or something even worse :-), but would
> > it not have been better to test like this:
> >
> > #ifdef HAVE_MKFIFO
> > 	if ((mkfifo(name, perm) < 0) && (errno != EEXIST))
> > #else
> > 	if ((mknod(name, S_IFIFO | perm, 0) < 0) && (errno != EEXIST))
> > #endif
> >
> 
> No doubt. I leave it to the real maintainers of Erlang to take care of
> elegance in the build process. All this difficult cross platform C
> stuff is light years from anything I claim competence in, beyond the
> annoying necessity to occasionally waste many hours making Erlang work
> on my favourite laptop :)
> 
> Sean
> 
> 
> -- 
> Peter Lund
> Web: http://lundata.se
> Tel: +46 70 543 9416
> 

-- 
Björn Gustavsson, Erlang/OTP, Ericsson AB



More information about the erlang-questions mailing list