CMake: Stylistic changes and documentation tweaks
...for the contributed file and string TIMESTAMP sub-commands.
This commit is contained in:
parent
711e2b3b5c
commit
d842d90622
|
@ -87,8 +87,7 @@ public:
|
|||
" [TLS_VERIFY on|off] [TLS_CAINFO file])\n"
|
||||
" file(UPLOAD filename url [INACTIVITY_TIMEOUT timeout]\n"
|
||||
" [TIMEOUT timeout] [STATUS status] [LOG log] [SHOW_PROGRESS])\n"
|
||||
" file(TIMESTAMP <filename> <output variable>"
|
||||
" [<format string>] [UTC])\n"
|
||||
" file(TIMESTAMP filename variable [<format string>] [UTC])\n"
|
||||
"WRITE will write a message into a file called 'filename'. It "
|
||||
"overwrites the file if it already exists, and creates the file "
|
||||
"if it does not exist. (If the file is a build input, use "
|
||||
|
@ -203,9 +202,9 @@ public:
|
|||
"as status messages until the operation is complete."
|
||||
"\n"
|
||||
"TIMESTAMP will write a string representation of "
|
||||
"the modification time of <filename> to <output varaible>.\n"
|
||||
"the modification time of filename to variable.\n"
|
||||
"Should the command be unable to obtain a timestamp "
|
||||
"<output variable> will be set to the empty string \"\".\n"
|
||||
"variable will be set to the empty string \"\".\n"
|
||||
"See documentation of the string TIMESTAMP sub-command for more details."
|
||||
"\n"
|
||||
"The file() command also provides COPY and INSTALL signatures:\n"
|
||||
|
|
|
@ -145,9 +145,9 @@ public:
|
|||
" by all regular expression-related commands, including \n"
|
||||
" e.g. if( MATCHES ), in the variables CMAKE_MATCH_(0..9).\n"
|
||||
"TIMESTAMP will write a string representation of "
|
||||
"the current date and/or time to <output variable>.\n"
|
||||
"the current date and/or time to the output variable.\n"
|
||||
"Should the command be unable to obtain a timestamp "
|
||||
"<output variable> will be set to the empty string \"\".\n"
|
||||
"the output variable will be set to the empty string \"\".\n"
|
||||
"The optional UTC flag requests the current date/time "
|
||||
"representation to be in Coordinated Universal Time (UTC) "
|
||||
"rather than local time.\n"
|
||||
|
|
|
@ -21,62 +21,68 @@ std::string cmTimestamp::CurrentTime(
|
|||
const std::string& formatString, bool utcFlag)
|
||||
{
|
||||
time_t currentTimeT = time(0);
|
||||
if(currentTimeT == time_t(-1)) return std::string();
|
||||
if(currentTimeT == time_t(-1))
|
||||
{
|
||||
return std::string();
|
||||
}
|
||||
|
||||
return CreateTimestampFromTimeT(currentTimeT, formatString, utcFlag);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
std::string cmTimestamp::FileModificationTime(const char* path,
|
||||
const std::string& formatString, bool utcFlag)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
struct _stat info;
|
||||
std::memset(&info, 0, sizeof(info));
|
||||
|
||||
if(_stat(path, &info) != 0)
|
||||
return std::string();
|
||||
|
||||
time_t currentTimeT = info.st_mtime;
|
||||
#define STAT _stat
|
||||
#else
|
||||
struct stat info;
|
||||
std::memset(&info, 0, sizeof(info));
|
||||
|
||||
if(stat(path, &info) != 0)
|
||||
return std::string();
|
||||
|
||||
time_t currentTimeT = info.st_mtime;
|
||||
#define STAT stat
|
||||
#endif
|
||||
|
||||
return CreateTimestampFromTimeT(currentTimeT, formatString, utcFlag);
|
||||
struct STAT info;
|
||||
std::memset(&info, 0, sizeof(info));
|
||||
|
||||
if(STAT(path, &info) != 0)
|
||||
{
|
||||
return std::string();
|
||||
}
|
||||
|
||||
return CreateTimestampFromTimeT(info.st_mtime, formatString, utcFlag);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
std::string cmTimestamp::CreateTimestampFromTimeT(time_t timeT,
|
||||
std::string formatString, bool utcFlag)
|
||||
{
|
||||
if(formatString.empty())
|
||||
{
|
||||
formatString = "%Y-%m-%dT%H:%M:%S";
|
||||
if(utcFlag) formatString += "Z";
|
||||
if(utcFlag)
|
||||
{
|
||||
formatString += "Z";
|
||||
}
|
||||
}
|
||||
|
||||
struct tm timeStruct;
|
||||
std::memset(&timeStruct, 0, sizeof(timeStruct));
|
||||
|
||||
struct tm* ptr = (struct tm*) 0;
|
||||
if(utcFlag)
|
||||
{
|
||||
tm* ptr = gmtime(&timeT);
|
||||
if(ptr == 0) return std::string();
|
||||
|
||||
timeStruct = *ptr;
|
||||
ptr = gmtime(&timeT);
|
||||
}
|
||||
else
|
||||
{
|
||||
struct tm* ptr = localtime(&timeT);
|
||||
if(ptr == 0) return std::string();
|
||||
|
||||
timeStruct = *ptr;
|
||||
ptr = localtime(&timeT);
|
||||
}
|
||||
|
||||
if(ptr == 0)
|
||||
{
|
||||
return std::string();
|
||||
}
|
||||
|
||||
timeStruct = *ptr;
|
||||
|
||||
std::string result;
|
||||
for(std::string::size_type i = 0; i < formatString.size(); ++i)
|
||||
{
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
string(TIMESTAMP output UTC)
|
||||
message("~${output}~")
|
Loading…
Reference in New Issue