diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2007-04-19 02:09:00 +0000 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2007-04-19 02:09:00 +0000 |
commit | a643256b9c79e1bed7a0a54bb3d327b87a24d205 (patch) | |
tree | b3c2fa79c7a6faf25901f7185177feb9af52675b /Carpet/CarpetIOASCII/src/ioascii.cc | |
parent | 32ef5c7c41a69026495d91e7b8a9172d780ace86 (diff) |
CarpetIOASCII: Allow IO::out_dir to be steerable
darcs-hash:20070419020938-dae7b-57c9ea9653e3c684daebc31694188aef808d0774.gz
Diffstat (limited to 'Carpet/CarpetIOASCII/src/ioascii.cc')
-rw-r--r-- | Carpet/CarpetIOASCII/src/ioascii.cc | 42 |
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)) { |