16 #if defined(WIN32) && !defined(__CYGWIN__)
19 #define GETCWD _getcwd
21 #define PATHSEPSTR "\\"
27 #define PATHSEPSTR "/"
36 #ifdef MEM_OPT_VERSION
39 char *gWorkDir = NULL;
42 int main(
int argc,
char **argv) {
44 if ( argc > 2 && ! strcmp(argv[1],
"+tclsh") ) {
62 for(argc = 0; argv[argc]; ++argc);
64 #if defined(WIN32) && !defined(__CYGWIN__)
65 CkPrintf(
"\nFATAL ERROR: No simulation config file specified on command line.\n");
66 CkPrintf(
"\nNOTE: NAMD has no graphical interface and must be run from a command line.\n");
68 CkPrintf(
"\nSleeping %d seconds before exiting...\n", nsleep);
73 NAMD_die(
"No simulation config file specified on command line.");
78 for(
int i = 1; i < argc; ++i) {
79 if ( strstr(argv[i],
"--") == argv[i] ) {
81 if ( i + 1 == argc ) {
82 sprintf(buf,
"missing argument for command line option %s", argv[i]);
85 if ( ! strcmp(argv[i],
"--tclmain") ) {
87 iout <<
iINFO <<
"Command-line argument is";
88 for (
int j=i; j<argc; ++j ) {
iout <<
" " << argv[j]; }
90 script->
tclmain(argc-i-1,argv+i+1);
94 sprintf(buf,
"%s %s", argv[i]+2, argv[i+1]);
95 iout <<
iINFO <<
"Command-line argument is --" << buf <<
"\n" <<
endi;
100 char *confFile = argv[i];
102 char *confFile = argv[argc-1];
104 iout <<
iINFO <<
"Configuration file is " << confFile <<
"\n" <<
endi;
106 char *currentdir=confFile;
109 for(tmp=confFile;*tmp;++tmp);
110 for( ; tmp != confFile && *tmp !=
PATHSEP; --tmp);
111 #if defined(WIN32) && !defined(__CYGWIN__)
112 if (tmp == confFile) {
114 for(tmp=confFile;*tmp;++tmp);
115 for( ; tmp != confFile && *tmp !=
'/'; --tmp);
119 if ( tmp != confFile )
121 *tmp = 0; confFile = tmp + 1;
124 if (stat(confFile, &statBuf)) {
126 sprintf(buf,
"Unable to access config file %s%c%s",currentdir,
PATHSEP,confFile);
129 iout <<
iINFO <<
"Changed directory to " << currentdir <<
"\n" <<
endi;
131 if ( ! currentdir )
NAMD_err(
"getcwd after chdir");
137 if (stat(confFile, &statBuf)) {
139 sprintf(buf,
"Unable to access config file %s",confFile);
144 if (stat(confFile, &statBuf)) {
146 if ( confFile[0] ==
'-' || confFile[0] ==
'+' ) {
147 sprintf(buf,
"Unknown command-line option %s",confFile);
149 sprintf(buf,
"Unable to access config file %s",confFile);
156 currentdir = tmpcurdir;
157 iout <<
iINFO <<
"Working in the current directory " << origcwd <<
"\n" <<
endi;
161 #ifdef MEM_OPT_VERSION
162 int dirlen = strlen(currentdir);
163 gWorkDir =
new char[dirlen+1];
165 memcpy(gWorkDir, currentdir, dirlen);
171 script->
load(confFile);
173 script->
run(confFile);
std::ostream & iINFO(std::ostream &s)
void after_backend_init(int argc, char **argv)
void NAMD_err(const char *err_msg)
void load(char *scriptFile)
static void exit(int status=0)
std::ostream & endi(std::ostream &s)
static void init(int argc, char **argv)
void setScript(ScriptTcl *s)
void NAMD_die(const char *err_msg)
void tclmain(int, char **)
int main(int argc, char *argv[])
static int tclsh(int, char **)