Ignore:
Timestamp:
Sep 16, 2014, 6:21:20 AM (10 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
7f6a2f
Parents:
7e1a88
git-author:
Frederik Heber <heber@…> (09/16/14 00:09:36)
git-committer:
Frederik Heber <heber@…> (09/16/14 06:21:20)
Message:

FIX: CommandLineParser causes idling thread when parsing goes wrong.

  • CommandLineParser::Parse() now returns bool to give status of parsing, only when true is scanForArguments() called, which fills the ActionQueue's queue which is not executed anymore because the run thread was already stopped by the caught exception from the parse failure.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/CommandLineUI/CommandLineParser.cpp

    r7e1a88 r06b5df  
    428428/** Parses the command line arguments.
    429429 * Calls program_options::store() and program_options::notify()
    430  */
    431 void CommandLineParser::Parse()
    432 {
     430 *
     431 * @return true - all is ok, false - command-line options could not be parsed
     432 *         correctly
     433 */
     434bool CommandLineParser::Parse()
     435{
     436  bool status = true;
    433437  try {
    434438    po::store(po::command_line_parser(argc,argv).options(cmdline_options).run(), vm);
     
    441445#endif
    442446    ActionQueue::getInstance().clearQueue();
    443   }
    444   std::ifstream input;
    445   input.open("example.cfg");
    446   if (!input.fail())
    447     po::store(po::parse_config_file(input, config_file_options), vm);
    448   input.close();
    449   po::notify(vm);
     447    status = false;
     448  }
     449  if (status) {
     450    std::ifstream input;
     451    input.open("example.cfg");
     452    if (!input.fail())
     453      po::store(po::parse_config_file(input, config_file_options), vm);
     454    input.close();
     455    po::notify(vm);
     456  }
     457  return status;
    450458}
    451459
     
    484492{
    485493  setOptions(_argc,_argv);
    486   Parse();
    487   scanforSequenceOfArguments();
     494  const bool status = Parse();
     495  if (status)
     496    scanforSequenceOfArguments();
    488497}
    489498
Note: See TracChangeset for help on using the changeset viewer.