aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetIOASCII
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2007-04-19 02:09:00 +0000
committerErik Schnetter <schnetter@cct.lsu.edu>2007-04-19 02:09:00 +0000
commita643256b9c79e1bed7a0a54bb3d327b87a24d205 (patch)
treeb3c2fa79c7a6faf25901f7185177feb9af52675b /Carpet/CarpetIOASCII
parent32ef5c7c41a69026495d91e7b8a9172d780ace86 (diff)
CarpetIOASCII: Allow IO::out_dir to be steerable
darcs-hash:20070419020938-dae7b-57c9ea9653e3c684daebc31694188aef808d0774.gz
Diffstat (limited to 'Carpet/CarpetIOASCII')
-rw-r--r--Carpet/CarpetIOASCII/src/ioascii.cc42
1 files changed, 25 insertions, 17 deletions
diff --git a/Carpet/CarpetIOASCII/src/ioascii.cc b/Carpet/CarpetIOASCII/src/ioascii.cc
index 1f16028c8..0d93762bb 100644
--- a/Carpet/CarpetIOASCII/src/ioascii.cc
+++ b/Carpet/CarpetIOASCII/src/ioascii.cc
@@ -147,24 +147,8 @@ namespace CarpetIOASCII {
const int numvars = CCTK_NumVars ();
requests.resize (numvars);
- // create the output directory
- my_out_dir = GetStringParameter("out%dD_dir");
- if (CCTK_EQUALS (my_out_dir, "")) {
- my_out_dir = out_dir;
- }
-
- int result = IOUtil_CreateDirectory (cctkGH, my_out_dir, 0, 0);
- if (result < 0) {
- CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
- "Problem creating %dD-output directory '%s'",
- outdim, my_out_dir);
- } else if (result > 0 and CCTK_Equals (verbose, "full")) {
- CCTK_VInfo (CCTK_THORNSTRING,
- "%dD-output directory '%s' already exists",
- outdim, my_out_dir);
- }
-
// initial I/O parameter check
+ my_out_dir = 0;
my_out_vars = strdup ("");
stop_on_parse_errors = strict_io_parameter_check != 0;
CheckSteerableParameters (cctkGH);
@@ -184,6 +168,30 @@ namespace CarpetIOASCII {
{
DECLARE_CCTK_PARAMETERS;
+ // re-parse the 'IOASCII::out%dD_dir' parameter if it has changed
+ const char* the_out_dir = GetStringParameter("out%dD_dir");
+ if (CCTK_EQUALS (the_out_dir, "")) {
+ the_out_dir = out_dir;
+ }
+
+ if (not my_out_dir or strcmp (the_out_dir, my_out_dir)) {
+ free (const_cast<char*>(my_out_dir));
+ my_out_dir = strdup (the_out_dir);
+
+ // create the output directory
+ int result = IOUtil_CreateDirectory (cctkGH, my_out_dir, 0, 0);
+ if (result < 0) {
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Problem creating %dD-output directory '%s'",
+ outdim, my_out_dir);
+ } else if (result > 0 and CCTK_Equals (verbose, "full")) {
+ CCTK_VInfo (CCTK_THORNSTRING,
+ "%dD-output directory '%s' already exists",
+ outdim, my_out_dir);
+ }
+ }
+
+
// re-parse the 'IOASCII::out%d_vars' parameter if it has changed
const char* const out_vars = GetStringParameter("out%dD_vars");
if (strcmp (out_vars, my_out_vars)) {