summaryrefslogtreecommitdiff
path: root/src/couchdb/couch_config.erl
diff options
context:
space:
mode:
authorFilipe David Borba Manana <fdmanana@apache.org>2011-01-08 11:58:29 +0000
committerFilipe David Borba Manana <fdmanana@apache.org>2011-01-08 11:58:29 +0000
commitd1e4c9fbea1864a1de06de6f37545482f819e7a1 (patch)
treeb15b78baf3f063373c9bfcefa456364a6fbcd949 /src/couchdb/couch_config.erl
parentf77911161907bbc6eb08beb5c8301e8eb7a907f6 (diff)
Merge revision 1056694 from trunk
Add missing case for COUCHDB-966 When not able to read one of the .ini configuration files due to file permissions, map {error, eacces} into {file_permission_error, Filepath} and throw that as an exception. git-svn-id: https://svn.apache.org/repos/asf/couchdb/branches/1.1.x@1056695 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/couchdb/couch_config.erl')
-rw-r--r--src/couchdb/couch_config.erl24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/couchdb/couch_config.erl b/src/couchdb/couch_config.erl
index 34bb97fa..792ff5a0 100644
--- a/src/couchdb/couch_config.erl
+++ b/src/couchdb/couch_config.erl
@@ -93,15 +93,19 @@ register(Fun, Pid) ->
init(IniFiles) ->
ets:new(?MODULE, [named_table, set, protected]),
- lists:map(fun(IniFile) ->
- {ok, ParsedIniValues} = parse_ini_file(IniFile),
- ets:insert(?MODULE, ParsedIniValues)
- end, IniFiles),
- WriteFile = case IniFiles of
- [_|_] -> lists:last(IniFiles);
- _ -> undefined
- end,
- {ok, #config{write_filename=WriteFile}}.
+ try
+ lists:map(fun(IniFile) ->
+ {ok, ParsedIniValues} = parse_ini_file(IniFile),
+ ets:insert(?MODULE, ParsedIniValues)
+ end, IniFiles),
+ WriteFile = case IniFiles of
+ [_|_] -> lists:last(IniFiles);
+ _ -> undefined
+ end,
+ {ok, #config{write_filename = WriteFile}}
+ catch _Tag:Error ->
+ {stop, Error}
+ end.
terminate(_Reason, _State) ->
@@ -183,6 +187,8 @@ parse_ini_file(IniFile) ->
case file:read_file(IniFilename) of
{ok, IniBin0} ->
IniBin0;
+ {error, eacces} ->
+ throw({file_permission_error, IniFile});
{error, enoent} ->
Fmt = "Couldn't find server configuration file ~s.",
Msg = ?l2b(io_lib:format(Fmt, [IniFilename])),