summaryrefslogtreecommitdiff
path: root/src/sysdir.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sysdir.c')
-rw-r--r--src/sysdir.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/sysdir.c b/src/sysdir.c
index 2795de491..bf53d830f 100644
--- a/src/sysdir.c
+++ b/src/sysdir.c
@@ -15,6 +15,16 @@
#include "win32/findfile.h"
#endif
+static int git_sysdir_guess_programdata_dirs(git_buf *out)
+{
+#ifdef GIT_WIN32
+ return git_win32__find_programdata_dirs(out);
+#else
+ git_buf_clear(out);
+ return 0;
+#endif
+}
+
static int git_sysdir_guess_system_dirs(git_buf *out)
{
#ifdef GIT_WIN32
@@ -76,12 +86,13 @@ static int git_sysdir_guess_template_dirs(git_buf *out)
typedef int (*git_sysdir_guess_cb)(git_buf *out);
static git_buf git_sysdir__dirs[GIT_SYSDIR__MAX] =
- { GIT_BUF_INIT, GIT_BUF_INIT, GIT_BUF_INIT, GIT_BUF_INIT };
+ { GIT_BUF_INIT, GIT_BUF_INIT, GIT_BUF_INIT, GIT_BUF_INIT, GIT_BUF_INIT };
static git_sysdir_guess_cb git_sysdir__dir_guess[GIT_SYSDIR__MAX] = {
git_sysdir_guess_system_dirs,
git_sysdir_guess_global_dirs,
git_sysdir_guess_xdg_dirs,
+ git_sysdir_guess_programdata_dirs,
git_sysdir_guess_template_dirs,
};
@@ -258,6 +269,12 @@ int git_sysdir_find_xdg_file(git_buf *path, const char *filename)
path, filename, GIT_SYSDIR_XDG, "global/xdg");
}
+int git_sysdir_find_programdata_file(git_buf *path, const char *filename)
+{
+ return git_sysdir_find_in_dirlist(
+ path, filename, GIT_SYSDIR_PROGRAMDATA, "ProgramData");
+}
+
int git_sysdir_find_template_dir(git_buf *path)
{
return git_sysdir_find_in_dirlist(