Browse Source

source mount paths can contain globing. closes #10

pull/36/head
Antonio SJ Musumeci 10 years ago
parent
commit
645c823778
  1. 34
      src/option_parser.cpp

34
src/option_parser.cpp

@ -26,14 +26,19 @@
#include <stddef.h> #include <stddef.h>
#include <string.h> #include <string.h>
#include <stdio.h>
#include <glob.h>
#include <iostream>
#include <string> #include <string>
#include <vector>
#include <sstream> #include <sstream>
#include <iostream>
#include "config.hpp" #include "config.hpp"
#include "policy.hpp" #include "policy.hpp"
using std::string;
using std::vector;
using namespace mergerfs; using namespace mergerfs;
template<typename Container> template<typename Container>
@ -89,6 +94,29 @@ process_opt(config::Config &config,
return rv; return rv;
} }
static
void
process_srcmounts(const char *arg,
config::Config &config)
{
int flags;
glob_t gbuf;
vector<string> paths;
flags = 0;
split(paths,arg,':');
for(size_t i = 0; i < paths.size(); i++)
{
glob(paths[i].c_str(),flags,NULL,&gbuf);
flags = GLOB_APPEND;
}
for(size_t i = 0; i < gbuf.gl_pathc; ++i)
config.srcmounts.push_back(gbuf.gl_pathv[i]);
globfree(&gbuf);
}
static static
int int
option_processor(void *data, option_processor(void *data,
@ -113,7 +141,7 @@ option_processor(void *data,
} }
else else
{ {
split(config.srcmounts,arg,':');
process_srcmounts(arg,config);
} }
break; break;
@ -150,7 +178,7 @@ namespace mergerfs
parse(struct fuse_args &args, parse(struct fuse_args &args,
config::Config &config) config::Config &config)
{ {
fuse_opt_parse(&args, fuse_opt_parse(&args,
&config, &config,
NULL, NULL,

Loading…
Cancel
Save