further steps to get rid of deprecated endOfFile and readLine

This commit is contained in:
Araq 2011-11-29 01:24:58 +01:00
commit e261a88d07
11 changed files with 35 additions and 21 deletions

View file

@ -144,10 +144,12 @@ proc executeCgi(client: TSocket, path, query: string, meth: TRequestMethod) =
dealloc(buf)
var outp = process.outputStream
while running(process) or not atEnd(outp):
var line = outp.readLine()
send(client, line.string)
send(client, wwwNL)
var line = newStringOfCap(120).TaintedString
while true:
if outp.readLine(line):
send(client, line.string)
send(client, wwwNL)
elif not running(process): break
# --------------- Server Setup -----------------------------------------------

View file

@ -414,7 +414,7 @@ proc isRootDir*(path: string): bool {.
var p = parentDir(path)
result = p == path or p.len == 0
iterator parentDirs*(path: string, fromRoot = false, inclusive = true): string =
iterator parentDirs*(path: string, fromRoot=false, inclusive=true): string =
## Walks over all parent directories of a given `path`
##
## If `fromRoot` is set, the traversal will start from the file system root

View file

@ -160,7 +160,7 @@ proc execProcesses*(cmds: openArray[string],
## that execute in parallel. The highest return value of all processes
## is returned.
when defined(posix):
# poParentStreams causes problems on Posix, so we disable it simply:
# poParentStreams causes problems on Posix, so we simply disable it:
var options = options - {poParentStreams}
assert n > 0
@ -218,12 +218,16 @@ when not defined(useNimRtl):
var p = startCmd(command, options=options)
var outp = outputStream(p)
result = TaintedString""
while running(p) or not atEnd(outp):
result.string.add(outp.readLine().string)
result.string.add("\n")
var line = newStringOfCap(120).TaintedString
while true:
if outp.readLine(line):
result.string.add(line.string)
result.string.add("\n")
elif not running(p): break
close(outp)
close(p)
when defined(Windows) and not defined(useNimRtl):
# We need to implement a handle stream for Windows:
type
@ -718,11 +722,14 @@ proc execCmdEx*(command: string, options: set[TProcessOption] = {
var p = startCmd(command, options)
var outp = outputStream(p)
result = (TaintedString"", -1)
var line = newStringOfCap(120).TaintedString
while true:
if result[1] == -1: result[1] = peekExitCode(p)
if result[1] != -1 and atEnd(outp): break
result[0].string.add(outp.readLine().string)
result[0].string.add("\n")
if outp.readLine(line):
result[0].string.add(line.string)
result[0].string.add("\n")
else:
result[1] = peekExitCode(p)
if result[1] != -1: break
close(outp)
close(p)

View file

@ -113,7 +113,7 @@ proc read[T](s: PStream, result: var T) =
proc readChar*(s: PStream): char =
## reads a char from the stream `s`. Raises `EIO` if an error occured.
## Returns '\0' as an EOF marker.
discard readData(s, addr(result), sizeof(result))
if readData(s, addr(result), sizeof(result)) != 1: result = '\0'
proc readBool*(s: PStream): bool =
## reads a bool from the stream `s`. Raises `EIO` if an error occured.
@ -238,7 +238,9 @@ type
proc fsClose(s: PStream) = close(PFileStream(s).f)
proc fsFlush(s: PStream) = flushFile(PFileStream(s).f)
{.push warning[Deprecated]: off.}
proc fsAtEnd(s: PStream): bool = return EndOfFile(PFileStream(s).f)
{.pop.}
proc fsSetPosition(s: PStream, pos: int) = setFilePos(PFileStream(s).f, pos)
proc fsGetPosition(s: PStream): int = return int(getFilePos(PFileStream(s).f))

View file

@ -46,7 +46,7 @@ proc loadUnidecodeTable*(datafile = "unidecode.dat") =
newSeq(translationTable, 0xffff)
var i = 0
for line in lines(datafile):
translationTable[i] = line
translationTable[i] = line.string
inc(i)
proc unidecode*(s: string): string =

View file

@ -797,6 +797,8 @@ when taintMode:
## turned on. Use the ``-d:taintMode``
## command line switch to turn the taint
## mode on.
proc len*(s: TaintedString): int {.borrow.}
else:
type TaintedString* = string