config/Param: add method GetPath()
Move code from config_parse_path().
This commit is contained in:
parent
5b2b4bf13c
commit
7a3415166e
@ -68,7 +68,7 @@ listen_add_config_param(unsigned int port,
|
|||||||
if (0 == strcmp(param->value.c_str(), "any")) {
|
if (0 == strcmp(param->value.c_str(), "any")) {
|
||||||
return listen_socket->AddPort(port, error_r);
|
return listen_socket->AddPort(port, error_r);
|
||||||
} else if (param->value[0] == '/' || param->value[0] == '~') {
|
} else if (param->value[0] == '/' || param->value[0] == '~') {
|
||||||
auto path = config_parse_path(param, error_r);
|
auto path = param->GetPath(error_r);
|
||||||
return !path.IsNull() &&
|
return !path.IsNull() &&
|
||||||
listen_socket->AddPath(std::move(path), error_r);
|
listen_socket->AddPath(std::move(path), error_r);
|
||||||
} else {
|
} else {
|
||||||
|
@ -128,18 +128,7 @@ config_get_path(ConfigOption option, Error &error)
|
|||||||
if (param == nullptr)
|
if (param == nullptr)
|
||||||
return AllocatedPath::Null();
|
return AllocatedPath::Null();
|
||||||
|
|
||||||
return config_parse_path(param, error);
|
return param->GetPath(error);
|
||||||
}
|
|
||||||
|
|
||||||
AllocatedPath
|
|
||||||
config_parse_path(const ConfigParam *param, Error & error)
|
|
||||||
{
|
|
||||||
AllocatedPath path = ParsePath(param->value.c_str(), error);
|
|
||||||
if (gcc_unlikely(path.IsNull()))
|
|
||||||
error.FormatPrefix("Invalid path at line %i: ",
|
|
||||||
param->line);
|
|
||||||
|
|
||||||
return path;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned
|
unsigned
|
||||||
|
@ -84,14 +84,6 @@ config_get_string(enum ConfigOption option, const char *default_value=nullptr);
|
|||||||
AllocatedPath
|
AllocatedPath
|
||||||
config_get_path(enum ConfigOption option, Error &error);
|
config_get_path(enum ConfigOption option, Error &error);
|
||||||
|
|
||||||
/**
|
|
||||||
* Parse a configuration parameter as a path.
|
|
||||||
* If there is a tilde prefix, it is expanded. If the path could
|
|
||||||
* not be parsed, returns AllocatedPath::Null() and sets the error.
|
|
||||||
*/
|
|
||||||
AllocatedPath
|
|
||||||
config_parse_path(const ConfigParam *param, Error & error_r);
|
|
||||||
|
|
||||||
gcc_pure
|
gcc_pure
|
||||||
unsigned
|
unsigned
|
||||||
config_get_unsigned(enum ConfigOption option, unsigned default_value);
|
config_get_unsigned(enum ConfigOption option, unsigned default_value);
|
||||||
|
@ -19,6 +19,9 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "Param.hxx"
|
#include "Param.hxx"
|
||||||
|
#include "ConfigPath.hxx"
|
||||||
|
#include "fs/AllocatedPath.hxx"
|
||||||
|
#include "util/Error.hxx"
|
||||||
|
|
||||||
ConfigParam::ConfigParam(const char *_value, int _line)
|
ConfigParam::ConfigParam(const char *_value, int _line)
|
||||||
:next(nullptr), value(_value), line(_line), used(false) {}
|
:next(nullptr), value(_value), line(_line), used(false) {}
|
||||||
@ -27,3 +30,14 @@ ConfigParam::~ConfigParam()
|
|||||||
{
|
{
|
||||||
delete next;
|
delete next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AllocatedPath
|
||||||
|
ConfigParam::GetPath(Error &error) const
|
||||||
|
{
|
||||||
|
auto path = ParsePath(value.c_str(), error);
|
||||||
|
if (gcc_unlikely(path.IsNull()))
|
||||||
|
error.FormatPrefix("Invalid path at line %i: ", line);
|
||||||
|
|
||||||
|
return path;
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -25,6 +25,9 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
class Error;
|
||||||
|
class AllocatedPath;
|
||||||
|
|
||||||
struct ConfigParam {
|
struct ConfigParam {
|
||||||
/**
|
/**
|
||||||
* The next ConfigParam with the same name. The destructor
|
* The next ConfigParam with the same name. The destructor
|
||||||
@ -62,6 +65,13 @@ struct ConfigParam {
|
|||||||
bool IsNull() const {
|
bool IsNull() const {
|
||||||
return line < 0;
|
return line < 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse the value as a path. If there is a tilde prefix, it
|
||||||
|
* is expanded. If the path could not be parsed, returns
|
||||||
|
* AllocatedPath::Null() and sets the error.
|
||||||
|
*/
|
||||||
|
AllocatedPath GetPath(Error &error) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user