diff options
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | src/blogc/funcvars.c | 5 | ||||
-rw-r--r-- | src/blogc/sysinfo.c | 47 | ||||
-rw-r--r-- | src/blogc/sysinfo.h | 25 |
5 files changed, 80 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am index e2985cd..11d9605 100644 --- a/Makefile.am +++ b/Makefile.am @@ -44,6 +44,7 @@ noinst_HEADERS = \ src/blogc/loader.h \ src/blogc/renderer.h \ src/blogc/rusage.h \ + src/blogc/sysinfo.h \ src/blogc/source-parser.h \ src/blogc/template-parser.h \ src/blogc-git-receiver/post-receive.h \ @@ -130,6 +131,7 @@ libblogc_la_SOURCES = \ src/blogc/loader.c \ src/blogc/renderer.c \ src/blogc/rusage.c \ + src/blogc/sysinfo.c \ src/blogc/source-parser.c \ src/blogc/template-parser.c \ $(NULL) diff --git a/configure.ac b/configure.ac index cb68940..761e37a 100644 --- a/configure.ac +++ b/configure.ac @@ -220,7 +220,7 @@ AM_CONDITIONAL([USE_BGR_DEPS], [test "x$have_bgr_deps" = "xyes"]) BASH="$ac_cv_path_bash" AC_SUBST(BASH) -AC_CHECK_HEADERS([sys/resource.h sys/stat.h sys/time.h sys/wait.h time.h]) +AC_CHECK_HEADERS([sys/resource.h sys/stat.h sys/time.h sys/wait.h time.h unistd.h]) LT_LIB_M 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 */ |