From 7ad9ff16900f2e1861c90d7024efe9aa1ae51642 Mon Sep 17 00:00:00 2001 From: Teemu Murtola Date: Fri, 22 Aug 2014 07:02:55 +0300 Subject: [PATCH] Move -nice handling to CommandLineModuleManager Now also the tools written using the C++ framework support the -nice command-line option. The system also behaves more consistently, as now all programs except mdrun and gmx-view default to -nice 19. Previously, there was no really consistent logic for where PCA_BE_NICE was set and where not. Remove PCA_BE_NICE as it is no longer used. parse_common_args() no longer has any options that it unconditionally adds, which completes one step in full migration to the wrapper binary. Change-Id: I35a464d3263bc20e98ad1d381e93fdc2749931a2 --- src/contrib/do_multiprot.c | 2 +- src/contrib/do_shift.c | 2 +- src/contrib/ehole.c | 2 +- src/contrib/g_anavel.c | 2 +- src/contrib/gen_table.c | 2 +- src/contrib/gmx_sdf.c | 2 +- src/gromacs/commandline/cmdlinehelpmodule.h | 4 + src/gromacs/commandline/cmdlinemodule.cpp | 93 +++++++++++++++++++ src/gromacs/commandline/cmdlinemodule.h | 58 +++++++++++- .../commandline/cmdlinemodulemanager-impl.h | 6 ++ .../commandline/cmdlinemodulemanager.cpp | 58 +++++++++--- src/gromacs/commandline/pargs.cpp | 34 ------- src/gromacs/commandline/pargs.h | 2 - .../tests/cmdlinemodulemanager.cpp | 12 +++ src/gromacs/gmxana/gmx_anaeig.c | 2 +- src/gromacs/gmxana/gmx_angle.c | 2 +- src/gromacs/gmxana/gmx_bundle.c | 2 +- src/gromacs/gmxana/gmx_chi.c | 2 +- src/gromacs/gmxana/gmx_cluster.c | 2 +- src/gromacs/gmxana/gmx_clustsize.c | 2 +- src/gromacs/gmxana/gmx_confrms.c | 2 +- src/gromacs/gmxana/gmx_covar.c | 2 +- src/gromacs/gmxana/gmx_density.c | 2 +- src/gromacs/gmxana/gmx_densmap.c | 2 +- src/gromacs/gmxana/gmx_dielectric.c | 2 +- src/gromacs/gmxana/gmx_dipoles.cpp | 2 +- src/gromacs/gmxana/gmx_disre.c | 2 +- src/gromacs/gmxana/gmx_do_dssp.c | 2 +- src/gromacs/gmxana/gmx_dos.c | 2 +- src/gromacs/gmxana/gmx_dyecoupl.c | 3 +- src/gromacs/gmxana/gmx_eneconv.c | 2 +- src/gromacs/gmxana/gmx_enemat.c | 2 +- src/gromacs/gmxana/gmx_energy.c | 2 +- src/gromacs/gmxana/gmx_filter.c | 2 +- src/gromacs/gmxana/gmx_genion.c | 2 +- src/gromacs/gmxana/gmx_gyrate.c | 2 +- src/gromacs/gmxana/gmx_h2order.c | 2 +- src/gromacs/gmxana/gmx_hbond.c | 2 +- src/gromacs/gmxana/gmx_helix.c | 2 +- src/gromacs/gmxana/gmx_helixorient.c | 2 +- src/gromacs/gmxana/gmx_hydorder.c | 2 +- src/gromacs/gmxana/gmx_lie.c | 2 +- src/gromacs/gmxana/gmx_mdmat.c | 2 +- src/gromacs/gmxana/gmx_mindist.c | 2 +- src/gromacs/gmxana/gmx_msd.c | 2 +- src/gromacs/gmxana/gmx_nmeig.c | 2 +- src/gromacs/gmxana/gmx_nmens.c | 2 +- src/gromacs/gmxana/gmx_nmtraj.c | 2 +- src/gromacs/gmxana/gmx_order.c | 2 +- src/gromacs/gmxana/gmx_polystat.c | 2 +- src/gromacs/gmxana/gmx_potential.c | 2 +- src/gromacs/gmxana/gmx_principal.c | 2 +- src/gromacs/gmxana/gmx_rama.c | 2 +- src/gromacs/gmxana/gmx_rdf.c | 2 +- src/gromacs/gmxana/gmx_rms.c | 4 +- src/gromacs/gmxana/gmx_rmsdist.c | 2 +- src/gromacs/gmxana/gmx_rmsf.c | 2 +- src/gromacs/gmxana/gmx_rotacf.c | 2 +- src/gromacs/gmxana/gmx_rotmat.c | 2 +- src/gromacs/gmxana/gmx_saltbr.c | 2 +- src/gromacs/gmxana/gmx_sans.c | 2 +- src/gromacs/gmxana/gmx_saxs.c | 2 +- src/gromacs/gmxana/gmx_sham.c | 2 +- src/gromacs/gmxana/gmx_sorient.c | 2 +- src/gromacs/gmxana/gmx_spol.c | 2 +- src/gromacs/gmxana/gmx_tcaf.c | 2 +- src/gromacs/gmxana/gmx_traj.c | 2 +- src/gromacs/gmxana/gmx_trjcat.c | 2 +- src/gromacs/gmxana/gmx_trjconv.c | 2 +- src/gromacs/gmxana/gmx_trjorder.c | 2 +- src/gromacs/gmxana/gmx_vanhove.c | 2 +- src/gromacs/gmxana/gmx_velacc.c | 2 +- src/gromacs/gmxana/gmx_wham.cpp | 2 +- src/gromacs/gmxana/gmx_wheel.c | 2 +- .../gmxpreprocess/insert-molecules.cpp | 2 +- src/gromacs/gmxpreprocess/solvate.cpp | 2 +- .../trajectoryanalysis/cmdlinerunner.cpp | 6 ++ src/programs/legacymodules.cpp | 80 +++++++++++++++- 78 files changed, 369 insertions(+), 123 deletions(-) create mode 100644 src/gromacs/commandline/cmdlinemodule.cpp diff --git a/src/contrib/do_multiprot.c b/src/contrib/do_multiprot.c index 16e7a44d46..80474afb71 100644 --- a/src/contrib/do_multiprot.c +++ b/src/contrib/do_multiprot.c @@ -223,7 +223,7 @@ int main(int argc,char *argv[]) #define NFILE asize(fnm) CopyRight(stderr,argv[0]); - parse_common_args(&argc,argv,PCA_CAN_TIME | PCA_CAN_VIEW | PCA_TIME_UNIT | PCA_BE_NICE , + parse_common_args(&argc,argv,PCA_CAN_TIME | PCA_CAN_VIEW | PCA_TIME_UNIT, NFILE,fnm, asize(pa),pa, asize(desc),desc, asize(bugs),bugs,&oenv ); diff --git a/src/contrib/do_shift.c b/src/contrib/do_shift.c index 60c21642e1..fce2869ebb 100644 --- a/src/contrib/do_shift.c +++ b/src/contrib/do_shift.c @@ -119,7 +119,7 @@ int main(int argc,char *argv[]) #define NFILE asize(fnm) CopyRight(stdout,argv[0]); - parse_common_args(&argc,argv,PCA_CAN_TIME | PCA_BE_NICE ,NFILE,fnm, + parse_common_args(&argc,argv,PCA_CAN_TIME,NFILE,fnm, asize(pa),pa,asize(desc),desc,asize(bugs),bugs); top=read_top(ftp2fn(efTPX,NFILE,fnm)); diff --git a/src/contrib/ehole.c b/src/contrib/ehole.c index 1509e83088..d5510ecb5d 100644 --- a/src/contrib/ehole.c +++ b/src/contrib/ehole.c @@ -672,7 +672,7 @@ int main(int argc,char *argv[]) int seed; CopyRight(stdout,argv[0]); - parse_common_args(&argc,argv,PCA_BE_NICE,NFILE,fnm, + parse_common_args(&argc,argv,0,NFILE,fnm, NPA,pa,asize(desc),desc,0,NULL); please_cite(stdout,"Timneanu2004a"); diff --git a/src/contrib/g_anavel.c b/src/contrib/g_anavel.c index 96da5c85bb..5646ab9a86 100644 --- a/src/contrib/g_anavel.c +++ b/src/contrib/g_anavel.c @@ -91,7 +91,7 @@ int main(int argc,char *argv[]) CopyRight(stderr,argv[0]); - parse_common_args(&argc,argv,PCA_CAN_TIME | PCA_BE_NICE ,NFILE,fnm, + parse_common_args(&argc,argv,PCA_CAN_TIME,NFILE,fnm, asize(pa),pa,asize(desc),desc,0,NULL); top = read_top(ftp2fn(efTPX,NFILE,fnm)); diff --git a/src/contrib/gen_table.c b/src/contrib/gen_table.c index 95d8f6457d..6c8f1bc7fa 100644 --- a/src/contrib/gen_table.c +++ b/src/contrib/gen_table.c @@ -759,7 +759,7 @@ int main(int argc,char *argv[]) int eel=0,m=0; CopyRight(stderr,argv[0]); - parse_common_args(&argc,argv,PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + parse_common_args(&argc,argv,PCA_CAN_VIEW | PCA_CAN_TIME, NFILE,fnm,NPA,pa,asize(desc),desc,0,NULL); if (strcmp(opt[0],"cut") == 0) diff --git a/src/contrib/gmx_sdf.c b/src/contrib/gmx_sdf.c index 9e003626bd..6950dd02d0 100644 --- a/src/contrib/gmx_sdf.c +++ b/src/contrib/gmx_sdf.c @@ -721,7 +721,7 @@ int gmx_sdf(int argc,char *argv[]) #define NFILE asize(fnm) CopyRight(stderr,argv[0]); - parse_common_args(&argc,argv,PCA_CAN_TIME | PCA_BE_NICE, + parse_common_args(&argc,argv,PCA_CAN_TIME, NFILE,fnm,NPA,pa,asize(desc),desc,0,NULL,&oenv); diff --git a/src/gromacs/commandline/cmdlinehelpmodule.h b/src/gromacs/commandline/cmdlinehelpmodule.h index fa120c732e..9fa23b9f31 100644 --- a/src/gromacs/commandline/cmdlinehelpmodule.h +++ b/src/gromacs/commandline/cmdlinehelpmodule.h @@ -128,6 +128,10 @@ class CommandLineHelpModule : public CommandLineModuleInterface return "Print help information"; } + virtual void init(CommandLineModuleSettings *settings) + { + settings->setDefaultNiceLevel(0); + } virtual int run(int argc, char *argv[]); virtual void writeHelp(const CommandLineHelpContext &context) const; diff --git a/src/gromacs/commandline/cmdlinemodule.cpp b/src/gromacs/commandline/cmdlinemodule.cpp new file mode 100644 index 0000000000..0019a324da --- /dev/null +++ b/src/gromacs/commandline/cmdlinemodule.cpp @@ -0,0 +1,93 @@ +/* + * This file is part of the GROMACS molecular simulation package. + * + * Copyright (c) 2014, by the GROMACS development team, led by + * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, + * and including many others, as listed in the AUTHORS file in the + * top-level source directory and at http://www.gromacs.org. + * + * GROMACS is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * GROMACS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with GROMACS; if not, see + * http://www.gnu.org/licenses, or write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * If you want to redistribute modifications to GROMACS, please + * consider that scientific software is very special. Version + * control is crucial - bugs must be traceable. We will be happy to + * consider code for inclusion in the official distribution, but + * derived work must not be called official GROMACS. Details are found + * in the README & COPYING files - if they are missing, get the + * official version at http://www.gromacs.org. + * + * To help us fund GROMACS development, we humbly ask that you cite + * the research papers on the package. Check out http://www.gromacs.org. + */ +/*! \internal \file + * \brief + * Implements classes from cmdlinemodule.h. + * + * \author Teemu Murtola + * \ingroup module_commandline + */ +#include "gmxpre.h" + +#include "cmdlinemodule.h" + +#include "gromacs/commandline/cmdlinehelpcontext.h" + +namespace gmx +{ + +class CommandLineModuleSettings::Impl +{ + public: + Impl() : defaultNiceLevel_(19) {} + + int defaultNiceLevel_; +}; + +CommandLineModuleSettings::CommandLineModuleSettings() + : impl_(new Impl) +{ +} + +CommandLineModuleSettings::~CommandLineModuleSettings() +{ +} + +int CommandLineModuleSettings::defaultNiceLevel() const +{ + return impl_->defaultNiceLevel_; +} + +void CommandLineModuleSettings::setDefaultNiceLevel(int niceLevel) +{ + impl_->defaultNiceLevel_ = niceLevel; +} + +//! \cond libapi +void writeCommandLineHelpCMain( + const CommandLineHelpContext &context, const char *name, + int (*mainFunction)(int argc, char *argv[])) +{ + char *argv[2]; + int argc = 1; + // TODO: The constness should not be cast away. + argv[0] = const_cast(name); + argv[1] = NULL; + GlobalCommandLineHelpContext global(context); + mainFunction(argc, argv); +} +//! \endcond + +} // namespace gmx diff --git a/src/gromacs/commandline/cmdlinemodule.h b/src/gromacs/commandline/cmdlinemodule.h index cfe908addb..2e4b1ae8c6 100644 --- a/src/gromacs/commandline/cmdlinemodule.h +++ b/src/gromacs/commandline/cmdlinemodule.h @@ -34,7 +34,7 @@ */ /*! \file * \brief - * Declares gmx::CommandLineModuleInterface. + * Declares gmx::CommandLineModuleInterface and supporting classes. * * \author Teemu Murtola * \inpublicapi @@ -43,11 +43,44 @@ #ifndef GMX_COMMANDLINE_CMDLINEMODULE_H #define GMX_COMMANDLINE_CMDLINEMODULE_H +#include "gromacs/utility/common.h" + namespace gmx { class CommandLineHelpContext; +/*! \brief + * Settings to pass information between a module and the general runner. + * + * Methods in this class do not throw, except that construction may throw + * std::bad_alloc. + * + * \inpublicapi + * \ingroup module_commandline + */ +class CommandLineModuleSettings +{ + public: + CommandLineModuleSettings(); + ~CommandLineModuleSettings(); + + //! Returns the default nice level for this module. + int defaultNiceLevel() const; + + /*! \brief + * Sets the default nice level for this module. + * + * If not called, the module will be niced. + */ + void setDefaultNiceLevel(int niceLevel); + + private: + class Impl; + + PrivateImplPointer impl_; +}; + /*! \brief * Module that can be run from command line using CommandLineModuleManager. * @@ -66,6 +99,13 @@ class CommandLineModuleInterface //! Returns a one-line description of the module. virtual const char *shortDescription() const = 0; + /*! \brief + * Initializes the module and provides settings for the runner. + * + * This will be called before run(), and can be used to adjust + * initialization that the runner does. + */ + virtual void init(CommandLineModuleSettings *settings) = 0; /*! \brief * Runs the module with the given arguments. * @@ -92,6 +132,22 @@ class CommandLineModuleInterface virtual void writeHelp(const CommandLineHelpContext &context) const = 0; }; +//! \cond libapi +/*! \libinternal \brief + * Helper to implement CommandLineModuleInterface::writeHelp() with a C-like + * main() function that calls parse_common_args(). + * + * \param[in] context Context object for writing the help. + * \param[in] name Name of the module. + * \param[in] mainFunction C-like main() function that calls parse_common_args(). + * + * \ingroup module_commandline + */ +void writeCommandLineHelpCMain( + const CommandLineHelpContext &context, const char *name, + int (*mainFunction)(int argc, char *argv[])); +//! \endcond + } // namespace gmx #endif diff --git a/src/gromacs/commandline/cmdlinemodulemanager-impl.h b/src/gromacs/commandline/cmdlinemodulemanager-impl.h index c4c23c5964..5a56b68f5c 100644 --- a/src/gromacs/commandline/cmdlinemodulemanager-impl.h +++ b/src/gromacs/commandline/cmdlinemodulemanager-impl.h @@ -154,6 +154,9 @@ class CommandLineCommonOptionsHolder */ bool finishOptions(); + //! Adjust defaults based on module settings. + void adjustFromSettings(const CommandLineModuleSettings &settings); + //! Returns the internal Options object. Options *options() { return &options_; } //! Returns the settings for printing startup information. @@ -180,6 +183,8 @@ class CommandLineCommonOptionsHolder return bQuiet_ && !bVersion_; } + //! Returns the nice level. + int niceLevel() const { return niceLevel_; } //! Returns the debug level. int debugLevel() const { return debugLevel_; } @@ -195,6 +200,7 @@ class CommandLineCommonOptionsHolder bool bQuiet_; bool bVersion_; bool bCopyright_; + int niceLevel_; int debugLevel_; GMX_DISALLOW_COPY_AND_ASSIGN(CommandLineCommonOptionsHolder); diff --git a/src/gromacs/commandline/cmdlinemodulemanager.cpp b/src/gromacs/commandline/cmdlinemodulemanager.cpp index 18e44a07f9..ac5f422d33 100644 --- a/src/gromacs/commandline/cmdlinemodulemanager.cpp +++ b/src/gromacs/commandline/cmdlinemodulemanager.cpp @@ -48,6 +48,12 @@ #include #include +#include "config.h" + +#ifdef HAVE_UNISTD_H +#include +#endif + #include "gromacs/legacyheaders/copyrite.h" #include "gromacs/commandline/cmdlinehelpcontext.h" @@ -65,9 +71,6 @@ #include "gromacs/utility/gmxassert.h" #include "gromacs/utility/stringutil.h" -// For GMX_BINARY_SUFFIX -#include "config.h" - namespace gmx { @@ -117,26 +120,22 @@ class CMainCommandLineModule : public CommandLineModuleInterface return shortDescription_; } + virtual void init(CommandLineModuleSettings * /*settings*/) + { + } virtual int run(int argc, char *argv[]) { return mainFunction_(argc, argv); } virtual void writeHelp(const CommandLineHelpContext &context) const { - char *argv[2]; - int argc = 1; - // TODO: The constness should not be cast away. - argv[0] = const_cast(name_); - argv[1] = NULL; - GlobalCommandLineHelpContext global(context); - mainFunction_(argc, argv); + writeCommandLineHelpCMain(context, name_, mainFunction_); } private: const char *name_; const char *shortDescription_; CMainFunction mainFunction_; - }; //! \} @@ -149,7 +148,8 @@ class CMainCommandLineModule : public CommandLineModuleInterface CommandLineCommonOptionsHolder::CommandLineCommonOptionsHolder() : options_(NULL, NULL), bHelp_(false), bHidden_(false), - bQuiet_(false), bVersion_(false), bCopyright_(true), debugLevel_(0) + bQuiet_(false), bVersion_(false), bCopyright_(true), + niceLevel_(19), debugLevel_(0) { binaryInfoSettings_.copyright(true); } @@ -171,6 +171,8 @@ void CommandLineCommonOptionsHolder::initOptions() .description("Print extended version information and quit")); options_.addOption(BooleanOption("copyright").store(&bCopyright_) .description("Print copyright information on startup")); + options_.addOption(IntegerOption("nice").store(&niceLevel_) + .description("Set the nicelevel (default depends on command)")); options_.addOption(IntegerOption("debug").store(&debugLevel_) .hidden().defaultValueIfSet(1) .description("Write file with debug information, " @@ -187,6 +189,15 @@ bool CommandLineCommonOptionsHolder::finishOptions() return !bVersion_; } +void CommandLineCommonOptionsHolder::adjustFromSettings( + const CommandLineModuleSettings &settings) +{ + if (!options_.isSet("nice")) + { + niceLevel_ = settings.defaultNiceLevel(); + } +} + /******************************************************************** * CommandLineModuleManager::Impl */ @@ -549,7 +560,12 @@ int CommandLineModuleManager::run(int argc, char *argv[]) { return 0; } - /* Open the debug file */ + + CommandLineModuleSettings settings; + module->init(&settings); + optionsHolder.adjustFromSettings(settings); + + // Open the debug file. if (optionsHolder.debugLevel() > 0) { std::string filename(impl_->programContext_.programName()); @@ -562,6 +578,22 @@ int CommandLineModuleManager::run(int argc, char *argv[]) fprintf(stderr, "Will write debug log file: %s\n", filename.c_str()); gmx_init_debug(optionsHolder.debugLevel(), filename.c_str()); } +#if defined(HAVE_UNISTD_H) && !defined(GMX_NO_NICE) + // Set the nice level unless disabled in the configuration. + if (optionsHolder.niceLevel() != 0) + { + static bool bNiceSet = false; // Only set it once. + if (!bNiceSet) + { + if (nice(optionsHolder.niceLevel()) == -1) + { + // Do nothing, but use the return value to avoid warnings. + } + bNiceSet = true; + } + } +#endif + int rc = 0; if (!(module == impl_->helpModule_ && !bMaster)) { diff --git a/src/gromacs/commandline/pargs.cpp b/src/gromacs/commandline/pargs.cpp index b7018901da..7b0f9ba239 100644 --- a/src/gromacs/commandline/pargs.cpp +++ b/src/gromacs/commandline/pargs.cpp @@ -47,12 +47,6 @@ #include #include -#ifdef HAVE_UNISTD_H -#include -#endif - -#include "thread_mpi/threads.h" - #include "gromacs/commandline/cmdlinehelpcontext.h" #include "gromacs/commandline/cmdlinehelpwriter.h" #include "gromacs/commandline/cmdlineparser.h" @@ -486,7 +480,6 @@ gmx_bool parse_common_args(int *argc, char *argv[], unsigned long Flags, try { - int nicelevel = 0; double tbegin = 0.0, tend = 0.0, tdelta = 0.0; bool bView = false; int xvgFormat = 0; @@ -500,11 +493,6 @@ gmx_bool parse_common_args(int *argc, char *argv[], unsigned long Flags, options.addManager(&fileOptManager); options.setDescription(gmx::constArrayRefFromArray(desc, ndesc)); - options.addOption( - gmx::IntegerOption("nice").store(&nicelevel) - .defaultValue(FF(PCA_BE_NICE) ? 19 : 0) - .description("Set the nicelevel")); - if (FF(PCA_CAN_SET_DEFFNM)) { fileOptManager.addDefaultFileNameOption(&options, "deffnm"); @@ -589,28 +577,6 @@ gmx_bool parse_common_args(int *argc, char *argv[], unsigned long Flags, (time_unit_t)(timeUnitManager.timeUnit() + 1), bView, (xvg_format_t)(xvgFormat + 1), 0); - /* Set the nice level */ -#ifdef HAVE_UNISTD_H -#ifndef GMX_NO_NICE - /* The some system, e.g. the catamount kernel on cray xt3 do not have nice(2). */ - if (nicelevel != 0) - { - static gmx_bool nice_set = FALSE; /* only set it once */ - static tMPI_Thread_mutex_t init_mutex = TMPI_THREAD_MUTEX_INITIALIZER; - tMPI_Thread_mutex_lock(&init_mutex); - if (!nice_set) - { - if (nice(nicelevel) == -1) - { - /* Do nothing, but use the return value to avoid warnings. */ - } - nice_set = TRUE; - } - tMPI_Thread_mutex_unlock(&init_mutex); - } -#endif -#endif - timeUnitManager.scaleTimeOptions(&options); /* Extract Time info from arguments */ diff --git a/src/gromacs/commandline/pargs.h b/src/gromacs/commandline/pargs.h index ee912a1399..f6a2ab680c 100644 --- a/src/gromacs/commandline/pargs.h +++ b/src/gromacs/commandline/pargs.h @@ -230,8 +230,6 @@ gmx_bool opt2parg_bSet(const char *option, int nparg, t_pargs pa[]); #define PCA_CAN_SET_DEFFNM (1<<10) /** Do not raise a fatal error when invalid options are encountered. */ #define PCA_NOEXIT_ON_ARGS (1<<11) -/** Default to low priority. */ -#define PCA_BE_NICE (1<<13) /** Is this node not reading: for parallel all nodes but the master */ #define PCA_NOT_READ_NODE (1<<16) /** Don't do any special processing for ffREAD files */ diff --git a/src/gromacs/commandline/tests/cmdlinemodulemanager.cpp b/src/gromacs/commandline/tests/cmdlinemodulemanager.cpp index eaa8ecfdd6..0d8f4fc4cc 100644 --- a/src/gromacs/commandline/tests/cmdlinemodulemanager.cpp +++ b/src/gromacs/commandline/tests/cmdlinemodulemanager.cpp @@ -83,6 +83,7 @@ class MockModule : public gmx::CommandLineModuleInterface virtual const char *name() const { return name_; } virtual const char *shortDescription() const { return descr_; } + MOCK_METHOD1(init, void(gmx::CommandLineModuleSettings *settings)); MOCK_METHOD2(run, int(int argc, char *argv[])); MOCK_CONST_METHOD1(writeHelp, void(const gmx::CommandLineHelpContext &context)); @@ -93,6 +94,11 @@ class MockModule : public gmx::CommandLineModuleInterface } private: + //! Disable nice() calls for tests. + void disableNice(gmx::CommandLineModuleSettings *settings) + { + settings->setDefaultNiceLevel(0); + } //! Checks the context passed to writeHelp(). void checkHelpContext(const gmx::CommandLineHelpContext &context) const; @@ -107,6 +113,8 @@ MockModule::MockModule(const char *name, const char *description) using ::testing::_; using ::testing::Invoke; using ::testing::WithArg; + ON_CALL(*this, init(_)) + .WillByDefault(WithArg<0>(Invoke(this, &MockModule::disableNice))); ON_CALL(*this, writeHelp(_)) .WillByDefault(WithArg<0>(Invoke(this, &MockModule::checkHelpContext))); } @@ -209,6 +217,7 @@ TEST_F(CommandLineModuleManagerTest, RunsModule) using ::testing::_; using ::testing::Args; using ::testing::ElementsAreArray; + EXPECT_CALL(mod1, init(_)); EXPECT_CALL(mod1, run(_, _)) .With(Args<1, 0>(ElementsAreArray(args.argv() + 1, args.argc() - 1))); int rc = 0; @@ -312,6 +321,7 @@ TEST_F(CommandLineModuleManagerTest, RunsModuleBasedOnBinaryName) using ::testing::_; using ::testing::Args; using ::testing::ElementsAreArray; + EXPECT_CALL(mod1, init(_)); EXPECT_CALL(mod1, run(_, _)) .With(Args<1, 0>(ElementsAreArray(args.argv(), args.argc()))); int rc = 0; @@ -331,6 +341,7 @@ TEST_F(CommandLineModuleManagerTest, RunsModuleBasedOnBinaryNameWithPathAndSuffi using ::testing::_; using ::testing::Args; using ::testing::ElementsAreArray; + EXPECT_CALL(mod1, init(_)); EXPECT_CALL(mod1, run(_, _)) .With(Args<1, 0>(ElementsAreArray(args.argv(), args.argc()))); int rc = 0; @@ -350,6 +361,7 @@ TEST_F(CommandLineModuleManagerTest, HandlesConflictingBinaryAndModuleNames) using ::testing::_; using ::testing::Args; using ::testing::ElementsAreArray; + EXPECT_CALL(mod1, init(_)); EXPECT_CALL(mod1, run(_, _)) .With(Args<1, 0>(ElementsAreArray(args.argv() + 1, args.argc() - 1))); int rc = 0; diff --git a/src/gromacs/gmxana/gmx_anaeig.c b/src/gromacs/gmxana/gmx_anaeig.c index f594138563..937d857f18 100644 --- a/src/gromacs/gmxana/gmx_anaeig.c +++ b/src/gromacs/gmxana/gmx_anaeig.c @@ -1104,7 +1104,7 @@ int gmx_anaeig(int argc, char *argv[]) #define NFILE asize(fnm) if (!parse_common_args(&argc, argv, - PCA_CAN_TIME | PCA_TIME_UNIT | PCA_CAN_VIEW | PCA_BE_NICE, + PCA_CAN_TIME | PCA_TIME_UNIT | PCA_CAN_VIEW, NFILE, fnm, NPA, pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_angle.c b/src/gromacs/gmxana/gmx_angle.c index 137d636708..83abe0aab7 100644 --- a/src/gromacs/gmxana/gmx_angle.c +++ b/src/gromacs/gmxana/gmx_angle.c @@ -181,7 +181,7 @@ int gmx_g_angle(int argc, char *argv[]) npargs = asize(pa); ppa = add_acf_pargs(&npargs, pa); - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, npargs, ppa, asize(desc), desc, asize(bugs), bugs, &oenv)) { diff --git a/src/gromacs/gmxana/gmx_bundle.c b/src/gromacs/gmxana/gmx_bundle.c index 140850583f..9cb602d93a 100644 --- a/src/gromacs/gmxana/gmx_bundle.c +++ b/src/gromacs/gmxana/gmx_bundle.c @@ -260,7 +260,7 @@ int gmx_bundle(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_TIME_UNIT | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_TIME_UNIT, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_chi.c b/src/gromacs/gmxana/gmx_chi.c index 49ed9850d5..3ee3ceabe0 100644 --- a/src/gromacs/gmxana/gmx_chi.c +++ b/src/gromacs/gmxana/gmx_chi.c @@ -1391,7 +1391,7 @@ int gmx_chi(int argc, char *argv[]) npargs = asize(pa); ppa = add_acf_pargs(&npargs, pa); - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, npargs, ppa, asize(desc), desc, asize(bugs), bugs, &oenv)) { diff --git a/src/gromacs/gmxana/gmx_cluster.c b/src/gromacs/gmxana/gmx_cluster.c index 17a480a495..1b099c411c 100644 --- a/src/gromacs/gmxana/gmx_cluster.c +++ b/src/gromacs/gmxana/gmx_cluster.c @@ -1525,7 +1525,7 @@ int gmx_cluster(int argc, char *argv[]) #define NFILE asize(fnm) if (!parse_common_args(&argc, argv, - PCA_CAN_VIEW | PCA_CAN_TIME | PCA_TIME_UNIT | PCA_BE_NICE, + PCA_CAN_VIEW | PCA_CAN_TIME | PCA_TIME_UNIT, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { diff --git a/src/gromacs/gmxana/gmx_clustsize.c b/src/gromacs/gmxana/gmx_clustsize.c index fff7aa361c..538d21a1d4 100644 --- a/src/gromacs/gmxana/gmx_clustsize.c +++ b/src/gromacs/gmxana/gmx_clustsize.c @@ -505,7 +505,7 @@ int gmx_clustsize(int argc, char *argv[]) #define NFILE asize(fnm) if (!parse_common_args(&argc, argv, - PCA_CAN_VIEW | PCA_CAN_TIME | PCA_TIME_UNIT | PCA_BE_NICE, + PCA_CAN_VIEW | PCA_CAN_TIME | PCA_TIME_UNIT, NFILE, fnm, NPA, pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_confrms.c b/src/gromacs/gmxana/gmx_confrms.c index 9c939ead5c..9d4e940778 100644 --- a/src/gromacs/gmxana/gmx_confrms.c +++ b/src/gromacs/gmxana/gmx_confrms.c @@ -554,7 +554,7 @@ int gmx_confrms(int argc, char *argv[]) real *msds; - if (!parse_common_args(&argc, argv, PCA_BE_NICE | PCA_CAN_VIEW, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_covar.c b/src/gromacs/gmxana/gmx_covar.c index 51d29e38ef..12e4fcfca5 100644 --- a/src/gromacs/gmxana/gmx_covar.c +++ b/src/gromacs/gmxana/gmx_covar.c @@ -161,7 +161,7 @@ int gmx_covar(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_TIME_UNIT | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_TIME_UNIT, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_density.c b/src/gromacs/gmxana/gmx_density.c index b50a4304c2..5ebf4b74dc 100644 --- a/src/gromacs/gmxana/gmx_density.c +++ b/src/gromacs/gmxana/gmx_density.c @@ -680,7 +680,7 @@ int gmx_density(int argc, char *argv[]) #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, asize(pa), pa, asize(desc), desc, asize(bugs), bugs, &oenv)) { diff --git a/src/gromacs/gmxana/gmx_densmap.c b/src/gromacs/gmxana/gmx_densmap.c index e4158880e9..eec8ef0053 100644 --- a/src/gromacs/gmxana/gmx_densmap.c +++ b/src/gromacs/gmxana/gmx_densmap.c @@ -161,7 +161,7 @@ int gmx_densmap(int argc, char *argv[]) npargs = asize(pa); - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW, NFILE, fnm, npargs, pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_dielectric.c b/src/gromacs/gmxana/gmx_dielectric.c index ccc35446b1..db2607a2ef 100644 --- a/src/gromacs/gmxana/gmx_dielectric.c +++ b/src/gromacs/gmxana/gmx_dielectric.c @@ -301,7 +301,7 @@ int gmx_dielectric(int argc, char *argv[]) "Number of points for smoothing" } }; - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_dipoles.cpp b/src/gromacs/gmxana/gmx_dipoles.cpp index ae7a8ac8d7..3ca706f979 100644 --- a/src/gromacs/gmxana/gmx_dipoles.cpp +++ b/src/gromacs/gmxana/gmx_dipoles.cpp @@ -1615,7 +1615,7 @@ int gmx_dipoles(int argc, char *argv[]) npargs = asize(pa); ppa = add_acf_pargs(&npargs, pa); - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW, NFILE, fnm, npargs, ppa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_disre.c b/src/gromacs/gmxana/gmx_disre.c index 904dd8e50a..5bf8dfa13f 100644 --- a/src/gromacs/gmxana/gmx_disre.c +++ b/src/gromacs/gmxana/gmx_disre.c @@ -734,7 +734,7 @@ int gmx_disre(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_do_dssp.c b/src/gromacs/gmxana/gmx_do_dssp.c index 909bcd700d..45e7a87663 100644 --- a/src/gromacs/gmxana/gmx_do_dssp.c +++ b/src/gromacs/gmxana/gmx_do_dssp.c @@ -524,7 +524,7 @@ int gmx_do_dssp(int argc, char *argv[]) #define NFILE asize(fnm) if (!parse_common_args(&argc, argv, - PCA_CAN_TIME | PCA_CAN_VIEW | PCA_TIME_UNIT | PCA_BE_NICE, + PCA_CAN_TIME | PCA_CAN_VIEW | PCA_TIME_UNIT, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_dos.c b/src/gromacs/gmxana/gmx_dos.c index 767525eaa4..99deca2849 100644 --- a/src/gromacs/gmxana/gmx_dos.c +++ b/src/gromacs/gmxana/gmx_dos.c @@ -323,7 +323,7 @@ int gmx_dos(int argc, char *argv[]) npargs = asize(pa); ppa = add_acf_pargs(&npargs, pa); - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, npargs, ppa, asize(desc), desc, asize(bugs), bugs, &oenv)) { diff --git a/src/gromacs/gmxana/gmx_dyecoupl.c b/src/gromacs/gmxana/gmx_dyecoupl.c index c495cf2e75..424c73842e 100644 --- a/src/gromacs/gmxana/gmx_dyecoupl.c +++ b/src/gromacs/gmxana/gmx_dyecoupl.c @@ -129,7 +129,8 @@ int gmx_dyecoupl(int argc, char *argv[]) rrange, krange, rincr, kincr, Rfrac; int rkcount = 0, rblocksallocated = 0, kblocksallocated = 0; - if (!parse_common_args(&argc, argv, PCA_CAN_BEGIN | PCA_CAN_END | PCA_CAN_VIEW | PCA_TIME_UNIT | PCA_BE_NICE, NFILE, fnm, NPA, pa, asize(desc), desc, 0, NULL, &oenv)) + if (!parse_common_args(&argc, argv, PCA_CAN_BEGIN | PCA_CAN_END | PCA_CAN_VIEW | PCA_TIME_UNIT, + NFILE, fnm, NPA, pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; } diff --git a/src/gromacs/gmxana/gmx_eneconv.c b/src/gromacs/gmxana/gmx_eneconv.c index 750e91ed08..9dd61c8d94 100644 --- a/src/gromacs/gmxana/gmx_eneconv.c +++ b/src/gromacs/gmxana/gmx_eneconv.c @@ -573,7 +573,7 @@ int gmx_eneconv(int argc, char *argv[]) "Stop on errors in the file" } }; - if (!parse_common_args(&argc, argv, PCA_BE_NICE, NFILE, fnm, asize(pa), + if (!parse_common_args(&argc, argv, 0, NFILE, fnm, asize(pa), pa, asize(desc), desc, asize(bugs), bugs, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_enemat.c b/src/gromacs/gmxana/gmx_enemat.c index 8426aef8d6..4633ca3fe3 100644 --- a/src/gromacs/gmxana/gmx_enemat.c +++ b/src/gromacs/gmxana/gmx_enemat.c @@ -180,7 +180,7 @@ int gmx_enemat(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_energy.c b/src/gromacs/gmxana/gmx_energy.c index 7b339fc415..c5c8447dc7 100644 --- a/src/gromacs/gmxana/gmx_energy.c +++ b/src/gromacs/gmxana/gmx_energy.c @@ -2051,7 +2051,7 @@ int gmx_energy(int argc, char *argv[]) npargs = asize(pa); ppa = add_acf_pargs(&npargs, pa); if (!parse_common_args(&argc, argv, - PCA_CAN_VIEW | PCA_CAN_BEGIN | PCA_CAN_END | PCA_BE_NICE, + PCA_CAN_VIEW | PCA_CAN_BEGIN | PCA_CAN_END, NFILE, fnm, npargs, ppa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_filter.c b/src/gromacs/gmxana/gmx_filter.c index 13955d0c67..a16c630b6d 100644 --- a/src/gromacs/gmxana/gmx_filter.c +++ b/src/gromacs/gmxana/gmx_filter.c @@ -121,7 +121,7 @@ int gmx_filter(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_genion.c b/src/gromacs/gmxana/gmx_genion.c index 00bf735f4c..494514571d 100644 --- a/src/gromacs/gmxana/gmx_genion.c +++ b/src/gromacs/gmxana/gmx_genion.c @@ -404,7 +404,7 @@ int gmx_genion(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_BE_NICE, NFILE, fnm, asize(pa), pa, + if (!parse_common_args(&argc, argv, 0, NFILE, fnm, asize(pa), pa, asize(desc), desc, asize(bugs), bugs, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_gyrate.c b/src/gromacs/gmxana/gmx_gyrate.c index d4ab33fb52..4408617022 100644 --- a/src/gromacs/gmxana/gmx_gyrate.c +++ b/src/gromacs/gmxana/gmx_gyrate.c @@ -235,7 +235,7 @@ int gmx_gyrate(int argc, char *argv[]) npargs = asize(pa); ppa = add_acf_pargs(&npargs, pa); - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW, NFILE, fnm, npargs, ppa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_h2order.c b/src/gromacs/gmxana/gmx_h2order.c index 96ab2b82f2..ca338f9015 100644 --- a/src/gromacs/gmxana/gmx_h2order.c +++ b/src/gromacs/gmxana/gmx_h2order.c @@ -313,7 +313,7 @@ int gmx_h2order(int argc, char *argv[]) #define NFILE asize(fnm) if (!parse_common_args(&argc, argv, - PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, NFILE, + PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, asize(pa), pa, asize(desc), desc, asize(bugs), bugs, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_hbond.c b/src/gromacs/gmxana/gmx_hbond.c index 4d421b1cf0..53fe4fac9a 100644 --- a/src/gromacs/gmxana/gmx_hbond.c +++ b/src/gromacs/gmxana/gmx_hbond.c @@ -3709,7 +3709,7 @@ int gmx_hbond(int argc, char *argv[]) npargs = asize(pa); ppa = add_acf_pargs(&npargs, pa); - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_TIME_UNIT | PCA_BE_NICE, NFILE, fnm, npargs, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_TIME_UNIT, NFILE, fnm, npargs, ppa, asize(desc), desc, asize(bugs), bugs, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_helix.c b/src/gromacs/gmxana/gmx_helix.c index 9b3a0dcf34..b6af91893c 100644 --- a/src/gromacs/gmxana/gmx_helix.c +++ b/src/gromacs/gmxana/gmx_helix.c @@ -166,7 +166,7 @@ int gmx_helix(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_helixorient.c b/src/gromacs/gmxana/gmx_helixorient.c index 89727f537e..c8504946ef 100644 --- a/src/gromacs/gmxana/gmx_helixorient.c +++ b/src/gromacs/gmxana/gmx_helixorient.c @@ -165,7 +165,7 @@ int gmx_helixorient(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME, NFILE, fnm, NPA, pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_hydorder.c b/src/gromacs/gmxana/gmx_hydorder.c index 8cb65d7f68..284a99bc31 100644 --- a/src/gromacs/gmxana/gmx_hydorder.c +++ b/src/gromacs/gmxana/gmx_hydorder.c @@ -643,7 +643,7 @@ int gmx_hydorder(int argc, char *argv[]) int nfspect, nfxpm, nfraw; output_env_t oenv; - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_lie.c b/src/gromacs/gmxana/gmx_lie.c index e48ff5eac6..290f3d2b84 100644 --- a/src/gromacs/gmxana/gmx_lie.c +++ b/src/gromacs/gmxana/gmx_lie.c @@ -182,7 +182,7 @@ int gmx_lie(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, NPA, pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_mdmat.c b/src/gromacs/gmxana/gmx_mdmat.c index 2f47160860..6b24575bca 100644 --- a/src/gromacs/gmxana/gmx_mdmat.c +++ b/src/gromacs/gmxana/gmx_mdmat.c @@ -227,7 +227,7 @@ int gmx_mdmat(int argc, char *argv[]) output_env_t oenv; gmx_rmpbc_t gpbc = NULL; - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_BE_NICE, NFILE, fnm, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_mindist.c b/src/gromacs/gmxana/gmx_mindist.c index 8ca072ecb8..adc023494e 100644 --- a/src/gromacs/gmxana/gmx_mindist.c +++ b/src/gromacs/gmxana/gmx_mindist.c @@ -713,7 +713,7 @@ int gmx_mindist(int argc, char *argv[]) #define NFILE asize(fnm) if (!parse_common_args(&argc, argv, - PCA_CAN_VIEW | PCA_CAN_TIME | PCA_TIME_UNIT | PCA_BE_NICE, + PCA_CAN_VIEW | PCA_CAN_TIME | PCA_TIME_UNIT, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_msd.c b/src/gromacs/gmxana/gmx_msd.c index 69421e61bc..e5fb4cd24e 100644 --- a/src/gromacs/gmxana/gmx_msd.c +++ b/src/gromacs/gmxana/gmx_msd.c @@ -1128,7 +1128,7 @@ int gmx_msd(int argc, char *argv[]) output_env_t oenv; if (!parse_common_args(&argc, argv, - PCA_CAN_VIEW | PCA_CAN_BEGIN | PCA_CAN_END | PCA_TIME_UNIT | PCA_BE_NICE, + PCA_CAN_VIEW | PCA_CAN_BEGIN | PCA_CAN_END | PCA_TIME_UNIT, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_nmeig.c b/src/gromacs/gmxana/gmx_nmeig.c index fdacf8662e..f27e781c8b 100644 --- a/src/gromacs/gmxana/gmx_nmeig.c +++ b/src/gromacs/gmxana/gmx_nmeig.c @@ -355,7 +355,7 @@ int gmx_nmeig(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_BE_NICE, + if (!parse_common_args(&argc, argv, 0, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_nmens.c b/src/gromacs/gmxana/gmx_nmens.c index 66814b62e5..949ca6c48d 100644 --- a/src/gromacs/gmxana/gmx_nmens.c +++ b/src/gromacs/gmxana/gmx_nmens.c @@ -122,7 +122,7 @@ int gmx_nmens(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_BE_NICE, + if (!parse_common_args(&argc, argv, 0, NFILE, fnm, NPA, pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_nmtraj.c b/src/gromacs/gmxana/gmx_nmtraj.c index a100bf4b04..5633baebef 100644 --- a/src/gromacs/gmxana/gmx_nmtraj.c +++ b/src/gromacs/gmxana/gmx_nmtraj.c @@ -139,7 +139,7 @@ int gmx_nmtraj(int argc, char *argv[]) #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_BE_NICE, + if (!parse_common_args(&argc, argv, 0, NFILE, fnm, NPA, pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_order.c b/src/gromacs/gmxana/gmx_order.c index b73f747f59..5decb2224f 100644 --- a/src/gromacs/gmxana/gmx_order.c +++ b/src/gromacs/gmxana/gmx_order.c @@ -979,7 +979,7 @@ int gmx_order(int argc, char *argv[]) const char *sgfnm, *skfnm, *ndxfnm, *tpsfnm, *trxfnm; output_env_t oenv; - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_polystat.c b/src/gromacs/gmxana/gmx_polystat.c index 3e0443128d..5cccbf9463 100644 --- a/src/gromacs/gmxana/gmx_polystat.c +++ b/src/gromacs/gmxana/gmx_polystat.c @@ -179,7 +179,7 @@ int gmx_polystat(int argc, char *argv[]) gmx_rmpbc_t gpbc = NULL; if (!parse_common_args(&argc, argv, - PCA_CAN_VIEW | PCA_CAN_TIME | PCA_TIME_UNIT | PCA_BE_NICE, + PCA_CAN_VIEW | PCA_CAN_TIME | PCA_TIME_UNIT, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_potential.c b/src/gromacs/gmxana/gmx_potential.c index 95a79ae2f1..989eadad95 100644 --- a/src/gromacs/gmxana/gmx_potential.c +++ b/src/gromacs/gmxana/gmx_potential.c @@ -469,7 +469,7 @@ int gmx_potential(int argc, char *argv[]) #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, asize(pa), pa, asize(desc), desc, asize(bugs), bugs, &oenv)) { diff --git a/src/gromacs/gmxana/gmx_principal.c b/src/gromacs/gmxana/gmx_principal.c index 9b8d2d4e34..b4828409b5 100644 --- a/src/gromacs/gmxana/gmx_principal.c +++ b/src/gromacs/gmxana/gmx_principal.c @@ -119,7 +119,7 @@ int gmx_principal(int argc, char *argv[]) #define NFILE asize(fnm) if (!parse_common_args(&argc, argv, - PCA_CAN_TIME | PCA_TIME_UNIT | PCA_CAN_VIEW | PCA_BE_NICE, + PCA_CAN_TIME | PCA_TIME_UNIT | PCA_CAN_VIEW, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_rama.c b/src/gromacs/gmxana/gmx_rama.c index 89efb681cb..037517f158 100644 --- a/src/gromacs/gmxana/gmx_rama.c +++ b/src/gromacs/gmxana/gmx_rama.c @@ -87,7 +87,7 @@ int gmx_rama(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, 0, NULL, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_rdf.c b/src/gromacs/gmxana/gmx_rdf.c index 62a75a1220..ca54a4def4 100644 --- a/src/gromacs/gmxana/gmx_rdf.c +++ b/src/gromacs/gmxana/gmx_rdf.c @@ -904,7 +904,7 @@ int gmx_rdf(int argc, char *argv[]) { efXVG, "-hq", "hq", ffOPTWR }, }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, NPA, pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_rms.c b/src/gromacs/gmxana/gmx_rms.c index 72f2df8ac4..468cc3f377 100644 --- a/src/gromacs/gmxana/gmx_rms.c +++ b/src/gromacs/gmxana/gmx_rms.c @@ -270,8 +270,8 @@ int gmx_rms(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_TIME_UNIT | PCA_CAN_VIEW - | PCA_BE_NICE, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_TIME_UNIT | PCA_CAN_VIEW, + NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_rmsdist.c b/src/gromacs/gmxana/gmx_rmsdist.c index b89fc27633..b7fdfca625 100644 --- a/src/gromacs/gmxana/gmx_rmsdist.c +++ b/src/gromacs/gmxana/gmx_rmsdist.c @@ -707,7 +707,7 @@ int gmx_rmsdist(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_rmsf.c b/src/gromacs/gmxana/gmx_rmsf.c index 2cf9302095..535feb5c7b 100644 --- a/src/gromacs/gmxana/gmx_rmsf.c +++ b/src/gromacs/gmxana/gmx_rmsf.c @@ -279,7 +279,7 @@ int gmx_rmsf(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW, NFILE, fnm, asize(pargs), pargs, asize(desc), desc, 0, NULL, &oenv)) { diff --git a/src/gromacs/gmxana/gmx_rotacf.c b/src/gromacs/gmxana/gmx_rotacf.c index eade0cfb54..073d131e51 100644 --- a/src/gromacs/gmxana/gmx_rotacf.c +++ b/src/gromacs/gmxana/gmx_rotacf.c @@ -115,7 +115,7 @@ int gmx_rotacf(int argc, char *argv[]) npargs = asize(pa); ppa = add_acf_pargs(&npargs, pa); - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, npargs, ppa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_rotmat.c b/src/gromacs/gmxana/gmx_rotmat.c index fee97eae34..54f012416d 100644 --- a/src/gromacs/gmxana/gmx_rotmat.c +++ b/src/gromacs/gmxana/gmx_rotmat.c @@ -240,7 +240,7 @@ int gmx_rotmat(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_saltbr.c b/src/gromacs/gmxana/gmx_saltbr.c index d6048c2fc4..440769985d 100644 --- a/src/gromacs/gmxana/gmx_saltbr.c +++ b/src/gromacs/gmxana/gmx_saltbr.c @@ -185,7 +185,7 @@ int gmx_saltbr(int argc, char *argv[]) matrix box; output_env_t oenv; - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_sans.c b/src/gromacs/gmxana/gmx_sans.c index 4adcefb7ef..6838d272a3 100644 --- a/src/gromacs/gmxana/gmx_sans.c +++ b/src/gromacs/gmxana/gmx_sans.c @@ -158,7 +158,7 @@ int gmx_sans(int argc, char *argv[]) nthreads = gmx_omp_get_max_threads(); - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_TIME_UNIT | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_TIME_UNIT, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_saxs.c b/src/gromacs/gmxana/gmx_saxs.c index 531786db03..9b23bde984 100644 --- a/src/gromacs/gmxana/gmx_saxs.c +++ b/src/gromacs/gmxana/gmx_saxs.c @@ -82,7 +82,7 @@ int gmx_saxs(int argc, char *argv[]) { efXVG, "-sq", "sq", ffWRITE }, }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME, NFILE, fnm, NPA, pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_sham.c b/src/gromacs/gmxana/gmx_sham.c index fab870832b..85837ed108 100644 --- a/src/gromacs/gmxana/gmx_sham.c +++ b/src/gromacs/gmxana/gmx_sham.c @@ -990,7 +990,7 @@ int gmx_sham(int argc, char *argv[]) int npargs; npargs = asize(pa); - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW, NFILE, fnm, npargs, pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_sorient.c b/src/gromacs/gmxana/gmx_sorient.c index 4723f9a130..5c963b771a 100644 --- a/src/gromacs/gmxana/gmx_sorient.c +++ b/src/gromacs/gmxana/gmx_sorient.c @@ -195,7 +195,7 @@ int gmx_sorient(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_spol.c b/src/gromacs/gmxana/gmx_spol.c index bc7895724a..c9b160be13 100644 --- a/src/gromacs/gmxana/gmx_spol.c +++ b/src/gromacs/gmxana/gmx_spol.c @@ -213,7 +213,7 @@ int gmx_spol(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_CAN_VIEW, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_tcaf.c b/src/gromacs/gmxana/gmx_tcaf.c index 4505de841e..9c66c0a781 100644 --- a/src/gromacs/gmxana/gmx_tcaf.c +++ b/src/gromacs/gmxana/gmx_tcaf.c @@ -340,7 +340,7 @@ int gmx_tcaf(int argc, char *argv[]) npargs = asize(pa); ppa = add_acf_pargs(&npargs, pa); - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, npargs, ppa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_traj.c b/src/gromacs/gmxana/gmx_traj.c index 779d07ff61..6b1297e122 100644 --- a/src/gromacs/gmxana/gmx_traj.c +++ b/src/gromacs/gmxana/gmx_traj.c @@ -704,7 +704,7 @@ int gmx_traj(int argc, char *argv[]) #define NFILE asize(fnm) if (!parse_common_args(&argc, argv, - PCA_CAN_TIME | PCA_TIME_UNIT | PCA_CAN_VIEW | PCA_BE_NICE, + PCA_CAN_TIME | PCA_TIME_UNIT | PCA_CAN_VIEW, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_trjcat.c b/src/gromacs/gmxana/gmx_trjcat.c index 84939f36d9..fcfce74a3e 100644 --- a/src/gromacs/gmxana/gmx_trjcat.c +++ b/src/gromacs/gmxana/gmx_trjcat.c @@ -505,7 +505,7 @@ int gmx_trjcat(int argc, char *argv[]) #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_BE_NICE | PCA_TIME_UNIT, NFILE, fnm, + if (!parse_common_args(&argc, argv, PCA_TIME_UNIT, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_trjconv.c b/src/gromacs/gmxana/gmx_trjconv.c index 5ee96528d2..a0e38488d7 100644 --- a/src/gromacs/gmxana/gmx_trjconv.c +++ b/src/gromacs/gmxana/gmx_trjconv.c @@ -926,7 +926,7 @@ int gmx_trjconv(int argc, char *argv[]) if (!parse_common_args(&argc, argv, PCA_CAN_BEGIN | PCA_CAN_END | PCA_CAN_VIEW | - PCA_TIME_UNIT | PCA_BE_NICE, + PCA_TIME_UNIT, NFILE, fnm, NPA, pa, asize(desc), desc, 0, NULL, &oenv)) { diff --git a/src/gromacs/gmxana/gmx_trjorder.c b/src/gromacs/gmxana/gmx_trjorder.c index 3d9c647c6b..0a13b11410 100644 --- a/src/gromacs/gmxana/gmx_trjorder.c +++ b/src/gromacs/gmxana/gmx_trjorder.c @@ -151,7 +151,7 @@ int gmx_trjorder(int argc, char *argv[]) }; #define NFILE asize(fnm) - if (!parse_common_args(&argc, argv, PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_TIME, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_vanhove.c b/src/gromacs/gmxana/gmx_vanhove.c index f399578dd9..bef1db6432 100644 --- a/src/gromacs/gmxana/gmx_vanhove.c +++ b/src/gromacs/gmxana/gmx_vanhove.c @@ -149,7 +149,7 @@ int gmx_vanhove(int argc, char *argv[]) FILE *fp; t_rgb rlo = {1, 1, 1}, rhi = {0, 0, 0}; - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_velacc.c b/src/gromacs/gmxana/gmx_velacc.c index fe148a17bb..0130410ab2 100644 --- a/src/gromacs/gmxana/gmx_velacc.c +++ b/src/gromacs/gmxana/gmx_velacc.c @@ -237,7 +237,7 @@ int gmx_velacc(int argc, char *argv[]) npargs = asize(pa); ppa = add_acf_pargs(&npargs, pa); - if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME | PCA_BE_NICE, + if (!parse_common_args(&argc, argv, PCA_CAN_VIEW | PCA_CAN_TIME, NFILE, fnm, npargs, ppa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_wham.cpp b/src/gromacs/gmxana/gmx_wham.cpp index 8d93fb6c41..1c8f173a0f 100644 --- a/src/gromacs/gmxana/gmx_wham.cpp +++ b/src/gromacs/gmxana/gmx_wham.cpp @@ -3381,7 +3381,7 @@ int gmx_wham(int argc, char *argv[]) opt.stepchange = 100; opt.stepUpdateContrib = 100; - if (!parse_common_args(&argc, argv, PCA_BE_NICE, + if (!parse_common_args(&argc, argv, 0, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &opt.oenv)) { return 0; diff --git a/src/gromacs/gmxana/gmx_wheel.c b/src/gromacs/gmxana/gmx_wheel.c index 3bb86d9cc8..73d9de4759 100644 --- a/src/gromacs/gmxana/gmx_wheel.c +++ b/src/gromacs/gmxana/gmx_wheel.c @@ -247,7 +247,7 @@ int gmx_wheel(int argc, char *argv[]) int i, nres; char **resnm; - if (!parse_common_args(&argc, argv, PCA_BE_NICE, NFILE, fnm, asize(pa), pa, + if (!parse_common_args(&argc, argv, 0, NFILE, fnm, asize(pa), pa, asize(desc), desc, 0, NULL, &oenv)) { return 0; diff --git a/src/gromacs/gmxpreprocess/insert-molecules.cpp b/src/gromacs/gmxpreprocess/insert-molecules.cpp index f17357e2a1..f1fd79b704 100644 --- a/src/gromacs/gmxpreprocess/insert-molecules.cpp +++ b/src/gromacs/gmxpreprocess/insert-molecules.cpp @@ -369,7 +369,7 @@ int gmx_insert_molecules(int argc, char *argv[]) "Avoid momory leaks during neighbor searching with option -ci. May be slow for large systems." }, }; - if (!parse_common_args(&argc, argv, PCA_BE_NICE, NFILE, fnm, asize(pa), pa, + if (!parse_common_args(&argc, argv, 0, NFILE, fnm, asize(pa), pa, asize(desc), desc, asize(bugs), bugs, &oenv)) { return 0; diff --git a/src/gromacs/gmxpreprocess/solvate.cpp b/src/gromacs/gmxpreprocess/solvate.cpp index b29018ea2b..46fd66c06d 100644 --- a/src/gromacs/gmxpreprocess/solvate.cpp +++ b/src/gromacs/gmxpreprocess/solvate.cpp @@ -722,7 +722,7 @@ int gmx_solvate(int argc, char *argv[]) "Keep velocities from input solute and solvent" }, }; - if (!parse_common_args(&argc, argv, PCA_BE_NICE, NFILE, fnm, asize(pa), pa, + if (!parse_common_args(&argc, argv, 0, NFILE, fnm, asize(pa), pa, asize(desc), desc, asize(bugs), bugs, &oenv)) { return 0; diff --git a/src/gromacs/trajectoryanalysis/cmdlinerunner.cpp b/src/gromacs/trajectoryanalysis/cmdlinerunner.cpp index 944945b99d..e67418744d 100644 --- a/src/gromacs/trajectoryanalysis/cmdlinerunner.cpp +++ b/src/gromacs/trajectoryanalysis/cmdlinerunner.cpp @@ -307,6 +307,7 @@ class TrajectoryAnalysisCommandLineRunner::Impl::RunnerCommandLineModule virtual const char *name() const { return name_; } virtual const char *shortDescription() const { return description_; }; + virtual void init(CommandLineModuleSettings *settings); virtual int run(int argc, char *argv[]); virtual void writeHelp(const CommandLineHelpContext &context) const; @@ -318,6 +319,11 @@ class TrajectoryAnalysisCommandLineRunner::Impl::RunnerCommandLineModule GMX_DISALLOW_COPY_AND_ASSIGN(RunnerCommandLineModule); }; +void TrajectoryAnalysisCommandLineRunner::Impl::RunnerCommandLineModule::init( + CommandLineModuleSettings * /*settings*/) +{ +} + int TrajectoryAnalysisCommandLineRunner::Impl::RunnerCommandLineModule::run( int argc, char *argv[]) { diff --git a/src/programs/legacymodules.cpp b/src/programs/legacymodules.cpp index 92e3d317af..52eaafb075 100644 --- a/src/programs/legacymodules.cpp +++ b/src/programs/legacymodules.cpp @@ -88,6 +88,9 @@ class ObsoleteToolModule : public gmx::CommandLineModuleInterface return NULL; } + virtual void init(gmx::CommandLineModuleSettings * /*settings*/) + { + } virtual int run(int /*argc*/, char * /*argv*/[]) { printMessage(); @@ -109,7 +112,58 @@ class ObsoleteToolModule : public gmx::CommandLineModuleInterface } const char *name_; +}; + +// TODO: Consider removing duplication with CMainCommandLineModule from +// cmdlinemodulemanager.cpp. +class NoNiceModule : public gmx::CommandLineModuleInterface +{ + public: + //! \copydoc gmx::CommandLineModuleManager::CMainFunction + typedef gmx::CommandLineModuleManager::CMainFunction CMainFunction; + /*! \brief + * Creates a wrapper module for the given main function. + * + * \param[in] name Name for the module. + * \param[in] shortDescription One-line description for the module. + * \param[in] mainFunction Main function to wrap. + * + * Does not throw. + */ + NoNiceModule(const char *name, const char *shortDescription, + CMainFunction mainFunction) + : name_(name), shortDescription_(shortDescription), + mainFunction_(mainFunction) + { + } + + virtual const char *name() const + { + return name_; + } + virtual const char *shortDescription() const + { + return shortDescription_; + } + + virtual void init(gmx::CommandLineModuleSettings *settings) + { + settings->setDefaultNiceLevel(0); + } + virtual int run(int argc, char *argv[]) + { + return mainFunction_(argc, argv); + } + virtual void writeHelp(const gmx::CommandLineHelpContext &context) const + { + writeCommandLineHelpCMain(context, name_, mainFunction_); + } + + private: + const char *name_; + const char *shortDescription_; + CMainFunction mainFunction_; }; /*! \brief @@ -127,6 +181,24 @@ void registerModule(gmx::CommandLineModuleManager *manager, manager->addModuleCMain(name, shortDescription, mainFunction); } +/*! \brief + * Convenience function for creating and registering a module that defaults to + * -nice 0. + * + * \param[in] manager Module manager to which to register the module. + * \param[in] mainFunction Main function to wrap. + * \param[in] name Name for the new module. + * \param[in] shortDescription One-line description for the new module. + */ +void registerModuleNoNice(gmx::CommandLineModuleManager *manager, + gmx::CommandLineModuleManager::CMainFunction mainFunction, + const char *name, const char *shortDescription) +{ + gmx::CommandLineModulePointer module( + new NoNiceModule(name, shortDescription, mainFunction)); + manager->addModule(move(module)); +} + /*! \brief * Convenience function for registering a module for an obsolete tool. * @@ -162,8 +234,8 @@ void registerLegacyModules(gmx::CommandLineModuleManager *manager) registerModule(manager, &gmx_x2top, "x2top", "Generate a primitive topology from coordinates"); - registerModule(manager, &gmx_mdrun, "mdrun", - "Perform a simulation, do a normal mode analysis or an energy minimization"); + registerModuleNoNice(manager, &gmx_mdrun, "mdrun", + "Perform a simulation, do a normal mode analysis or an energy minimization"); // Modules from gmx_ana.h. registerModule(manager, &gmx_do_dssp, "do_dssp", @@ -334,8 +406,8 @@ void registerLegacyModules(gmx::CommandLineModuleManager *manager) "Perform weighted histogram analysis after umbrella sampling"); registerModule(manager, &gmx_wheel, "wheel", "Plot helical wheels"); - registerModule(manager, &gmx_view, "view", - "View a trajectory on an X-Windows terminal"); + registerModuleNoNice(manager, &gmx_view, "view", + "View a trajectory on an X-Windows terminal"); { gmx::CommandLineModuleGroup group = -- 2.22.0