about summary refs log tree commit diff
path: root/misc/subr.c
diff options
context:
space:
mode:
Diffstat (limited to 'misc/subr.c')
-rw-r--r--misc/subr.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/misc/subr.c b/misc/subr.c
index 30b4f3e..ffa5d46 100644
--- a/misc/subr.c
+++ b/misc/subr.c
@@ -6,6 +6,7 @@
 #include <inttypes.h>
 #include <limits.h>
 #include <math.h>
+#include <pwd.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -180,3 +181,21 @@ read_fully(int fd, void *buf, size_t len)
     }
     return 0;
 }
+
+char *
+find_btpd_dir(void)
+{
+    char *res = getenv("BTPD_HOME");
+    if (res != NULL)
+        return strdup(res);
+    char *home = getenv("HOME");
+    if (home == NULL) {
+        struct passwd *pwent = getpwuid(getuid());
+        endpwent();
+        if (pwent != NULL)
+            home = pwent->pw_dir;
+    }
+    if (home != NULL)
+        asprintf(&res, "%s/.btpd", home);
+    return res;
+}