~rdoering/ubuntu/karmic/erlang/fix-535090

« back to all changes in this revision

Viewing changes to lib/kernel/src/application_controller.erl

  • Committer: Bazaar Package Importer
  • Author(s): Sergei Golovan
  • Date: 2009-02-15 16:42:52 UTC
  • mfrom: (3.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090215164252-q5x4rcf8a5pbesb1
Tags: 1:12.b.5-dfsg-2
Upload to unstable after lenny is released.

Show diffs side-by-side

added added

removed removed

Lines of Context:
482
482
    register(?AC, self()),
483
483
    process_flag(trap_exit, true),
484
484
    put('$ancestors', [Init]), % OTP-5811, for gen_server compatibility
485
 
    put('$initial_call', {application_controller, start, [Kernel]}),
 
485
    put('$initial_call', {application_controller, start, 1}),
486
486
 
487
487
    case catch check_conf() of
488
488
        {ok, ConfData} ->
1415
1415
        non_existing ->
1416
1416
            {error, {file:format_error(enoent), FName}};
1417
1417
        FullName ->
1418
 
            case file:consult(FullName) of
 
1418
            case prim_consult(FullName) of
1419
1419
                {ok, [Application]} ->
1420
1420
                    {ok, make_appl_i(Application)};
1421
1421
                {error, Reason} -> 
1425
1425
make_appl(Application) ->
1426
1426
    {ok, make_appl_i(Application)}.
1427
1427
 
 
1428
prim_consult(FullName) ->
 
1429
    case erl_prim_loader:get_file(FullName) of
 
1430
        {ok, Bin, _} ->
 
1431
            case erl_scan:string(binary_to_list(Bin)) of
 
1432
                {ok, Tokens, _EndLine} ->
 
1433
                    prim_parse(Tokens, []);
 
1434
                {error, Reason, _EndLine} ->
 
1435
                    {error, Reason}
 
1436
            end;
 
1437
        error ->
 
1438
            {error, enoent}
 
1439
    end.
 
1440
 
 
1441
prim_parse(Tokens, Acc) ->
 
1442
    case lists:splitwith(fun(T) -> element(1,T) =/= dot end, Tokens) of
 
1443
        {[], []} ->
 
1444
            {ok, lists:reverse(Acc)};
 
1445
        {Tokens2, [{dot,_} = Dot | Rest]} ->
 
1446
            case erl_parse:parse_term(Tokens2 ++ [Dot]) of
 
1447
                {ok, Term} ->
 
1448
                    prim_parse(Rest, [Term | Acc]);
 
1449
                {error, Reason} ->
 
1450
                    {error, Reason}
 
1451
            end;
 
1452
        {Tokens2, []} ->
 
1453
            case erl_parse:parse_term(Tokens2) of
 
1454
                {ok, Term} ->
 
1455
                    {ok, lists:reverse([Term | Acc])};
 
1456
                {error, Reason} ->
 
1457
                    {error, Reason}
 
1458
            end
 
1459
    end.
 
1460
 
1428
1461
make_appl_i({application, Name, Opts}) when is_atom(Name), is_list(Opts) ->
1429
1462
    Descr = get_opt(description, Opts, ""),
1430
1463
    Id = get_opt(id, Opts, ""),