diff options
author | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2019-02-03 13:33:09 +0100 |
---|---|---|
committer | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2019-02-03 13:33:09 +0100 |
commit | f0725f2db0e34488f5f269cdb442c50458263cf6 (patch) | |
tree | 9de89805faf542c80ddfc25512070cc367e1e1a0 /src | |
parent | 0b5ff9516f6ffda69b779a560d01c1a2dfb5e825 (diff) | |
download | blogc-f0725f2db0e34488f5f269cdb442c50458263cf6.tar.gz blogc-f0725f2db0e34488f5f269cdb442c50458263cf6.tar.bz2 blogc-f0725f2db0e34488f5f269cdb442c50458263cf6.zip |
blogc: added hostmane template variable
Diffstat (limited to 'src')
-rw-r--r-- | src/blogc/funcvars.c | 5 | ||||
-rw-r--r-- | src/blogc/sysinfo.c | 47 | ||||
-rw-r--r-- | src/blogc/sysinfo.h | 25 |
3 files changed, 77 insertions, 0 deletions
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 <rafael@rafaelmartins.eng.br> + * + * This program can be distributed under the terms of the BSD License. + * See the file LICENSE. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif /* HAVE_CONFIG_H */ + +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif /* HAVE_UNISTD_H */ + +#include <stdlib.h> +#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 <rafael@rafaelmartins.eng.br> + * + * 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 <config.h> +#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 */ |