added another system.open; bugfix: koch clean may not break .git dirs anymore

This commit is contained in:
Araq
2011-04-03 23:12:03 +02:00
parent b38c7adad1
commit b3e24382a0
4 changed files with 15 additions and 9 deletions

View File

@@ -180,7 +180,7 @@ proc cleanAux(dir: string) =
of "nimcache":
echo "removing dir: ", path
removeDir(path)
of "dist", ".bzr":
of "dist", ".git":
nil
else:
cleanAux(path)

View File

@@ -1477,15 +1477,22 @@ when not defined(EcmaScript) and not defined(NimrodVM):
## Opens a file named `filename` with given `mode`.
##
## Default mode is readonly. Returns true iff the file could be opened.
## This throws no exception if the file could not be opened. The reason is
## that the programmer needs to provide an appropriate error message
## anyway.
## This throws no exception if the file could not be opened.
proc Open*(f: var TFile, filehandle: TFileHandle,
mode: TFileMode = fmRead): Bool
## Creates a ``TFile`` from a `filehandle` with given `mode`.
##
## Default mode is readonly. Returns true iff the file could be opened.
proc Open*(filename: string,
mode: TFileMode = fmRead, bufSize: int = -1): TFile =
## Opens a file named `filename` with given `mode`.
##
## Default mode is readonly. Raises an ``IO`` exception if the file
## could not be opened.
if not open(result, filename, mode, bufSize):
raise newException(EIO, "cannot open: " & filename)
proc reopen*(f: TFile, filename: string, mode: TFileMode = fmRead): bool
## reopens the file `f` with given `filename` and `mode`. This
@@ -1582,10 +1589,7 @@ when not defined(EcmaScript) and not defined(NimrodVM):
iterator lines*(filename: string): string =
## Iterate over any line in the file named `filename`.
## If the file does not exist `EIO` is raised.
var
f: TFile
if not open(f, filename):
raise newException(EIO, "cannot open: " & filename)
var f = open(filename)
var res = ""
while not endOfFile(f):
rawReadLine(f, res)

View File

@@ -1,3 +1,4 @@
- clean up the tests!
- thread support: threadvar on Windows seems broken;
add --deadlock_prevention:on|off switch
- built-in serialization

View File

@@ -67,7 +67,8 @@ Additions
- The *interactive mode* (REPL) has been improved and documented for the
first time.
- Added the ``linearScanEnd``, ``unroll``, ``shallow`` pragmas.
- Added ``system.reset``.
- Added ``system.reset`` and a version of ``system.open`` that
returns a ``TFile`` and raises an exception in case of an error.
- The compiler now might use a hashing for string case statements depending
on the number of string literals in the case statement.