Commit Diff


commit - fd691e588450a63fb7f3cde6b11a36eeb06a4369
commit + 99fe4026773799cfe7cf9929005a8a44fe2dca30
blob - df4f57f1e4c07435d969629841ff24a2bac13589
blob + bfe716e2534422cfd54bc88659797c8e652bc61f
--- defaults.c
+++ defaults.c
@@ -515,8 +515,24 @@ int
 config_setvars(const char *var, char *val)
 {
 	if (!strcmp(var, "download-path")) {
+		const char *prfx = "", *v = val, *sufx = "";
+
+		if (has_prefix(val, "~/") &&
+		    v++ &&
+		    (prfx = getenv("HOME")) == NULL)
+			return 0;
+
+		if (!has_suffix(val, "/"))
+			sufx = "/";
+
 		free(download_path);
-		download_path = val;
+		if (asprintf(&download_path, "%s%s%s", prfx, v, sufx) == -1) {
+			download_path = NULL;
+			return 0;
+		}
+
+		free(val);
+		return 1;
 	} else if (!strcmp(var, "new-tab-url")) {
 		free(new_tab_url);
 		new_tab_url = val;