config/ConfigFile: use std::unique_ptr
This commit is contained in:
@@ -32,6 +32,8 @@
|
|||||||
#include "fs/io/BufferedReader.hxx"
|
#include "fs/io/BufferedReader.hxx"
|
||||||
#include "Log.hxx"
|
#include "Log.hxx"
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
static constexpr char CONF_COMMENT = '#';
|
static constexpr char CONF_COMMENT = '#';
|
||||||
@@ -81,13 +83,11 @@ config_read_name_value(ConfigBlock &block, char *input, unsigned line,
|
|||||||
static ConfigBlock *
|
static ConfigBlock *
|
||||||
config_read_block(BufferedReader &reader, Error &error)
|
config_read_block(BufferedReader &reader, Error &error)
|
||||||
{
|
{
|
||||||
auto *ret = new ConfigBlock(reader.GetLineNumber());
|
std::unique_ptr<ConfigBlock> block(new ConfigBlock(reader.GetLineNumber()));
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
char *line = reader.ReadLine();
|
char *line = reader.ReadLine();
|
||||||
if (line == nullptr) {
|
if (line == nullptr) {
|
||||||
delete ret;
|
|
||||||
|
|
||||||
if (reader.Check(error))
|
if (reader.Check(error))
|
||||||
error.Set(config_file_domain,
|
error.Set(config_file_domain,
|
||||||
"Expected '}' before end-of-file");
|
"Expected '}' before end-of-file");
|
||||||
@@ -104,22 +104,21 @@ config_read_block(BufferedReader &reader, Error &error)
|
|||||||
|
|
||||||
line = StripLeft(line + 1);
|
line = StripLeft(line + 1);
|
||||||
if (*line != 0 && *line != CONF_COMMENT) {
|
if (*line != 0 && *line != CONF_COMMENT) {
|
||||||
delete ret;
|
|
||||||
error.Format(config_file_domain,
|
error.Format(config_file_domain,
|
||||||
"line %u: Unknown tokens after '}'",
|
"line %u: Unknown tokens after '}'",
|
||||||
reader.GetLineNumber());
|
reader.GetLineNumber());
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return block.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* parse name and value */
|
/* parse name and value */
|
||||||
|
|
||||||
if (!config_read_name_value(*ret, line, reader.GetLineNumber(),
|
if (!config_read_name_value(*block, line,
|
||||||
|
reader.GetLineNumber(),
|
||||||
error)) {
|
error)) {
|
||||||
assert(*line != 0);
|
assert(*line != 0);
|
||||||
delete ret;
|
|
||||||
error.FormatPrefix("line %u: ", reader.GetLineNumber());
|
error.FormatPrefix("line %u: ", reader.GetLineNumber());
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user