diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-07-27 22:51:30 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-07-27 22:51:30 -0700 |
commit | 7d6188b2576b611552ab17dd3f27e8a308cc6c86 (patch) | |
tree | 9cae147e191ec11323e78865fdb05f4f3f562f19 | |
parent | 10f3603aa0d19b165f33b39abc4b183057e93f3d (diff) | |
download | txr-7d6188b2576b611552ab17dd3f27e8a308cc6c86.tar.gz txr-7d6188b2576b611552ab17dd3f27e8a308cc6c86.tar.bz2 txr-7d6188b2576b611552ab17dd3f27e8a308cc6c86.zip |
Check for Cygnal when deciding where user home is.
* parser.c (get_home_path): Do not try HOME first and
then USERPROFILE. If running on Cygnal, use strictly
USERPROFILE, and do not fall back on HOME. In all other
situations, try the HOME variable only.
-rw-r--r-- | parser.c | 28 |
1 files changed, 9 insertions, 19 deletions
@@ -37,6 +37,9 @@ #include <errno.h> #include "config.h" #include ALLOCA_H +#ifdef __CYGWIN__ +#include <sys/utsname.h> +#endif #include "lib.h" #include "signal.h" #include "unwind.h" @@ -644,31 +647,18 @@ static val read_eval_ret_last(val env, val counter, return t; } -#ifdef __CYGWIN__ static val get_home_path(void) { - val path_exists_p = intern(lit("path-exists-p"), user_package); - - { - val posixy_home = getenv_wrap(lit("HOME")); - if (funcall1(path_exists_p, posixy_home)) - return posixy_home; - } +#ifdef __CYGWIN__ + struct utsname un; - { - val windowsy_home = getenv_wrap(lit("USERPROFILE")); - if (funcall1(path_exists_p, windowsy_home)) - return windowsy_home; + if (uname(&un) >= 0) { + if (strncmp(un.sysname, "CYGNAL", 6) == 0) + return getenv_wrap(lit("USERPROFILE")); } - - return nil; -} -#else -static val get_home_path(void) -{ +#endif return getenv_wrap(lit("HOME")); } -#endif val repl(val bindings, val in_stream, val out_stream) { |