changeset e5fbd38bc828 in /z/repo/m5 details: http://repo.m5sim.org/m5?cmd=changeset;node=e5fbd38bc828 description: Add -r/-e options to redirect stdout/stderr. Better than using shell since it automatically uses -d directory for output files (creating it as needed).
diffstat: 2 files changed, 4 insertions(+), 3 deletions(-) src/base/output.cc | 3 --- src/python/m5/main.py | 4 ++++ diffs (68 lines): diff -r 6279e78a2df2 -r e5fbd38bc828 src/base/output.cc --- a/src/base/output.cc Sun Aug 03 18:19:55 2008 -0700 +++ b/src/base/output.cc Mon Aug 04 00:40:31 2008 -0400 @@ -59,12 +59,6 @@ panic("Output directory already set!\n"); dir = d; - - if (dir != ".") { - if (mkdir(dir.c_str(), 0777) < 0 && errno != EEXIST) - panic("couldn't make output dir %s: %s\n", - dir, strerror(errno)); - } // guarantee that directory ends with a '/' if (dir[dir.size() - 1] != '/') diff -r 6279e78a2df2 -r e5fbd38bc828 src/python/m5/main.py --- a/src/python/m5/main.py Sun Aug 03 18:19:55 2008 -0700 +++ b/src/python/m5/main.py Mon Aug 04 00:40:31 2008 -0400 @@ -82,6 +82,14 @@ # Options for configuring the base simulator add_option('-d', "--outdir", metavar="DIR", default=".", help="Set the output directory to DIR [Default: %default]") +add_option('-r', "--redirect-stdout", action="store_true", default=False, + help="Redirect stdout (& stderr, without -e) to file") +add_option('-e', "--redirect-stderr", action="store_true", default=False, + help="Redirect stderr to file") +add_option("--stdout-file", metavar="FILE", default="simout", + help="Filename for -r redirection [Default: %default]") +add_option("--stderr-file", metavar="FILE", default="simerr", + help="Filename for -e redirection [Default: %default]") add_option('-i', "--interactive", action="store_true", default=False, help="Invoke the interactive interpreter after running the script") add_option("--pdb", action="store_true", default=False, @@ -137,6 +145,33 @@ execfile(options_file, scope) arguments = options.parse_args() + + if not os.path.isdir(options.outdir): + os.makedirs(options.outdir) + + # These filenames are used only if the redirect_std* options are set + stdout_file = os.path.join(options.outdir, options.stdout_file) + stderr_file = os.path.join(options.outdir, options.stderr_file) + + # Print redirection notices here before doing any redirection + if options.redirect_stdout and not options.redirect_stderr: + print "Redirecting stdout and stderr to", stdout_file + else: + if options.redirect_stdout: + print "Redirecting stdout to", stdout_file + if options.redirect_stderr: + print "Redirecting stderr to", stderr_file + + # Now redirect stdout/stderr as desired + if options.redirect_stdout: + redir_fd = os.open(stdout_file, os. O_WRONLY | os.O_CREAT | os.O_TRUNC) + os.dup2(redir_fd, sys.stdout.fileno()) + if not options.redirect_stderr: + os.dup2(redir_fd, sys.stderr.fileno()) + + if options.redirect_stderr: + redir_fd = os.open(stderr_file, os. O_WRONLY | os.O_CREAT | os.O_TRUNC) + os.dup2(redir_fd, sys.stderr.fileno()) done = False _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev