summaryrefslogtreecommitdiffstats
path: root/linux.c
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2014-04-14 14:33:46 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-04-14 16:07:59 -0700
commita3aacfc6c2cbeccb81e18d6906fcc47cf01456a0 (patch)
treee5d5554cfd5883fbcf650e6a1bb041e1c8575ed9 /linux.c
parent7e1d8724c5e9800ade5590ff96d8290196755036 (diff)
downloadsubsurface-a3aacfc6c2cbeccb81e18d6906fcc47cf01456a0.tar.gz
git-save: improve commit authorship data
We used to always just commit as "subsurface@hohndel.org" because libgit-19 doesn't have the interfaces to do user name lookup. This does better if you have libgit-20, using "git_signature_default()" to get the actual user that does the saving. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'linux.c')
-rw-r--r--linux.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/linux.c b/linux.c
index ea0170dc8..8c79a3f2d 100644
--- a/linux.c
+++ b/linux.c
@@ -2,16 +2,39 @@
/* implements Linux specific functions */
#include "dive.h"
#include "display.h"
+#include "membuffer.h"
#include <string.h>
#include <sys/types.h>
#include <dirent.h>
#include <fnmatch.h>
#include <stdio.h>
#include <fcntl.h>
+#include <unistd.h>
+#include <pwd.h>
const char system_divelist_default_font[] = "Sans";
const int system_divelist_default_font_size = 8;
+void subsurface_user_info(struct user_info *user)
+{
+ struct passwd *pwd = getpwuid(getuid());
+ const char *username = getenv("USER");
+
+ if (pwd) {
+ if (pwd->pw_gecos && *pwd->pw_gecos)
+ user->name = pwd->pw_gecos;
+ if (!username)
+ username = pwd->pw_name;
+ }
+ if (username && *username) {
+ char hostname[64];
+ struct membuffer mb = { 0 };
+ gethostname(hostname, sizeof(hostname));
+ put_format(&mb, "%s@%s", username, hostname);
+ user->email = mb_cstring(&mb);
+ }
+}
+
const char *system_default_filename(void)
{
const char *home, *user;