summaryrefslogtreecommitdiff
path: root/src/datestamp.c
diff options
context:
space:
mode:
authortradke <tradke@17b73243-c579-4c4c-a9d2-2d5706c11dac>2006-07-28 09:57:00 +0000
committertradke <tradke@17b73243-c579-4c4c-a9d2-2d5706c11dac>2006-07-28 09:57:00 +0000
commitf62b1f5500a183495e1e80d1485d2a783a37c2b2 (patch)
tree923acee14768cbc95bab0acb5b010bddfeda1344 /src/datestamp.c
parent9afa1e7125a6f8298c9a55ada195a9db0c745876 (diff)
Add new flesh API functions CCTK_CompileDateTime() and Util_CurrentDateTime()
to return a date/time stamp following the ISO 8601 standard format if possible (see http://www.cactuscode.org/old/pipermail/developers/2006-July/004971.html). Add the timezone information in the time stamp returned by Util_CurrentTime(). You also need to update lib/make/make.configuration now in order to compile src/datestamp.c. git-svn-id: http://svn.cactuscode.org/flesh/trunk@4358 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src/datestamp.c')
-rw-r--r--src/datestamp.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/datestamp.c b/src/datestamp.c
index bc73cfd3..7f0dd7b8 100644
--- a/src/datestamp.c
+++ b/src/datestamp.c
@@ -8,6 +8,7 @@
#version $Id$
@@*/
+#include <ctype.h>
#include <stdio.h>
#include <string.h>
@@ -93,6 +94,52 @@ const char *CCTK_CompileDate (void)
/*@@
+ @routine CCTK_CompileDateTime
+ @date 21 July 2006
+ @author Thomas Radke
+ @desc
+ Returns a pointer to a formatted string with the datetime stamp
+ when Cactus was compiled.
+ The format of the string returned tries to be compatible
+ to the machine-processable format defined in ISO 8601 chapt. 5.4
+ however this depends on the actual date command which returns
+ the raw datetime string CCTK_COMPILE_DATETIME
+ in lib/make/make.configuration.
+ @enddesc
+
+ @returntype const char *
+ @returndesc
+ pointer to the static datetime stamp string buffer
+ @endreturndesc
+@@*/
+const char *CCTK_CompileDateTime (void)
+{
+#define DATETIME_BUFLEN sizeof("YYYY-MM-DDThh:mm:ss+hh:mm")
+ const int len = DATETIME_BUFLEN;
+ static char buffer[DATETIME_BUFLEN] = "";
+
+ if (buffer[0] == 0 && sizeof (STRINGIFY (CCTK_COMPILE_DATETIME)) == len-1)
+ {
+ strcpy (buffer, STRINGIFY (CCTK_COMPILE_DATETIME));
+
+ /* if the timezone part is returned as "(+|-)hhmm"
+ then turn it into "(+|-)hh:mm" */
+ if ((buffer[len-7] == '+' || buffer[len-7] == '-') &&
+ isdigit (buffer[len-6]) && isdigit (buffer[len-5]) &&
+ isdigit (buffer[len-4]) && isdigit (buffer[len-3]) &&
+ buffer[len-2] == 0)
+ {
+ buffer[len-2] = buffer[len-3];
+ buffer[len-3] = buffer[len-4];
+ buffer[len-4] = ':';
+ }
+ }
+
+ return (buffer[0] ? buffer : STRINGIFY (CCTK_COMPILE_DATETIME));
+}
+
+
+ /*@@
@routine CCTK_FullVersion CCTK_MajorVersion CCTK_MinorVersion
@date Mon May 11 10:20:58 1998
@author Paul Walker