~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/drizzled.cc

  • Committer: Monty Taylor
  • Date: 2011-02-15 00:03:19 UTC
  • mto: (2184.1.1 build)
  • mto: This revision was merged to the branch mainline in revision 2185.
  • Revision ID: mordred@inaugust.com-20110215000319-o3de5cp80o89whxx
Use fs::path instead of string searching.

Show diffs side-by-side

added added

removed removed

Lines of Context:
371
371
 
372
372
fs::path base_plugin_dir(PKGPLUGINDIR);
373
373
 
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;
651
651
 
652
652
static void find_plugin_dir(string progname)
653
653
{
654
 
  if (progname[0] != FN_LIBCHAR)
655
 
  {
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));
665
 
    else
666
 
      new_path.append(progname);
667
 
    progname.swap(new_path);
668
 
  }
669
 
 
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)
673
 
  {
674
 
    progdir.assign(progdir.substr(0, progdir.rfind(".libs/")));
675
 
  }
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));
 
655
 
 
656
  fs::path progdir(full_progname.parent_path());
 
657
  if (progdir.filename() == ".libs")
 
658
  {
 
659
    progdir= progdir.parent_path();
 
660
  }
 
661
 
 
662
  if (fs::exists(progdir / "drizzled.lo") || fs::exists(progdir / "drizzled.o"))
682
663
  {
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";
688
668
  }