anchor.diff:          {ok, IniBin0} ->
               IniBin0;
           {error, enoent} ->
  -            Msg = ?l2b(io_lib:format("Couldn't find server configuration file ~s.", [IniFilename])),
  +            Fmt = "Couldn't find server configuration file ~s.",
  +            Msg = ?l2b(io_lib:format(Fmt, [IniFilename])),
               ?LOG_ERROR("~s~n", [Msg]),
               throw({startup_error, Msg})
       end,
  
positive.code: % License for the specific language governing permissions and limitations under
  % the License.
  
  %% @doc Reads CouchDB's ini file and gets queried for configuration parameters.
  %%      This module is initialized with a list of ini files that it
  %%      consecutively reads Key/Value pairs from and saves them in an ets
  %%      table. If more an one ini file is specified, the last one is used to
  %%      write changes that are made with store/2 back to that ini file.
  
  -module(couch_config).
  -include("couch_db.hrl").
  
  -behaviour(gen_server).
  -export([start_link/1, init/1, handle_call/3, handle_cast/2, handle_info/2,
          terminate/2, code_change/3]).
  -export([all/0, get/1, get/2, get/3, delete/2, set/3, set/4, register/1,
          register/2, load_ini_file/1]).
  
  -record(config,
      {notify_funs=[],
      write_filename=""
      }).
  
  %% Public API %%
  
  %% @type etstable() = integer().
  
  start_link(IniFiles) ->
      gen_server:start_link({local, ?MODULE}, ?MODULE, IniFiles, []).
  
  all() ->
      lists:sort(ets:tab2list(?MODULE)).
  
  get(Section) when is_binary(Section) ->
      ?MODULE:get(?b2l(Section));
  get(Section) ->
      Matches = ets:match(?MODULE, {{Section, '$1'}, '$2'}),
      [{Key, Value} || [Key, Value] <- Matches].
  
  
  get(Section, Key) ->
      ?MODULE:get(Section, Key, undefined).
  
negative.code:                     {AccSectionName, AccValues};
                  {ok, [ValueName|LineValues]} -> % yeehaw, got a line!
                      RemainingLine = couch_util:implode(LineValues, "="),
                      {ok, [LineValue | _Rest]} = 
  			    regexp:split(RemainingLine, " ;|\t;"), % removes comments
                      {AccSectionName, 
  		     [{{AccSectionName, ValueName}, LineValue} | AccValues]}
                  end
              end
          end, {"", []}, Lines),
      {ok, ParsedIniValues}.
  
  