From f0725f2db0e34488f5f269cdb442c50458263cf6 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Sun, 3 Feb 2019 13:33:09 +0100 Subject: blogc: added hostmane template variable --- src/blogc/funcvars.c | 5 +++++ src/blogc/sysinfo.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/blogc/sysinfo.h | 25 +++++++++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 src/blogc/sysinfo.c create mode 100644 src/blogc/sysinfo.h (limited to 'src') diff --git a/src/blogc/funcvars.c b/src/blogc/funcvars.c index 4fc12cf..50abbb8 100644 --- a/src/blogc/funcvars.c +++ b/src/blogc/funcvars.c @@ -12,6 +12,7 @@ #include "funcvars.h" #include "rusage.h" +#include "sysinfo.h" #include "../common/utils.h" @@ -25,6 +26,10 @@ static const struct func_map { {"BLOGC_RUSAGE_MEMORY", blogc_rusage_inject}, #endif +#ifdef HAVE_SYSINFO_HOSTNAME + {"BLOGC_SYSINFO_HOSTNAME", blogc_sysinfo_inject_hostname}, +#endif + {NULL, NULL}, }; diff --git a/src/blogc/sysinfo.c b/src/blogc/sysinfo.c new file mode 100644 index 0000000..191f60e --- /dev/null +++ b/src/blogc/sysinfo.c @@ -0,0 +1,47 @@ +/* + * blogc: A blog compiler. + * Copyright (C) 2014-2019 Rafael G. Martins + * + * This program can be distributed under the terms of the BSD License. + * See the file LICENSE. + */ + +#ifdef HAVE_CONFIG_H +#include +#endif /* HAVE_CONFIG_H */ + +#ifdef HAVE_UNISTD_H +#include +#endif /* HAVE_UNISTD_H */ + +#include +#include "../common/utils.h" +#include "sysinfo.h" + + +char* +blogc_sysinfo_get_hostname(void) +{ +#ifndef HAVE_SYSINFO_HOSTNAME + return NULL; +#else + char buf[1024]; // could be 256 according to gethostname(2), but *shrug*. + buf[1023] = '\0'; + if (-1 == gethostname(buf, 1024)) + return NULL; + + // FIXME: return FQDN instead of local host name + return bc_strdup(buf); +#endif +} + + +void +blogc_sysinfo_inject_hostname(bc_trie_t *global) +{ + char *hostname = blogc_sysinfo_get_hostname(); + if (hostname == NULL) + return; + + bc_trie_insert(global, "BLOGC_SYSINFO_HOSTNAME", hostname); +} diff --git a/src/blogc/sysinfo.h b/src/blogc/sysinfo.h new file mode 100644 index 0000000..51640e0 --- /dev/null +++ b/src/blogc/sysinfo.h @@ -0,0 +1,25 @@ +/* + * blogc: A blog compiler. + * Copyright (C) 2014-2019 Rafael G. Martins + * + * This program can be distributed under the terms of the BSD License. + * See the file LICENSE. + */ + +#ifndef ___SYSINFO_H +#define ___SYSINFO_H + +#ifdef HAVE_CONFIG_H +#include +#endif /* HAVE_CONFIG_H */ + +#ifdef HAVE_UNISTD_H +#define HAVE_SYSINFO_HOSTNAME 1 +#endif /* HAVE_UNISTD_H */ + +#include "../common/utils.h" + +char* blogc_sysinfo_get_hostname(void); +void blogc_sysinfo_inject_hostname(bc_trie_t *global); + +#endif /* ___SYSINFO_H */ -- cgit v1.2.3-18-g5258