372
372
fs::path base_plugin_dir(PKGPLUGINDIR);
374
po::options_description config_options("Config File Options");
375
po::options_description long_options("Kernel Options");
376
po::options_description plugin_load_options("Plugin Loading Options");
377
po::options_description plugin_options("Plugin Options");
378
po::options_description initial_options("Config and Plugin Loading");
379
po::options_description full_options("Kernel and Plugin Loading and Plugin");
374
po::options_description config_options(_("Config File Options"));
375
po::options_description long_options(_("Kernel Options"));
376
po::options_description plugin_load_options(_("Plugin Loading Options"));
377
po::options_description plugin_options(_("Plugin Options"));
378
po::options_description initial_options(_("Config and Plugin Loading"));
379
po::options_description full_options(_("Kernel and Plugin Loading and Plugin"));
380
380
vector<string> unknown_options;
381
381
vector<string> defaults_file_list;
382
382
po::variables_map vm;
652
652
static void find_plugin_dir(string progname)
654
if (progname[0] != FN_LIBCHAR)
656
/* We have a relative path and need to find the absolute */
657
char working_dir[FN_REFLEN];
658
char *working_dir_ptr= working_dir;
659
working_dir_ptr= getcwd(working_dir_ptr, FN_REFLEN);
660
string new_path(working_dir);
661
if (*(new_path.end()-1) != '/')
662
new_path.push_back('/');
663
if (progname[0] == '.' && progname[1] == '/')
664
new_path.append(progname.substr(2));
666
new_path.append(progname);
667
progname.swap(new_path);
670
/* Now, trim off the exe name */
671
string progdir(progname.substr(0, progname.rfind(FN_LIBCHAR)+1));
672
if (progdir.rfind(".libs/") != string::npos)
674
progdir.assign(progdir.substr(0, progdir.rfind(".libs/")));
676
string testlofile(progdir);
677
testlofile.append("drizzled.lo");
678
string testofile(progdir);
679
testofile.append("drizzled.o");
680
struct stat testfile_stat;
681
if (not (stat(testlofile.c_str(), &testfile_stat) && stat(testofile.c_str(), &testfile_stat)))
654
fs::path full_progname(fs::system_complete(progname));
656
fs::path progdir(full_progname.parent_path());
657
if (progdir.filename() == ".libs")
659
progdir= progdir.parent_path();
662
if (fs::exists(progdir / "drizzled.lo") || fs::exists(progdir / "drizzled.o"))
683
664
/* We are in a source dir! Plugin dir is ../plugin/.libs */
684
size_t last_libchar_pos= progdir.rfind(FN_LIBCHAR,progdir.size()-2)+1;
685
base_plugin_dir= progdir.substr(0,last_libchar_pos);
665
base_plugin_dir= progdir.parent_path();
686
666
base_plugin_dir /= "plugin";
687
667
base_plugin_dir /= ".libs";