about summary refs log tree commit diff stats
path: root/src/local
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2025-02-25 18:53:05 +0100
committerbptato <nincsnevem662@gmail.com>2025-02-25 18:53:05 +0100
commitc0da601b151946aa713c50459b88714588298eef (patch)
tree6e8921a9d5669e3d9fbeb7b66d7a4e8cac7ab62b /src/local
parent8a94274fd3b47c87536386159309d2dd777cda70 (diff)
downloadchawan-c0da601b151946aa713c50459b88714588298eef.tar.gz
tempfile: merge into pager/loader
and throw out the conflict resolution logic; it doesn't matter much if
we override an old cache file, as it should have been cleaned up anyway.

I've also replaced dirExists + createDir with a single mkdir at call
sites.  If it fails, so be it.
Diffstat (limited to 'src/local')
-rw-r--r--src/local/pager.nim11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/local/pager.nim b/src/local/pager.nim
index 113948ee..457cde8d 100644
--- a/src/local/pager.nim
+++ b/src/local/pager.nim
@@ -23,7 +23,6 @@ import io/console
 import io/dynstream
 import io/poll
 import io/promise
-import io/tempfile
 import io/timeout
 import local/container
 import local/lineedit
@@ -170,6 +169,7 @@ type
     status: Surface
     term*: Terminal
     timeouts*: TimeoutState
+    tmpfSeq: uint
     unreg*: seq[Container]
 
   ContainerData* = ref object of MapData
@@ -1008,7 +1008,12 @@ proc redraw(pager: Pager) {.jsfunc.} =
       pager.container.select.redraw = true
 
 proc getTempFile(pager: Pager; ext = ""): string =
-  return getTempFile(pager.config.external.tmpdir, ext)
+  result = pager.config.external.tmpdir / "chaptmp" &
+    $pager.loader.clientPid & "-" & $pager.tmpfSeq
+  if ext != "":
+    result &= "."
+    result &= ext
+  inc pager.tmpfSeq
 
 proc loadCachedImage(pager: Pager; container: Container; image: PosBitmap;
     offx, erry, dispw: int) =
@@ -1730,6 +1735,7 @@ proc openInEditor(pager: Pager; input: var string): bool =
   try:
     let tmpf = pager.getTempFile()
     if input != "":
+      discard mkdir(cstring(pager.config.external.tmpdir), 0o700)
       writeFile(tmpf, input)
     let cmd = pager.getEditorCommand(tmpf)
     if cmd == "":
@@ -2462,6 +2468,7 @@ proc runMailcapReadFile(pager: Pager; stream: PosixStream;
 # If needsterminal, leave stderr and stdout open and wait for the process.
 proc runMailcapWriteFile(pager: Pager; stream: PosixStream;
     needsterminal: bool; cmd, outpath: string) =
+  discard mkdir(cstring(pager.config.external.tmpdir), 0o700)
   if needsterminal:
     pager.term.quit()
     let os = newPosixStream(dup(pager.term.ostream.fd))