diff options
| -rw-r--r-- | src/blogc/funcvars.c | 4 | ||||
| -rw-r--r-- | src/blogc/sysinfo.c | 36 | ||||
| -rw-r--r-- | src/blogc/sysinfo.h | 6 | 
3 files changed, 46 insertions, 0 deletions
diff --git a/src/blogc/funcvars.c b/src/blogc/funcvars.c index 50abbb8..96bc3c5 100644 --- a/src/blogc/funcvars.c +++ b/src/blogc/funcvars.c @@ -30,6 +30,10 @@ static const struct func_map {      {"BLOGC_SYSINFO_HOSTNAME", blogc_sysinfo_inject_hostname},  #endif +#ifdef HAVE_SYSINFO_DATETIME +    {"BLOGC_SYSINFO_DATETIME", blogc_sysinfo_inject_datetime}, +#endif +      {NULL, NULL},  }; diff --git a/src/blogc/sysinfo.c b/src/blogc/sysinfo.c index 191f60e..d934483 100644 --- a/src/blogc/sysinfo.c +++ b/src/blogc/sysinfo.c @@ -14,6 +14,10 @@  #include <unistd.h>  #endif /* HAVE_UNISTD_H */ +#ifdef HAVE_TIME_H +#include <time.h> +#endif /* HAVE_TIME_H */ +  #include <stdlib.h>  #include "../common/utils.h"  #include "sysinfo.h" @@ -45,3 +49,35 @@ blogc_sysinfo_inject_hostname(bc_trie_t *global)      bc_trie_insert(global, "BLOGC_SYSINFO_HOSTNAME", hostname);  } + + +char* +blogc_sysinfo_get_datetime(void) +{ +#ifndef HAVE_SYSINFO_DATETIME +    return NULL; +#else +    time_t tmp; +    if (-1 == time(&tmp)) +        return NULL; + +    struct tm *t = gmtime(&tmp); + +    char buf[1024]; +    if (0 == strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", t)) +        return NULL; + +    return bc_strdup(buf); +#endif +} + + +void +blogc_sysinfo_inject_datetime(bc_trie_t *global) +{ +    char *t = blogc_sysinfo_get_datetime(); +    if (t == NULL) +        return; + +    bc_trie_insert(global, "BLOGC_SYSINFO_DATETIME", t); +} diff --git a/src/blogc/sysinfo.h b/src/blogc/sysinfo.h index 0104911..f26662a 100644 --- a/src/blogc/sysinfo.h +++ b/src/blogc/sysinfo.h @@ -19,9 +19,15 @@  #endif /* HAVE_GETHOSTNAME */  #endif /* HAVE_UNISTD_H */ +#ifdef HAVE_TIME_H +#define HAVE_SYSINFO_DATETIME 1 +#endif /* HAVE_TIME_H */ +  #include "../common/utils.h"  char* blogc_sysinfo_get_hostname(void);  void blogc_sysinfo_inject_hostname(bc_trie_t *global); +char* blogc_sysinfo_get_datetime(void); +void blogc_sysinfo_inject_datetime(bc_trie_t *global);  #endif /* ___SYSINFO_H */  | 
