#include #include #include #define RETVAL @_retval@ int main(int ac, char **av) { cmsys::Encoding::CommandLineArguments args = cmsys::Encoding::CommandLineArguments::Main(ac, av); int argc = args.argc(); const char* const* argv = args.argv(); std::string exename = argv[0]; std::string logarg; bool nextarg = false; if (exename.find("valgrind") != exename.npos) logarg = "--log-file="; else if (exename.find("purify") != exename.npos) #ifdef _WIN32 logarg = "/SAVETEXTDATA="; #else logarg = "-log-file="; #endif else if (exename.find("BC") != exename.npos) { nextarg = true; logarg = "/X"; } if (!logarg.empty()) { std::string logfile; for (int i = 1; i < argc; i++) { std::string arg = argv[i]; if (arg.find(logarg) == 0) { if (nextarg) { if (i == argc - 1) return 1; // invalid command line logfile = argv[i + 1]; } else { logfile = arg.substr(logarg.length()); } // keep searching, it may be overridden later to provoke an error } } if (!logfile.empty()) cmSystemTools::Touch(logfile.c_str(), true); } return RETVAL; }