[erlang-bugs] Re: Bug in c:nc, R13B01

Mazen Harake mazen.harake@REDACTED
Wed Sep 30 08:45:13 CEST 2009


EErrr... element(2, ...) I meant :D

/Mazen

Mazen Harake wrote:
> I would suggest to replace
>
> {ok, Cwd} = file:get_cwd(),
> Dir = case lists:keyfind(outdir, 1, Opts) of
>     {outdir, Out} -> Out;
>     false -> Cwd
> end,
>
> with:
>
> Dir = proplists:get_value(outdir, Opts, element(1, file:get_cwd())),
> ...
>
> Easier to read imho.
>
> /Mazen
>
>
> Alex Suraci wrote:
>> Potential fix?: http://paste.pocoo.org/show/142193/
>>
>> I'll submit a patch but I'd prefer having some input as this is kind of
>> a low-level part of Erlang (being in the stdlib and all).
>>
>> Description of changes: if an outdir is specified, Fname should be 
>> prefixed
>> with that, otherwise it should be the cwd, as that's where 
>> compile:file will
>> put the .beam file.
>>
>> - Alex
>>
>> On Sun, Sep 20, 2009 at 6:33 PM, Alex Suraci <i.am@REDACTED> 
>> wrote:
>>  
>>> Excerpt from lib/stdlib/src/c.erl: http://paste.pocoo.org/show/140752/
>>>
>>> On line 7, Fname is naively assumed to be a .beam file compiled
>>> to the same directory where the source .erl file resided. However, this
>>> is often false, for example when there is an `outdir' option, or when
>>> calling `nc()' from the shell with a path to a file like "foo/bar" 
>>> (in which
>>> case compile:file just plops it in the cwd of the shell).
>>>
>>> For example. when you call `make:all([netload])' and your Emakefile
>>> specifies `ebin' as your outdir, it will call `c:nc' and it'll 
>>> compile fine,
>>> but the modules won't update and you'll have no idea why (until you
>>> dig a little deeper).
>>>
>>> So, really, the only way for this function to work properly is when
>>> compiling with the shell's cwd being the same directory as the .erl 
>>> file.
>>>
>>> -- 
>>> Alex
>>>
>>>     
>>
>>
>>
>>   
>
>
> ________________________________________________________________
> erlang-bugs mailing list. See http://www.erlang.org/faq.html
> erlang-bugs (at) erlang.org
>



More information about the erlang-bugs mailing list