summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-07-23 12:59:26 +0000
committergoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-07-23 12:59:26 +0000
commit17d4b583e0f8cffc5a8c5fe7f112a8406a2b27aa (patch)
tree484320ce026a6d3e20d923aedb413dc8488d6be1 /src
parentaef5b060e4bda34e2d8723bcc072e969d82d3a25 (diff)
Mainly changes to get redirection of stdout to work.
Now the defaults for overloaded functions are setup before anything else, and the the Overloading functions count the number of times they are called and don't allow the thing to be overloaded more than twice - once for the default, and once for people actually wanting to overload it. Redirection now works - output is put into files like CCTK_Proc<x> where x is the process number. Tom git-svn-id: http://svn.cactuscode.org/flesh/trunk@773 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src')
-rw-r--r--src/include/CommandLine.h3
-rw-r--r--src/include/OverloadMacros.h8
-rw-r--r--src/main/CallStartupFunctions.c22
-rw-r--r--src/main/CommandLine.c105
-rw-r--r--src/main/InitialiseCactus.c2
-rw-r--r--src/main/ProcessCommandLine.c5
-rw-r--r--src/main/Subsystems.c35
-rw-r--r--src/main/make.code.defn6
8 files changed, 163 insertions, 23 deletions
diff --git a/src/include/CommandLine.h b/src/include/CommandLine.h
index 74ff045d..72286863 100644
--- a/src/include/CommandLine.h
+++ b/src/include/CommandLine.h
@@ -20,11 +20,12 @@ void CCTK_CommandLineDescribeParameter(const char *optarg);
void CCTK_CommandLineTestParameters(const char *optarg);
void CCTK_CommandLineWarningLevel(const char *optarg);
void CCTK_CommandLineErrorLevel(const char *optarg);
-void CCTK_CommandLineRedirectStderr(void);
+void CCTK_CommandLineRedirectStdout(void);
void CCTK_CommandLineListThorns(void);
void CCTK_CommandLineVersion(void);
void CCTK_CommandLineHelp(void);
void CCTK_CommandLineUsage(void);
+void CCTK_CommandLineFinished(void);
#ifdef __cplusplus
}
diff --git a/src/include/OverloadMacros.h b/src/include/OverloadMacros.h
index dd09bd2c..72c22583 100644
--- a/src/include/OverloadMacros.h
+++ b/src/include/OverloadMacros.h
@@ -24,16 +24,20 @@
/* This macro defines a global variable with the name of the function
* and a function which allows people to set its value.
+ *
+ * The function can only be called twice - to set the default, and to overload it.
*/
#define OVERLOADABLE_FUNCTION(name) \
RETURN_TYPE (*CCTK_##name)(ARGUMENTS) = NULL; \
int CCTK_Overload##name(RETURN_TYPE (*func)(ARGUMENTS)) \
{ \
int return_code; \
- if(! CCTK_##name) \
+ static int overloaded = 0; \
+ if(overloaded < 2) \
{ \
CCTK_##name = func; \
- return_code = 1; \
+ overloaded++; \
+ return_code = overloaded; \
} \
else \
{ \
diff --git a/src/main/CallStartupFunctions.c b/src/main/CallStartupFunctions.c
index 4de330c8..9e70e39f 100644
--- a/src/main/CallStartupFunctions.c
+++ b/src/main/CallStartupFunctions.c
@@ -34,25 +34,15 @@ int dummy(tFleshConfig *);
int CallStartupFunctions(tFleshConfig *ConfigData)
{
- CCTK_BindingsScheduleRegister("STARTUP", NULL);
- /*
- RegisterMainFunction(0, dummy);
- RegisterMainFunction(1, dummy);
- RegisterMainFunction(2, dummy);
+ CCTK_BindingsScheduleRegister("STARTUP", NULL);
- */
- SetupMainFunctions();
- SetupCommFunctions();
- SetupIOFunctions();
+ /* These used to be here to set the defaults afterwards. Now set the default before.
+ * SetupMainFunctions();
+ * SetupCommFunctions();
+ * SetupIOFunctions();
+ */
return 0;
}
-
-int dummy(tFleshConfig *foo)
-{
- printf("I'm in dummy\n");
-
- return 0;
-}
diff --git a/src/main/CommandLine.c b/src/main/CommandLine.c
index f3b27cfa..b400f5d6 100644
--- a/src/main/CommandLine.c
+++ b/src/main/CommandLine.c
@@ -12,6 +12,9 @@
#include <string.h>
#include "CommandLine.h"
+#include "flesh.h"
+#include "cGH.h"
+#include "Comm.h"
#include "WarnLevel.h"
#include "CCTK_Bindings.h"
@@ -26,6 +29,8 @@ char *compileTime(void);
char *compileDate(void);
int CCTK_GetCommandLine(char ***outargv);
+static int redirectsubs;
+
/* FIXME. This shouldn't be in this file */
int CCTK_IsThornCompiled(const char *thorn) ;
@@ -137,10 +142,28 @@ void CCTK_CommandLineErrorLevel(const char *optarg)
}
-void CCTK_CommandLineRedirectStderr(void)
+ /*@@
+ @routine CCTK_CommandLineRedirectStdout
+ @date Fri Jul 23 11:32:46 1999
+ @author Tom Goodale
+ @desc
+
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+void CCTK_CommandLineRedirectStdout(void)
{
+ /* Set the flag to say we need to redirect the stdout. */
+
+ redirectsubs = 1;
}
+
void CCTK_CommandLineListThorns(void)
{
int i;
@@ -153,6 +176,20 @@ void CCTK_CommandLineListThorns(void)
exit(1);
}
+ /*@@
+ @routine CCTK_CommandLineVersion
+ @date Fri Jul 23 12:57:45 1999
+ @author Tom Goodale
+ @desc
+ Prints version info
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
void CCTK_CommandLineVersion(void)
{
int argc;
@@ -165,6 +202,20 @@ void CCTK_CommandLineVersion(void)
exit(1);
}
+ /*@@
+ @routine CCTK_CommandLineHelp
+ @date Fri Jul 23 12:57:23 1999
+ @author Tom Goodale
+ @desc
+ Prints a help message
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
void CCTK_CommandLineHelp(void)
{
int argc;
@@ -193,6 +244,20 @@ void CCTK_CommandLineHelp(void)
exit(1);
}
+ /*@@
+ @routine CCTK_CommandLineUsage
+ @date Fri Jul 23 12:57:04 1999
+ @author Tom Goodale
+ @desc
+ Prints a usage message.
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
void CCTK_CommandLineUsage(void)
{
int argc;
@@ -204,6 +269,42 @@ void CCTK_CommandLineUsage(void)
exit(1);
}
+ /*@@
+ @routine CCTK_CommandLineFinished
+ @date Fri Jul 23 12:55:39 1999
+ @author Tom Goodale
+ @desc
+ Subroutine to do anything which has to be done based upon the
+ commandline, but needs to be have a default.
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+void CCTK_CommandLineFinished(void)
+{
+ int myproc;
+
+ /* Redirect output from sub-processors ... */
+
+ if ((myproc = CCTK_MyProc(NULL)) != 0)
+ {
+ char fname[256];
+ if (redirectsubs)
+ {
+ sprintf(fname,"CCTK_Proc%d.out",myproc);
+ }
+ else
+ {
+ sprintf(fname,"/dev/null");
+ }
+
+ freopen(fname,"w",stdout);
+ }
+}
@@ -238,3 +339,5 @@ int CCTK_IsThornCompiled(const char *thorn)
return 0;
}
+
+
diff --git a/src/main/InitialiseCactus.c b/src/main/InitialiseCactus.c
index df75f9fb..864b5c43 100644
--- a/src/main/InitialiseCactus.c
+++ b/src/main/InitialiseCactus.c
@@ -55,6 +55,8 @@ static char *rcsid = "$Header$";
int InitialiseCactus(int *argc, char ***argv, tFleshConfig *ConfigData)
{
+ InitialiseSubsystemDefaults();
+
ProcessEnvironment(argc, argv, ConfigData);
ProcessCommandLine(argc, argv, ConfigData);
diff --git a/src/main/ProcessCommandLine.c b/src/main/ProcessCommandLine.c
index 4ae2f3ad..989044d5 100644
--- a/src/main/ProcessCommandLine.c
+++ b/src/main/ProcessCommandLine.c
@@ -18,7 +18,6 @@ static int argc;
static char **argv;
-
/*@@
@routine ProcessCommandLine
@date Thu Sep 24 10:33:31 1998
@@ -79,7 +78,7 @@ int ProcessCommandLine(int *inargc, char ***inargv, tFleshConfig *ConfigData)
case 'x': CCTK_CommandLineTestParameters(optarg); break;
case 'W': CCTK_CommandLineWarningLevel(optarg); break;
case 'E': CCTK_CommandLineErrorLevel(optarg); break;
- case 'r': CCTK_CommandLineRedirectStderr(); break;
+ case 'r': CCTK_CommandLineRedirectStdout(); break;
case 'T': CCTK_CommandLineListThorns(); break;
case 'v': CCTK_CommandLineVersion(); break;
case 'h':
@@ -104,6 +103,8 @@ int ProcessCommandLine(int *inargc, char ***inargv, tFleshConfig *ConfigData)
CCTK_CommandLineUsage();
}
+ CCTK_CommandLineFinished();
+
return 0;
}
diff --git a/src/main/Subsystems.c b/src/main/Subsystems.c
new file mode 100644
index 00000000..f2ad3cc7
--- /dev/null
+++ b/src/main/Subsystems.c
@@ -0,0 +1,35 @@
+ /*@@
+ @file Subsystems.c
+ @date Fri Jul 23 14:38:25 1999
+ @author Tom Goodale
+ @desc
+ Misc stuff for the subsystems.
+ @enddesc
+ @@*/
+
+
+
+
+ /*@@
+ @routine InitialiseSubsystemDefaults
+ @date Fri Jul 23 14:39:53 1999
+ @author Tom Goodale
+ @desc
+ Sets up the defaults for the overloadable functions in the subsystems.
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+int InitialiseSubsystemDefaults(void)
+{
+ SetupMainFunctions();
+ SetupCommFunctions();
+ SetupIOFunctions();
+
+ return 0;
+}
+
diff --git a/src/main/make.code.defn b/src/main/make.code.defn
index 60c68690..8d60eed9 100644
--- a/src/main/make.code.defn
+++ b/src/main/make.code.defn
@@ -28,4 +28,8 @@ OverloadMain.c\
CommandLine.c\
GHExtensions.c\
WarnLevel.c\
-ActiveThorns.c
+ActiveThorns.c\
+Parameters.c\
+Subsystems.c
+
+