From 013a37c8738d671d9d5f8381146d7d1e8f651762 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Sun, 3 Feb 2019 15:18:34 +0100 Subject: blogc: added username template variable --- configure.ac | 2 +- src/blogc/funcvars.c | 4 ++++ src/blogc/sysinfo.c | 35 +++++++++++++++++++++++++++++++++++ src/blogc/sysinfo.h | 10 ++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 865f247..809082a 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 unistd.h]) +AC_CHECK_HEADERS([sys/resource.h sys/stat.h sys/time.h sys/wait.h time.h unistd.h pwd.h]) AC_CHECK_FUNCS([gethostname]) LT_LIB_M diff --git a/src/blogc/funcvars.c b/src/blogc/funcvars.c index 96bc3c5..beb5f8a 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_USERNAME + {"BLOGC_SYSINFO_USERNAME", blogc_sysinfo_inject_username}, +#endif + #ifdef HAVE_SYSINFO_DATETIME {"BLOGC_SYSINFO_DATETIME", blogc_sysinfo_inject_datetime}, #endif diff --git a/src/blogc/sysinfo.c b/src/blogc/sysinfo.c index d934483..61c8b1d 100644 --- a/src/blogc/sysinfo.c +++ b/src/blogc/sysinfo.c @@ -14,6 +14,14 @@ #include #endif /* HAVE_UNISTD_H */ +#ifdef HAVE_SYS_TYPES_H +#include +#endif /* HAVE_SYS_TYPES_H */ + +#ifdef HAVE_PWD_H +#include +#endif /* HAVE_PWD_H */ + #ifdef HAVE_TIME_H #include #endif /* HAVE_TIME_H */ @@ -51,6 +59,33 @@ blogc_sysinfo_inject_hostname(bc_trie_t *global) } +char* +blogc_sysinfo_get_username(void) +{ +#ifndef HAVE_SYSINFO_USERNAME + return NULL; +#else + uid_t u = geteuid(); + struct passwd *p = getpwuid(u); + if (p == NULL) + return NULL; + + return bc_strdup(p->pw_name); +#endif +} + + +void +blogc_sysinfo_inject_username(bc_trie_t *global) +{ + char *username = blogc_sysinfo_get_username(); + if (username == NULL) + return; + + bc_trie_insert(global, "BLOGC_SYSINFO_USERNAME", username); +} + + char* blogc_sysinfo_get_datetime(void) { diff --git a/src/blogc/sysinfo.h b/src/blogc/sysinfo.h index f26662a..25f2177 100644 --- a/src/blogc/sysinfo.h +++ b/src/blogc/sysinfo.h @@ -19,6 +19,14 @@ #endif /* HAVE_GETHOSTNAME */ #endif /* HAVE_UNISTD_H */ +#ifdef HAVE_UNISTD_H +#ifdef HAVE_SYS_TYPES_H +#ifdef HAVE_PWD_H +#define HAVE_SYSINFO_USERNAME 1 +#endif /* HAVE_PWD_H */ +#endif /* HAVE_SYS_TYPES_H */ +#endif /* HAVE_UNISTD_H */ + #ifdef HAVE_TIME_H #define HAVE_SYSINFO_DATETIME 1 #endif /* HAVE_TIME_H */ @@ -27,6 +35,8 @@ char* blogc_sysinfo_get_hostname(void); void blogc_sysinfo_inject_hostname(bc_trie_t *global); +char* blogc_sysinfo_get_username(void); +void blogc_sysinfo_inject_username(bc_trie_t *global); char* blogc_sysinfo_get_datetime(void); void blogc_sysinfo_inject_datetime(bc_trie_t *global); -- cgit v1.2.3-18-g5258