--- tuxpaint.c.orig 2008-02-26 16:50:15.000000000 -0500 +++ tuxpaint.c 2008-02-26 16:46:59.000000000 -0500 @@ -15036,8 +15036,23 @@ } else if (strstr(str, "savedir=") == str) { - savedir = strdup(str + 8); - remove_slash(savedir); + savedir = strdup(str + 8); + + // expand user's home if required + if (strncmp(savedir,"~",1) == 0) + { + char f[512]; + char* buf1; + + if (getenv("HOME") != NULL) + { + buf1 = strdup(savedir + 1); + snprintf(f, sizeof(f), "%s/%s", getenv("HOME"), buf1); + free(buf1); + savedir = strdup(f); + } + } + remove_slash(savedir); #ifdef DEBUG printf("savedir set to: %s\n", savedir);