summaryrefslogtreecommitdiff
path: root/src/atomic.erl
blob: 5bf5670e6303193a9de7def784e6b2fe951b2829 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
%%
%% Copyright (c) 2014 Kungliga Tekniska Högskolan
%% (KTH Royal Institute of Technology, Stockholm, Sweden).
%%

-module(atomic).
-export([replacefile/2, readfile/1]).

-spec replacefile(string(), binary()) -> ok.
replacefile(Path, Content) ->
    TempName = util:tempfilename(Path),
    util:write_tempfile_and_rename(Path, TempName, Content),
    util:fsync([Path, filename:dirname(Path)]).

-spec readfile(string()) -> binary().
readfile(Path) ->
    case file:read_file(Path) of
        {ok, Contents} ->
            Contents;
	{error, enoent} ->
            noentry;
        {error, Error} ->
            util:exit_with_error(readfile, Error, "Error reading file")
    end.