diff options
Diffstat (limited to 'lib/kernel/src/file_server.erl')
| -rw-r--r-- | lib/kernel/src/file_server.erl | 137 | 
1 files changed, 63 insertions, 74 deletions
| diff --git a/lib/kernel/src/file_server.erl b/lib/kernel/src/file_server.erl index 6e8f64d932..ecc1ffbdd6 100644 --- a/lib/kernel/src/file_server.erl +++ b/lib/kernel/src/file_server.erl @@ -63,7 +63,7 @@ stop() ->  %%% Callback functions from gen_server  %%%---------------------------------------------------------------------- --type state() :: port().	% Internal type +-type state() :: term().	% Internal type  %%----------------------------------------------------------------------  %% Func: init/1 @@ -77,14 +77,8 @@ stop() ->  init([]) ->      process_flag(trap_exit, true), -    case ?PRIM_FILE:start() of -	{ok, Handle} -> -	    ?FILE_IO_SERVER_TABLE = -                ets:new(?FILE_IO_SERVER_TABLE, [named_table]), -	    {ok, Handle}; -	{error, Reason} -> -	    {stop, Reason} -    end. +    ?FILE_IO_SERVER_TABLE =  ets:new(?FILE_IO_SERVER_TABLE, [named_table]), +    {ok, undefined}.  %%----------------------------------------------------------------------  %% Func: handle_call/3 @@ -101,7 +95,7 @@ init([]) ->  	{'reply', 'eof' | 'ok' | {'error', term()} | {'ok', term()}, state()} |  	{'stop', 'normal', 'stopped', state()}. -handle_call({open, Name, ModeList}, {Pid, _Tag} = _From, Handle) +handle_call({open, Name, ModeList}, {Pid, _Tag} = _From, State)    when is_list(ModeList) ->      Child = ?FILE_IO_SERVER:start_link(Pid, Name, ModeList),      case Child of @@ -110,78 +104,78 @@ handle_call({open, Name, ModeList}, {Pid, _Tag} = _From, Handle)  	_ ->  	    ok      end, -    {reply, Child, Handle}; +    {reply, Child, State}; -handle_call({open, _Name, _Mode}, _From, Handle) -> -    {reply, {error, einval}, Handle}; +handle_call({open, _Name, _Mode}, _From, State) -> +    {reply, {error, einval}, State}; -handle_call({read_file, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:read_file(Name), Handle}; +handle_call({read_file, Name}, _From, State) -> +    {reply, ?PRIM_FILE:read_file(Name), State}; -handle_call({write_file, Name, Bin}, _From, Handle) -> -    {reply, ?PRIM_FILE:write_file(Name, Bin), Handle}; +handle_call({write_file, Name, Bin}, _From, State) -> +    {reply, ?PRIM_FILE:write_file(Name, Bin), State}; -handle_call({set_cwd, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:set_cwd(Handle, Name), Handle}; +handle_call({set_cwd, Name}, _From, State) -> +    {reply, ?PRIM_FILE:set_cwd(Name), State}; -handle_call({delete, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:delete(Handle, Name), Handle}; +handle_call({delete, Name}, _From, State) -> +    {reply, ?PRIM_FILE:delete(Name), State}; -handle_call({rename, Fr, To}, _From, Handle) -> -    {reply, ?PRIM_FILE:rename(Handle, Fr, To), Handle}; +handle_call({rename, Fr, To}, _From, State) -> +    {reply, ?PRIM_FILE:rename(Fr, To), State}; -handle_call({make_dir, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:make_dir(Handle, Name), Handle}; +handle_call({make_dir, Name}, _From, State) -> +    {reply, ?PRIM_FILE:make_dir(Name), State}; -handle_call({del_dir, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:del_dir(Handle, Name), Handle}; +handle_call({del_dir, Name}, _From, State) -> +    {reply, ?PRIM_FILE:del_dir(Name), State}; -handle_call({list_dir, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:list_dir(Handle, Name), Handle}; -handle_call({list_dir_all, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:list_dir_all(Handle, Name), Handle}; +handle_call({list_dir, Name}, _From, State) -> +    {reply, ?PRIM_FILE:list_dir(Name), State}; +handle_call({list_dir_all, Name}, _From, State) -> +    {reply, ?PRIM_FILE:list_dir_all(Name), State}; -handle_call(get_cwd, _From, Handle) -> -    {reply, ?PRIM_FILE:get_cwd(Handle), Handle}; -handle_call({get_cwd}, _From, Handle) -> -    {reply, ?PRIM_FILE:get_cwd(Handle), Handle}; -handle_call({get_cwd, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:get_cwd(Handle, Name), Handle}; +handle_call(get_cwd, _From, State) -> +    {reply, ?PRIM_FILE:get_cwd(), State}; +handle_call({get_cwd}, _From, State) -> +    {reply, ?PRIM_FILE:get_cwd(), State}; +handle_call({get_cwd, Name}, _From, State) -> +    {reply, ?PRIM_FILE:get_cwd(Name), State}; -handle_call({read_file_info, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:read_file_info(Handle, Name), Handle}; +handle_call({read_file_info, Name}, _From, State) -> +    {reply, ?PRIM_FILE:read_file_info(Name), State}; -handle_call({read_file_info, Name, Opts}, _From, Handle) -> -    {reply, ?PRIM_FILE:read_file_info(Handle, Name, Opts), Handle}; +handle_call({read_file_info, Name, Opts}, _From, State) -> +    {reply, ?PRIM_FILE:read_file_info(Name, Opts), State}; -handle_call({altname, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:altname(Handle, Name), Handle}; +handle_call({altname, Name}, _From, State) -> +    {reply, ?PRIM_FILE:altname(Name), State}; -handle_call({write_file_info, Name, Info}, _From, Handle) -> -    {reply, ?PRIM_FILE:write_file_info(Handle, Name, Info), Handle}; +handle_call({write_file_info, Name, Info}, _From, State) -> +    {reply, ?PRIM_FILE:write_file_info(Name, Info), State}; -handle_call({write_file_info, Name, Info, Opts}, _From, Handle) -> -    {reply, ?PRIM_FILE:write_file_info(Handle, Name, Info, Opts), Handle}; +handle_call({write_file_info, Name, Info, Opts}, _From, State) -> +    {reply, ?PRIM_FILE:write_file_info(Name, Info, Opts), State}; -handle_call({read_link_info, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:read_link_info(Handle, Name), Handle}; +handle_call({read_link_info, Name}, _From, State) -> +    {reply, ?PRIM_FILE:read_link_info(Name), State}; -handle_call({read_link_info, Name, Opts}, _From, Handle) -> -    {reply, ?PRIM_FILE:read_link_info(Handle, Name, Opts), Handle}; +handle_call({read_link_info, Name, Opts}, _From, State) -> +    {reply, ?PRIM_FILE:read_link_info(Name, Opts), State}; -handle_call({read_link, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:read_link(Handle, Name), Handle}; -handle_call({read_link_all, Name}, _From, Handle) -> -    {reply, ?PRIM_FILE:read_link_all(Handle, Name), Handle}; +handle_call({read_link, Name}, _From, State) -> +    {reply, ?PRIM_FILE:read_link(Name), State}; +handle_call({read_link_all, Name}, _From, State) -> +    {reply, ?PRIM_FILE:read_link_all(Name), State}; -handle_call({make_link, Old, New}, _From, Handle) -> -    {reply, ?PRIM_FILE:make_link(Handle, Old, New), Handle}; +handle_call({make_link, Old, New}, _From, State) -> +    {reply, ?PRIM_FILE:make_link(Old, New), State}; -handle_call({make_symlink, Old, New}, _From, Handle) -> -    {reply, ?PRIM_FILE:make_symlink(Handle, Old, New), Handle}; +handle_call({make_symlink, Old, New}, _From, State) -> +    {reply, ?PRIM_FILE:make_symlink(Old, New), State};  handle_call({copy, SourceName, SourceOpts, DestName, DestOpts, Length}, -	    _From, Handle) -> +	    _From, State) ->      Reply =   	case ?PRIM_FILE:open(SourceName, [read, binary | SourceOpts]) of  	    {ok, Source} -> @@ -201,14 +195,14 @@ handle_call({copy, SourceName, SourceOpts, DestName, DestOpts, Length},  	    {error, _} = Error ->  		Error  	end, -    {reply, Reply, Handle}; +    {reply, Reply, State}; -handle_call(stop, _From, Handle) -> -    {stop, normal, stopped, Handle}; +handle_call(stop, _From, State) -> +    {stop, normal, stopped, State}; -handle_call(Request, From, Handle) -> +handle_call(Request, From, State) ->      error_logger:error_msg("handle_call(~tp, ~tp, _)", [Request, From]), -    {noreply, Handle}. +    {noreply, State}.  %%----------------------------------------------------------------------  %% Func: handle_cast/2 @@ -233,14 +227,9 @@ handle_cast(Msg, State) ->  -spec handle_info(term(), state()) ->          {'noreply', state()} | {'stop', 'normal', state()}. -handle_info({'EXIT', Pid, _Reason}, Handle) when is_pid(Pid) -> +handle_info({'EXIT', Pid, _Reason}, State) when is_pid(Pid) ->      ets:delete(?FILE_IO_SERVER_TABLE, Pid), -    {noreply, Handle}; - -handle_info({'EXIT', Handle, _Reason}, Handle) -> -    error_logger:error_msg("Port controlling ~w terminated in ~w", -			   [?FILE_SERVER, ?MODULE]), -    {stop, normal, Handle}; +    {noreply, State};  handle_info(Info, State) ->      error_logger:error_msg("handle_Info(~tp, _)", [Info]), @@ -254,8 +243,8 @@ handle_info(Info, State) ->  -spec terminate(term(), state()) -> 'ok'. -terminate(_Reason, Handle) -> -    ?PRIM_FILE:stop(Handle). +terminate(_Reason, _State) -> +    ok.  %%----------------------------------------------------------------------  %% Func: code_change/3 | 
