diff options
author | bptato <nincsnevem662@gmail.com> | 2025-01-14 18:24:10 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2025-01-14 18:24:10 +0100 |
commit | 1abc51cccbe62a4f0e7e13eeb51cfa3aaa9aa542 (patch) | |
tree | 59686fb57f67ba065f29799769f460e60319e3bb | |
parent | ea9d594d196e2e24977f454f1fd5b07dddbf7f87 (diff) | |
download | chawan-1abc51cccbe62a4f0e7e13eeb51cfa3aaa9aa542.tar.gz |
More strict defs
-rw-r--r-- | adapter/format/gopher2html.nim | 2 | ||||
-rw-r--r-- | adapter/protocol/man.nim | 6 | ||||
-rw-r--r-- | adapter/protocol/sftp.nim | 2 | ||||
-rw-r--r-- | src/io/bufreader.nim | 60 |
4 files changed, 38 insertions, 32 deletions
diff --git a/adapter/format/gopher2html.nim b/adapter/format/gopher2html.nim index 21bfdf2e..fba8e521 100644 --- a/adapter/format/gopher2html.nim +++ b/adapter/format/gopher2html.nim @@ -29,7 +29,7 @@ proc main() = <title>Index of """ & url & """</title> <h1>Index of """ & url & """</h1>""") var ispre = false - var line: string + var line = "" while stdin.readLine(line): if line.len == 0: continue diff --git a/adapter/protocol/man.nim b/adapter/protocol/man.nim index 4b26379c..a8c4ae34 100644 --- a/adapter/protocol/man.nim +++ b/adapter/protocol/man.nim @@ -304,9 +304,9 @@ proc doKeyword(man, keyword, section: string) = quit(1) var line: string if not ofile.readLine(line) or ofile.endOfFile(): - var wstatus: cint - discard wait(addr wstatus) - if not WIFEXITED(wstatus) or WEXITSTATUS(wstatus) != 0: + var wstatus = cint(0) + if wait(addr wstatus) >= 0 and not WIFEXITED(wstatus) or + WEXITSTATUS(wstatus) != 0: stdout.write("Cha-Control: ConnectionError 4 " & efile.readErrorMsg(line)) ofile.close() efile.close() diff --git a/adapter/protocol/sftp.nim b/adapter/protocol/sftp.nim index a9ca5b9a..75d6f4cb 100644 --- a/adapter/protocol/sftp.nim +++ b/adapter/protocol/sftp.nim @@ -84,7 +84,7 @@ proc matchesPattern(s: string; pats: openArray[string]): bool = proc parseSSHConfig(f: File; host: string; pubKey, privKey: var string) = var skipTillNext = false - var line: string + var line = "" while f.readLine(line): var i = line.skipBlanks(0) if i == line.len or line[i] == '#': diff --git a/src/io/bufreader.nim b/src/io/bufreader.nim index 86ed1aed..203a2e52 100644 --- a/src/io/bufreader.nim +++ b/src/io/bufreader.nim @@ -10,19 +10,19 @@ type BufferedReader* = object bufIdx: int recvAux*: seq[cint] #TODO assert on unused ones -proc sread*(reader: var BufferedReader; n: var SomeNumber) -proc sread*[T](reader: var BufferedReader; s: var set[T]) -proc sread*[T: enum](reader: var BufferedReader; x: var T) -proc sread*(reader: var BufferedReader; s: var string) -proc sread*(reader: var BufferedReader; b: var bool) +proc sread*(reader: var BufferedReader; n: out SomeNumber) +proc sread*[T](reader: var BufferedReader; s: out set[T]) +proc sread*[T: enum](reader: var BufferedReader; x: out T) +proc sread*(reader: var BufferedReader; s: out string) +proc sread*(reader: var BufferedReader; b: out bool) proc sread*(reader: var BufferedReader; tup: var tuple) -proc sread*[I, T](reader: var BufferedReader; a: var array[I, T]) -proc sread*(reader: var BufferedReader; s: var seq) -proc sread*[U, V](reader: var BufferedReader; t: var Table[U, V]) +proc sread*[I, T](reader: var BufferedReader; a: out array[I, T]) +proc sread*[T](reader: var BufferedReader; s: out seq[T]) +proc sread*[U, V](reader: var BufferedReader; t: out Table[U, V]) proc sread*(reader: var BufferedReader; obj: var object) proc sread*(reader: var BufferedReader; obj: var ref object) -proc sread*[T](reader: var BufferedReader; o: var Option[T]) -proc sread*[T, E](reader: var BufferedReader; o: var Result[T, E]) +proc sread*[T](reader: var BufferedReader; o: out Option[T]) +proc sread*[T, E](reader: var BufferedReader; o: out Result[T, E]) proc sread*(reader: var BufferedReader; c: var ARGBColor) proc sread*(reader: var BufferedReader; c: var CellColor) @@ -57,30 +57,32 @@ proc readData*(reader: var BufferedReader; buffer: pointer; len: int) = copyMem(buffer, addr reader.buffer[reader.bufIdx], len) reader.bufIdx += len -proc sread*(reader: var BufferedReader; n: var SomeNumber) = +proc sread*(reader: var BufferedReader; n: out SomeNumber) = + n = 0 reader.readData(addr n, sizeof(n)) -proc sread*[T: enum](reader: var BufferedReader; x: var T) = - var i: int +proc sread*[T: enum](reader: var BufferedReader; x: out T) = + var i {.noinit.}: int reader.sread(i) x = cast[T](i) -proc sread*[T](reader: var BufferedReader; s: var set[T]) = - var len: int +proc sread*[T](reader: var BufferedReader; s: out set[T]) = + var len {.noinit.}: int reader.sread(len) + s = {} for i in 0 ..< len: var x: T reader.sread(x) s.incl(x) -proc sread*(reader: var BufferedReader; s: var string) = - var len: int +proc sread*(reader: var BufferedReader; s: out string) = + var len {.noinit.}: int reader.sread(len) s = newString(len) if len > 0: reader.readData(addr s[0], len) -proc sread*(reader: var BufferedReader; b: var bool) = +proc sread*(reader: var BufferedReader; b: out bool) = var n: uint8 reader.sread(n) if n == 1u8: @@ -93,20 +95,21 @@ proc sread*(reader: var BufferedReader; tup: var tuple) = for f in tup.fields: reader.sread(f) -proc sread*[I; T](reader: var BufferedReader; a: var array[I, T]) = +proc sread*[I; T](reader: var BufferedReader; a: out array[I, T]) = for x in a.mitems: reader.sread(x) -proc sread*(reader: var BufferedReader; s: var seq) = - var len: int +proc sread*[T](reader: var BufferedReader; s: out seq[T]) = + var len {.noinit.}: int reader.sread(len) - s.setLen(len) + s = newSeq[T](len) for x in s.mitems: reader.sread(x) -proc sread*[U; V](reader: var BufferedReader; t: var Table[U, V]) = - var len: int +proc sread*[U; V](reader: var BufferedReader; t: out Table[U, V]) = + var len {.noinit.}: int reader.sread(len) + t = initTable[U, V](len) for i in 0..<len: var k: U reader.sread(k) @@ -115,6 +118,7 @@ proc sread*[U; V](reader: var BufferedReader; t: var Table[U, V]) = t[k] = v proc sread*(reader: var BufferedReader; obj: var object) = + obj = default(typeof(obj)) for f in obj.fields: reader.sread(f) @@ -122,10 +126,12 @@ proc sread*(reader: var BufferedReader; obj: var ref object) = var n: bool reader.sread(n) if n: - new(obj) + obj = new(typeof(obj)) reader.sread(obj[]) + else: + obj = nil -proc sread*[T](reader: var BufferedReader; o: var Option[T]) = +proc sread*[T](reader: var BufferedReader; o: out Option[T]) = var x: bool reader.sread(x) if x: @@ -135,7 +141,7 @@ proc sread*[T](reader: var BufferedReader; o: var Option[T]) = else: o = none(T) -proc sread*[T, E](reader: var BufferedReader; o: var Result[T, E]) = +proc sread*[T, E](reader: var BufferedReader; o: out Result[T, E]) = var x: bool reader.sread(x) if x: |