diff options
author | bptato <nincsnevem662@gmail.com> | 2024-01-29 13:25:23 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2024-01-29 13:26:15 +0100 |
commit | 9318ad33229d3c2f96dd766b38b8748f77487c5a (patch) | |
tree | 34dc6cbfd0a52d521d9d125fea626895ec3548c8 /src | |
parent | 619d5296dbfc77c37c13b86e4e96c356f1c3f61a (diff) | |
download | chawan-9318ad33229d3c2f96dd766b38b8748f77487c5a.tar.gz |
forkserver: clean up
Move forkBuffer into forkserver (why was it in container anyway), remove unused mainproc variable, etc.
Diffstat (limited to 'src')
-rw-r--r-- | src/local/client.nim | 6 | ||||
-rw-r--r-- | src/local/container.nim | 14 | ||||
-rw-r--r-- | src/local/pager.nim | 7 | ||||
-rw-r--r-- | src/main.nim | 3 | ||||
-rw-r--r-- | src/server/forkserver.nim | 24 |
5 files changed, 24 insertions, 30 deletions
diff --git a/src/local/client.nim b/src/local/client.nim index efc838f4..ae838360 100644 --- a/src/local/client.nim +++ b/src/local/client.nim @@ -65,7 +65,6 @@ type jsctx: JSContext jsrt: JSRuntime loader: FileLoader - mainproc: Pid pager {.jsget.}: Pager selector: Selector[int] timeouts: TimeoutState @@ -676,17 +675,16 @@ proc addJSModules(client: Client, ctx: JSContext) = func getClient(client: Client): Client {.jsfget: "client".} = return client -proc newClient*(config: Config, forkserver: ForkServer, mainproc: Pid): Client = +proc newClient*(config: Config, forkserver: ForkServer): Client = setControlCHook(proc() {.noconv.} = quit(1)) let jsrt = newJSRuntime() JS_SetModuleLoaderFunc(jsrt, normalizeModuleName, clientLoadJSModule, nil) let jsctx = jsrt.newJSContext() let attrs = getWindowAttributes(stdout) - let pager = newPager(config, attrs, forkserver, mainproc, jsctx) + let pager = newPager(config, attrs, forkserver, jsctx) let client = Client( config: config, forkserver: forkserver, - mainproc: mainproc, loader: forkserver.newFileLoader( defaultHeaders = config.getDefaultHeaders(), proxy = config.getProxy(), diff --git a/src/local/container.nim b/src/local/container.nim index 1c91a41e..73dfba49 100644 --- a/src/local/container.nim +++ b/src/local/container.nim @@ -127,28 +127,18 @@ type jsDestructor(Highlight) jsDestructor(Container) -proc newBuffer*(forkserver: ForkServer, mainproc: Pid, config: BufferConfig, +proc newBuffer*(forkserver: ForkServer, config: BufferConfig, source: BufferSource, title = "", redirectdepth = 0, canreinterpret = true): Container = let attrs = getWindowAttributes(stdout) - let ostream = forkserver.ostream - let istream = forkserver.istream - ostream.swrite(FORK_BUFFER) - ostream.swrite(source) - ostream.swrite(config) - ostream.swrite(attrs) - ostream.swrite(mainproc) - ostream.flush() - var process: Pid - istream.sread(process) return Container( + process: forkserver.forkBuffer(source, config, attrs), source: source, width: attrs.width, height: attrs.height - 1, title: title, config: config, redirectdepth: redirectdepth, - process: process, pos: CursorPosition( setx: -1 ), diff --git a/src/local/pager.nim b/src/local/pager.nim index 9275a5d3..61614eef 100644 --- a/src/local/pager.nim +++ b/src/local/pager.nim @@ -69,7 +69,6 @@ type linehist: array[LineMode, LineHistory] linemode: LineMode mailcap: Mailcap - mainproc: Pid mimeTypes: MimeTypes notnum*: bool # has a non-numeric character been input already? numload*: int @@ -230,15 +229,14 @@ proc setPaths(pager: Pager): Err[string] = pager.cgiDir = cgiDir return ok() -proc newPager*(config: Config, attrs: WindowAttributes, - forkserver: ForkServer, mainproc: Pid, ctx: JSContext): Pager = +proc newPager*(config: Config, attrs: WindowAttributes, forkserver: ForkServer, + ctx: JSContext): Pager = let (mailcap, errs) = config.getMailcap() let pager = Pager( config: config, display: newFixedGrid(attrs.width, attrs.height - 1), forkserver: forkserver, mailcap: mailcap, - mainproc: mainproc, mimeTypes: config.getMimeTypes(), omnirules: config.getOmniRules(ctx), proxy: config.getProxy(), @@ -451,7 +449,6 @@ proc newBuffer(pager: Pager, bufferConfig: BufferConfig, source: BufferSource, title = "", redirectdepth = 0, canreinterpret = true): Container = return newBuffer( pager.forkserver, - pager.mainproc, bufferConfig, source, title, diff --git a/src/main.nim b/src/main.nim index 49501d66..d6a9abce 100644 --- a/src/main.nim +++ b/src/main.nim @@ -5,7 +5,6 @@ let forks = newForkServer() import std/options import std/os -import std/posix import config/chapath import config/config @@ -208,7 +207,7 @@ Options: quit(1) SocketDirectory = tmpdir0.get - let c = newClient(config, forks, getpid()) + let c = newClient(config, forks) try: c.launchClient(pages, ctype, cs, dump) except CatchableError: diff --git a/src/server/forkserver.nim b/src/server/forkserver.nim index ea811955..9ad9c8a9 100644 --- a/src/server/forkserver.nim +++ b/src/server/forkserver.nim @@ -24,8 +24,8 @@ type ForkServer* = ref object process*: Pid - istream*: Stream - ostream*: Stream + istream: Stream + ostream: Stream estream*: PosixStream ForkServerContext = object @@ -62,6 +62,17 @@ proc removeChild*(forkserver: ForkServer, pid: Pid) = forkserver.ostream.swrite(pid) forkserver.ostream.flush() +proc forkBuffer*(forkserver: ForkServer, source: BufferSource, + config: BufferConfig, attrs: WindowAttributes): Pid = + forkserver.ostream.swrite(FORK_BUFFER) + forkserver.ostream.swrite(source) + forkserver.ostream.swrite(config) + forkserver.ostream.swrite(attrs) + forkserver.ostream.flush() + var process: Pid + forkserver.istream.sread(process) + return process + proc trapSIGINT() = # trap SIGINT, so e.g. an external editor receiving an interrupt in the # same process group can't just kill the process @@ -107,11 +118,9 @@ proc forkBuffer(ctx: var ForkServerContext): Pid = var source: BufferSource var config: BufferConfig var attrs: WindowAttributes - var mainproc: Pid ctx.istream.sread(source) ctx.istream.sread(config) ctx.istream.sread(attrs) - ctx.istream.sread(mainproc) let loaderPid = ctx.forkLoader(config.loaderConfig) var pipefd: array[2, cint] if pipe(pipefd) == -1: @@ -158,9 +167,10 @@ proc forkBuffer(ctx: var ForkServerContext): Pid = return pid proc runForkServer() = - var ctx: ForkServerContext - ctx.istream = newPosixStream(stdin.getFileHandle()) - ctx.ostream = newPosixStream(stdout.getFileHandle()) + var ctx = ForkServerContext( + istream: newPosixStream(stdin.getFileHandle()), + ostream: newPosixStream(stdout.getFileHandle()) + ) while true: try: var cmd: ForkCommand |