Browse Source

option_parser.cpp

passthrough-depth
Antonio SJ Musumeci 1 month ago
parent
commit
01c4e72ff4
  1. 82
      src/option_parser.cpp

82
src/option_parser.cpp

@ -87,28 +87,28 @@ static
void void
_set_fuse_threads() _set_fuse_threads()
{ {
fuse_config_set_read_thread_count(cfg_.fuse_read_thread_count);
fuse_config_set_process_thread_count(cfg_.fuse_process_thread_count);
fuse_config_set_process_thread_queue_depth(cfg_.fuse_process_thread_queue_depth);
fuse_config_set_pin_threads(cfg_.fuse_pin_threads);
fuse_config_set_read_thread_count(cfg.fuse_read_thread_count);
fuse_config_set_process_thread_count(cfg.fuse_process_thread_count);
fuse_config_set_process_thread_queue_depth(cfg.fuse_process_thread_queue_depth);
fuse_config_set_pin_threads(cfg.fuse_pin_threads);
} }
static static
void void
_set_fsname(Config &cfg_,
_set_fsname(Config &cfg,
fuse_args *args_) fuse_args *args_)
{ {
if(cfg_.fsname->empty())
if(cfg.fsname->empty())
{ {
std::vector<std::string> paths; std::vector<std::string> paths;
cfg_.branches->to_paths(paths);
cfg.branches->to_paths(paths);
if(paths.size() > 0) if(paths.size() > 0)
cfg_.fsname = str::remove_common_prefix_and_join(paths,':');
cfg.fsname = str::remove_common_prefix_and_join(paths,':');
} }
::_set_kv_option("fsname",cfg_.fsname,args_);
::_set_kv_option("fsname",cfg.fsname,args_);
} }
static static
@ -121,9 +121,9 @@ _set_subtype(fuse_args *args_)
static static
void void
_set_default_options(fuse_args *args_, _set_default_options(fuse_args *args_,
Config &cfg_)
Config &cfg)
{ {
if(cfg_.kernel_permissions_check)
if(cfg.kernel_permissions_check)
::_set_option("default_permissions",args_); ::_set_option("default_permissions",args_);
if(geteuid() == 0) if(geteuid() == 0)
@ -164,7 +164,7 @@ _should_ignore(const std::string &key_)
static static
int int
_parse_and_process_kv_arg(Config &cfg_,
_parse_and_process_kv_arg(Config &cfg,
Config::ErrVec *errs_, Config::ErrVec *errs_,
const std::string &key_, const std::string &key_,
const std::string &val_) const std::string &val_)
@ -175,7 +175,7 @@ _parse_and_process_kv_arg(Config &cfg_,
rv = 0; rv = 0;
if(key == "config") if(key == "config")
return ((cfg_.from_file(val_,errs_) < 0) ? 1 : 0);
return ((cfg.from_file(val_,errs_) < 0) ? 1 : 0);
ef(key == "attr_timeout") ef(key == "attr_timeout")
key = "cache.attr"; key = "cache.attr";
ef(key == "entry_timeout") ef(key == "entry_timeout")
@ -195,10 +195,10 @@ _parse_and_process_kv_arg(Config &cfg_,
ef(::_should_ignore(key_)) ef(::_should_ignore(key_))
return 0; return 0;
if(cfg_.has_key(key) == false)
if(cfg.has_key(key) == false)
return 1; return 1;
rv = cfg_.set_raw(key,val);
rv = cfg.set_raw(key,val);
if(rv) if(rv)
errs_->push_back({rv,key+'='+val}); errs_->push_back({rv,key+'='+val});
@ -207,7 +207,7 @@ _parse_and_process_kv_arg(Config &cfg_,
static static
int int
_process_opt(Config &cfg_,
_process_opt(Config &cfg,
Config::ErrVec *errs_, Config::ErrVec *errs_,
const std::string &arg_) const std::string &arg_)
{ {
@ -218,12 +218,12 @@ _process_opt(Config &cfg_,
key = str::trim(key); key = str::trim(key);
val = str::trim(val); val = str::trim(val);
return ::_parse_and_process_kv_arg(cfg_,errs_,key,val);
return ::_parse_and_process_kv_arg(cfg,errs_,key,val);
} }
static static
int int
_process_branches(Config &cfg_,
_process_branches(Config &cfg,
Config::ErrVec *errs_, Config::ErrVec *errs_,
const char *arg_) const char *arg_)
{ {
@ -231,7 +231,7 @@ _process_branches(Config &cfg_,
std::string arg; std::string arg;
arg = arg_; arg = arg_;
rv = cfg_.set_raw("branches",arg);
rv = cfg.set_raw("branches",arg);
if(rv) if(rv)
errs_->push_back({rv,"branches="+arg}); errs_->push_back({rv,"branches="+arg});
@ -240,7 +240,7 @@ _process_branches(Config &cfg_,
static static
int int
_process_mount(Config &cfg_,
_process_mount(Config &cfg,
Config::ErrVec *errs_, Config::ErrVec *errs_,
const char *arg_) const char *arg_)
{ {
@ -248,7 +248,7 @@ _process_mount(Config &cfg_,
std::string arg; std::string arg;
arg = arg_; arg = arg_;
rv = cfg_.set_raw("mount",arg);
rv = cfg.set_raw("mount",arg);
if(rv) if(rv)
errs_->push_back({rv,"mount="+arg}); errs_->push_back({rv,"mount="+arg});
@ -257,26 +257,26 @@ _process_mount(Config &cfg_,
static static
void void
_postprocess_passthrough(Config &cfg_)
_postprocess_passthrough(Config &cfg)
{ {
if(cfg_.passthrough == Passthrough::ENUM::OFF)
if(cfg.passthrough == Passthrough::ENUM::OFF)
return; return;
if(cfg_.cache_files == CacheFiles::ENUM::OFF)
if(cfg.cache_files == CacheFiles::ENUM::OFF)
{ {
SysLog::warning("'cache.files' can not be 'off' when using 'passthrough'." SysLog::warning("'cache.files' can not be 'off' when using 'passthrough'."
" Setting 'cache.files=full'"); " Setting 'cache.files=full'");
cfg_.cache_files = CacheFiles::ENUM::FULL;
cfg.cache_files = CacheFiles::ENUM::FULL;
} }
if(cfg_.writeback_cache == true)
if(cfg.writeback_cache == true)
{ {
SysLog::warning("'cache.writeback' can not be enabled when using 'passthrough'." SysLog::warning("'cache.writeback' can not be enabled when using 'passthrough'."
" Setting 'cache.writeback=false'"); " Setting 'cache.writeback=false'");
cfg_.writeback_cache = false;
cfg.writeback_cache = false;
} }
if(cfg_.moveonenospc.enabled == true)
if(cfg.moveonenospc.enabled == true)
{ {
SysLog::warning("`moveonenospc` will not function when `passthrough` is enabled"); SysLog::warning("`moveonenospc` will not function when `passthrough` is enabled");
} }
@ -345,15 +345,15 @@ _option_processor(void *data_,
static static
void void
_check_for_mount_loop(Config &cfg_,
_check_for_mount_loop(Config &cfg,
Config::ErrVec *errs_) Config::ErrVec *errs_)
{ {
fs::path mount; fs::path mount;
std::vector<fs::path> branches; std::vector<fs::path> branches;
std::error_code ec; std::error_code ec;
mount = *cfg_.mountpoint;
branches = cfg_.branches->to_paths();
mount = *cfg.mountpoint;
branches = cfg.branches->to_paths();
for(const auto &branch : branches) for(const auto &branch : branches)
{ {
if(std::filesystem::equivalent(branch,mount,ec)) if(std::filesystem::equivalent(branch,mount,ec))
@ -369,25 +369,25 @@ _check_for_mount_loop(Config &cfg_,
static static
void void
_print_warnings(Config &cfg_)
_print_warnings(Config &cfg)
{ {
if(cfg_.passthrough != Passthrough::ENUM::OFF)
if(cfg.passthrough != Passthrough::ENUM::OFF)
{ {
if(cfg_.cache_files == CacheFiles::ENUM::OFF)
if(cfg.cache_files == CacheFiles::ENUM::OFF)
{ {
SysLog::warning("'cache.files' can not be 'off' when using 'passthrough'." SysLog::warning("'cache.files' can not be 'off' when using 'passthrough'."
" Setting 'cache.files=auto-full'"); " Setting 'cache.files=auto-full'");
cfg_.cache_files = CacheFiles::ENUM::AUTO_FULL;
cfg.cache_files = CacheFiles::ENUM::AUTO_FULL;
} }
if(cfg_.writeback_cache == true)
if(cfg.writeback_cache == true)
{ {
SysLog::warning("'cache.writeback' can not be enabled when using 'passthrough'." SysLog::warning("'cache.writeback' can not be enabled when using 'passthrough'."
" Setting 'cache.writeback=false'"); " Setting 'cache.writeback=false'");
cfg_.writeback_cache = false;
cfg.writeback_cache = false;
} }
if(cfg_.moveonenospc.enabled == true)
if(cfg.moveonenospc.enabled == true)
{ {
SysLog::warning("`moveonenospc` will not function when `passthrough` is enabled"); SysLog::warning("`moveonenospc` will not function when `passthrough` is enabled");
} }
@ -396,10 +396,10 @@ _print_warnings(Config &cfg_)
static static
void void
_cleanup_options(Config &cfg_)
_cleanup_options(Config &cfg)
{ {
if(!cfg_.symlinkify)
cfg_.symlinkify_timeout = -1;
if(!cfg.symlinkify)
cfg.symlinkify_timeout = -1;
} }
namespace options namespace options

Loading…
Cancel
Save