further steps to get rid of deprecated endOfFile and readLine

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

View File

@@ -219,8 +219,8 @@ proc LoadConfigs*(cfg = "nimrod.cfg") =
if libpath == "":
# choose default libpath:
var prefix = getPrefixDir()
if (prefix == "/usr"): libpath = "/usr/lib/nimrod"
elif (prefix == "/usr/local"): libpath = "/usr/local/lib/nimrod"
if prefix == "/usr": libpath = "/usr/lib/nimrod"
elif prefix == "/usr/local": libpath = "/usr/local/lib/nimrod"
else: libpath = joinPath(prefix, "lib")
if optSkipConfigFile notin gGlobalOptions:

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

View File

@@ -1,6 +1,6 @@
discard """
line: 9
errmsg: "'a' is deprecated [Deprecated]"
errormsg: "'a' is deprecated [Deprecated]"
"""
var

View File

@@ -117,8 +117,8 @@ proc callCompiler(cmdTemplate, filename, options: string): TSpec =
var outp = p.outputStream
var suc = ""
var err = ""
while running(p) or not atEnd(outp):
var x = outp.readLine().string
var x = newStringOfCap(120)
while outp.readLine(x.TaintedString) or running(p):
if x =~ pegOfInterest:
# `s` should contain the last error/warning message
err = x

View File

@@ -1,6 +1,7 @@
version 0.8.14
==============
- bug: compiler uses full file names again
- stdlib and compiler should not use deprecated endOfFile and readline
version 0.9.0

View File

@@ -46,7 +46,7 @@ Changes affecting backwards compatibility
raise hooks.
- Changed exception handling/error reporting for ``os.removeFile`` and
``os.removeDir``.
- The algorithm for searching and loading configuration files have been changed
- The algorithm for searching and loading configuration files has been changed.
- Operators now have diffent precedence rules: Assignment-like operators
(like ``*=``) are now special-cased.
- The fields in ``TStream`` have been renamed to have an ``Impl`` suffix