about summary refs log tree commit diff stats
path: root/src/local
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-10-28 20:08:09 +0100
committerbptato <nincsnevem662@gmail.com>2024-10-28 20:08:09 +0100
commit6c5922d5f0b2d9d7b6e4c39593c6892a65f74e54 (patch)
tree2485ae5f313f0dd017ba85e86404393e5945b470 /src/local
parentbd4386923056c53e97f0865d846ef52d0666ca56 (diff)
downloadchawan-6c5922d5f0b2d9d7b6e4c39593c6892a65f74e54.tar.gz
config: refactor, accept more possible config dirs
I'm starting to favor dotfiles over XDG basedirs, but there's no reason
why we couldn't have both. So now the search path is:

0. if config was set through -C, use that
1. $CHA_CONFIG_DIR is set -> $CHA_CONFIG_DIR/config.toml
2. $XDG_CONFIG_HOME is set -> $XDG_CONFIG_HOME/chawan/config.toml
3. ~/.config/chawan/config.toml exists -> use that
4. ~/.chawan/config.toml exists -> use that

Notably, this makes it so the default directory is ~/.chawan *if* you
don't have an existing config.toml file. So in that case known_hosts
will be placed in ~/.chawan/known_hosts. However, configurations with a
config in ~/.config/chawan/config.toml continue to work as expected, as
for those the known_hosts file remains inside ~/.config/chawan/.

Finally, I've added a default user CGI directory to reduce friction in
setting CGI up. (Like known_hosts, it's also relative to whatever config
dir you have.)
Diffstat (limited to 'src/local')
-rw-r--r--src/local/pager.nim3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/local/pager.nim b/src/local/pager.nim
index 44ffaa94..d41818fb 100644
--- a/src/local/pager.nim
+++ b/src/local/pager.nim
@@ -1168,7 +1168,8 @@ proc runCommand(pager: Pager; cmd: string; suspend, wait: bool;
       newPosixStream(STDERR_FILENO).safeClose()
       newPosixStream(STDIN_FILENO).safeClose()
     else:
-      discard dup2(pager.term.istream.fd, STDIN_FILENO)
+      if pager.term.istream != nil:
+        discard dup2(pager.term.istream.fd, STDIN_FILENO)
     discard execl("/bin/sh", "sh", "-c", cstring(cmd), nil)
     exitnow(127)
   else: