diff options
author | Brad King <brad.king@kitware.com> | 2014-01-22 13:47:57 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2014-01-22 13:47:57 (GMT) |
commit | d8d3e9241e73825596c3a0c52823b73cca29011d (patch) | |
tree | dff4c6b94ef0ecefa3d5fb41029ff70e4155218a /Source | |
parent | 1021ad80f9faa41eb6755287904f5ef692deaf02 (diff) | |
parent | 94389f6388367aa4d9bfa58c9cde89e33d1858dc (diff) | |
download | CMake-d8d3e9241e73825596c3a0c52823b73cca29011d.zip CMake-d8d3e9241e73825596c3a0c52823b73cca29011d.tar.gz CMake-d8d3e9241e73825596c3a0c52823b73cca29011d.tar.bz2 |
Merge topic 'cmake-E-sleep'
94389f63 cmake: Add '-E sleep' command
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmcmd.cxx | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index c1576c4..4ac1986 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -71,6 +71,7 @@ void CMakeCommandUsage(const char* program) "(on one volume)\n" << " tar [cxt][vfz][cvfj] file.tar [file/dir1 file/dir2 ...]\n" << " - create or extract a tar or zip archive\n" + << " sleep <number>... - sleep for given number of seconds\n" << " time command [args] ... - run command and return elapsed time\n" << " touch file - touch a file.\n" << " touch_nocreate file - touch a file but do not create it.\n" @@ -279,6 +280,33 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args) return 0; } + // Sleep command + else if (args[1] == "sleep" && args.size() > 2) + { + double total = 0; + for(size_t i = 2; i < args.size(); ++i) + { + double num = 0.0; + char unit; + char extra; + int n = sscanf(args[i].c_str(), "%lg%c%c", &num, &unit, &extra); + if((n == 1 || (n == 2 && unit == 's')) && num >= 0) + { + total += num; + } + else + { + std::cerr << "Unknown sleep time format \"" << args[i] << "\".\n"; + return 1; + } + } + if(total > 0) + { + cmSystemTools::Delay(static_cast<unsigned int>(total*1000)); + } + return 0; + } + // Clock command else if (args[1] == "time" && args.size() > 2) { |