[gitg] Add platform support for getting user home directory
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gitg] Add platform support for getting user home directory
- Date: Tue, 22 Dec 2015 08:57:50 +0000 (UTC)
commit a0d448304ddd2165c8cce79985b32a17b36e98f8
Author: Jesse van den Kieboom <jessevdk gnome org>
Date: Tue Dec 22 09:56:05 2015 +0100
Add platform support for getting user home directory
libgitg/gitg-platform-support-osx.c | 28 ++++++++++++++++++++++++++++
libgitg/gitg-platform-support-win32.c | 7 +++++++
libgitg/gitg-platform-support.c | 28 ++++++++++++++++++++++++++++
libgitg/gitg-platform-support.h | 2 ++
vapi/gitg-platform-support.vapi | 1 +
5 files changed, 66 insertions(+), 0 deletions(-)
---
diff --git a/libgitg/gitg-platform-support-osx.c b/libgitg/gitg-platform-support-osx.c
index 20e385f..aa224da 100644
--- a/libgitg/gitg-platform-support-osx.c
+++ b/libgitg/gitg-platform-support-osx.c
@@ -26,6 +26,9 @@
#include <gdk/gdkquartz.h>
#include <gio/gunixinputstream.h>
+#include <sys/types.h>
+#include <pwd.h>
+
gboolean
gitg_platform_support_use_native_window_controls (GdkDisplay *display)
{
@@ -190,4 +193,29 @@ gitg_platform_support_get_data_dir (void)
return g_strdup (GITG_DATADIR);
}
+gchar *
+gitg_platform_support_get_user_home_dir (const gchar *name)
+{
+ struct passwd *pwd;
+
+ if (name == NULL)
+ {
+ name = g_get_user_name ();
+ }
+
+ if (name == NULL)
+ {
+ return NULL;
+ }
+
+ pwd = getpwnam (name);
+
+ if (pwd == NULL)
+ {
+ return NULL;
+ }
+
+ return g_strdup (pwd->pw_dir);
+}
+
// ex:ts=4 noet
diff --git a/libgitg/gitg-platform-support-win32.c b/libgitg/gitg-platform-support-win32.c
index a2bcb85..11a3b7d 100644
--- a/libgitg/gitg-platform-support-win32.c
+++ b/libgitg/gitg-platform-support-win32.c
@@ -100,4 +100,11 @@ gitg_platform_support_get_data_dir (void)
return data_dir;
}
+gchar *
+gitg_platform_support_get_user_home_dir (const gchar *name)
+{
+ // TODO
+ return NULL;
+}
+
// ex:ts=4 noet
diff --git a/libgitg/gitg-platform-support.c b/libgitg/gitg-platform-support.c
index 6bea618..483b798 100644
--- a/libgitg/gitg-platform-support.c
+++ b/libgitg/gitg-platform-support.c
@@ -25,6 +25,9 @@
#include <gio/gunixinputstream.h>
+#include <sys/types.h>
+#include <pwd.h>
+
gboolean
gitg_platform_support_use_native_window_controls (GdkDisplay *display)
{
@@ -117,4 +120,29 @@ gitg_platform_support_get_data_dir (void)
return g_strdup (GITG_DATADIR);
}
+gchar *
+gitg_platform_support_get_user_home_dir (const gchar *name)
+{
+ struct passwd *pwd;
+
+ if (name == NULL)
+ {
+ name = g_get_user_name ();
+ }
+
+ if (name == NULL)
+ {
+ return NULL;
+ }
+
+ pwd = getpwnam (name);
+
+ if (pwd == NULL)
+ {
+ return NULL;
+ }
+
+ return g_strdup (pwd->pw_dir);
+}
+
// ex:ts=4 noet
diff --git a/libgitg/gitg-platform-support.h b/libgitg/gitg-platform-support.h
index aacc29c..266db4d 100644
--- a/libgitg/gitg-platform-support.h
+++ b/libgitg/gitg-platform-support.h
@@ -50,6 +50,8 @@ gchar *gitg_platform_support_get_locale_dir (void);
gchar *gitg_platform_support_get_data_dir (void);
+gchar *gitg_platform_support_get_user_home_dir (const gchar *name);
+
#endif /* __GITG_PLATFORM_SUPPORT_H__ */
// ex:ts=4 noet
diff --git a/vapi/gitg-platform-support.vapi b/vapi/gitg-platform-support.vapi
index 18e1c5f..5071a95 100644
--- a/vapi/gitg-platform-support.vapi
+++ b/vapi/gitg-platform-support.vapi
@@ -18,5 +18,6 @@ namespace Gitg
public static string get_lib_dir();
public static string get_locale_dir();
public static string get_data_dir();
+ public static string? get_user_home_dir(string? user = null);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]