From d7ff6b194ebba0b2e493904ef0a65616d6a318b4 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Tue, 5 Aug 2014 22:00:49 -0700 Subject: [PATCH] Roughly try to get the base name for output files --- src/charles.cc | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/src/charles.cc b/src/charles.cc index 22260fe..932a52f 100644 --- a/src/charles.cc +++ b/src/charles.cc @@ -6,6 +6,7 @@ */ #include +#include #include #include "basics.h" @@ -22,6 +23,19 @@ int verbosity = 0; +static std::string +GetBaseFilename(const std::string& filename) +{ + std::string bn = basename(const_cast(filename.c_str())); + size_t lastDot = bn.find_last_of('.'); + if (lastDot == std::string::npos) { + return bn; + } else { + return bn.substr(0, lastDot); + } +} + + static void usage(const char *progname) { @@ -96,22 +110,28 @@ main(int argc, } } - /* Set up logging */ - if (logLevel > 0) { - if (logFilename.empty()) { - logFilename = "charles.log"; - } - Log::Init(logFilename, logLevel); - } + std::string baseFilename; - if (optind >= argc) { - LOG_ERROR << "Input file required."; + int numInputFiles = argc - optind; + if (numInputFiles <= 0) { fprintf(stderr, "Input file required.\n"); usage(argv[0]); return -1; } - infile = argv[optind]; + if (numInputFiles == 1) { + baseFilename = GetBaseFilename(argv[optind]); + } else { + baseFilename = "charles"; + } + + /* Set up logging */ + if (logLevel > 0) { + if (logFilename.empty()) { + logFilename = baseFilename + ".log"; + } + Log::Init(logFilename, logLevel); + } if (outfile.empty()) { outfile = "charles_out.png"; @@ -120,11 +140,11 @@ main(int argc, /* Parse YAML files. */ YAMLReader reader(scene); for (int i = optind; i < argc; i++) { + infile = argv[i]; reader.read_file(infile); } /* Call tracer. */ - LOG_INFO << "Beginning render"; scene.render(); /* Write rendered scene to PNG file. */