cleaned up various modules

This commit is contained in:
Araq
2014-09-19 00:54:01 +02:00
parent 4367fb26ad
commit d4bc11b654
12 changed files with 65 additions and 64 deletions

View File

@@ -16,14 +16,14 @@ type
TDbConn* = PPGconn ## encapsulates a database connection
TRow* = seq[string] ## a row of a dataset. NULL database values will be
## transformed always to the empty string.
EDb* = object of EIO ## exception that is raised if a database error occurs
EDb* = object of IOError ## exception that is raised if a database error occurs
TSqlQuery* = distinct string ## an SQL query string
FDb* = object of FIO ## effect that denotes a database operation
FReadDb* = object of FDB ## effect that denotes a read operation
FWriteDb* = object of FDB ## effect that denotes a write operation
FDb* = object of IOEffect ## effect that denotes a database operation
FReadDb* = object of FDb ## effect that denotes a read operation
FWriteDb* = object of FDb ## effect that denotes a write operation
proc sql*(query: string): TSqlQuery {.noSideEffect, inline.} =
## constructs a TSqlQuery from the string `query`. This is supposed to be
## used as a raw-string-literal modifier:

View File

@@ -1,20 +1,21 @@
import posix, strutils, os
type
Tstatfs {.importc: "struct statfs64",
header: "<sys/statfs.h>", final, pure.} = object
f_type: int
f_bsize: int
f_blocks: int
f_bfree: int
f_bavail: int
f_files: int
f_ffree: int
f_fsid: int
f_namelen: int
when false:
type
Tstatfs {.importc: "struct statfs64",
header: "<sys/statfs.h>", final, pure.} = object
f_type: int
f_bsize: int
f_blocks: int
f_bfree: int
f_bavail: int
f_files: int
f_ffree: int
f_fsid: int
f_namelen: int
proc statfs(path: string, buf: var Tstatfs): int {.
importc, header: "<sys/vfs.h>".}
proc statfs(path: string, buf: var Tstatfs): int {.
importc, header: "<sys/vfs.h>".}
proc getSystemVersion*(): string =
@@ -23,7 +24,7 @@ proc getSystemVersion*(): string =
var unix_info: TUtsname
if uname(unix_info) != 0:
os.OSError()
os.raiseOSError(osLastError())
if $unix_info.sysname == "Linux":
# Linux

View File

@@ -375,7 +375,7 @@ proc getFileSize*(file: string): BiggestInt =
var hFile = findFirstFileA(file, fileData)
if hFile == INVALID_HANDLE_VALUE:
raise newException(EIO, $getLastError())
raise newException(IOError, $getLastError())
return fileData.nFileSizeLow
@@ -386,10 +386,10 @@ proc getDiskFreeSpaceEx*(lpDirectoryName: cstring, lpFreeBytesAvailableToCaller,
proc getPartitionInfo*(partition: string): TPartitionInfo =
## Retrieves partition info, for example ``partition`` may be ``"C:\"``
var FreeBytes, TotalBytes, TotalFreeBytes: TFiletime
var res = getDiskFreeSpaceEx(r"C:\", FreeBytes, TotalBytes,
TotalFreeBytes)
return (FreeBytes, TotalBytes)
var freeBytes, totalBytes, totalFreeBytes: TFiletime
discard getDiskFreeSpaceEx(r"C:\", freeBytes, totalBytes,
totalFreeBytes)
return (freeBytes, totalBytes)
when isMainModule:
var r = getMemoryInfo()

View File

@@ -15,13 +15,13 @@
when defined(Windows):
proc readLineFromStdin*(prompt: string): TaintedString {.
tags: [FReadIO, FWriteIO].} =
tags: [ReadIOEffect, WriteIOEffect].} =
## Reads a line from stdin.
stdout.write(prompt)
result = readLine(stdin)
proc readLineFromStdin*(prompt: string, line: var TaintedString): bool {.
tags: [FReadIO, FWriteIO].} =
tags: [ReadIOEffect, WriteIOEffect].} =
## Reads a `line` from stdin. `line` must not be
## ``nil``! May throw an IO exception.
## A line of text may be delimited by ``CR``, ``LF`` or
@@ -35,7 +35,7 @@ else:
import readline, history
proc readLineFromStdin*(prompt: string): TaintedString {.
tags: [FReadIO, FWriteIO].} =
tags: [ReadIOEffect, WriteIOEffect].} =
var buffer = readline.readLine(prompt)
if isNil(buffer): quit(0)
result = TaintedString($buffer)
@@ -44,7 +44,7 @@ else:
readline.free(buffer)
proc readLineFromStdin*(prompt: string, line: var TaintedString): bool {.
tags: [FReadIO, FWriteIO].} =
tags: [ReadIOEffect, WriteIOEffect].} =
var buffer = readline.readLine(prompt)
if isNil(buffer): quit(0)
line = TaintedString($buffer)

View File

@@ -13,18 +13,18 @@ import
streams, libzip, times, os
type
TZipArchive* = object of TObject ## represents a zip archive
mode: TFileMode
TZipArchive* = object of RootObj ## represents a zip archive
mode: FileMode
w: PZip
proc zipError(z: var TZipArchive) =
var e: ref EIO
var e: ref IOError
new(e)
e.msg = $zip_strerror(z.w)
raise e
proc open*(z: var TZipArchive, filename: string, mode: TFileMode = fmRead): bool =
proc open*(z: var TZipArchive, filename: string, mode: FileMode = fmRead): bool =
## Opens a zip file for reading, writing or appending. All file modes are
## supported. Returns true iff successful, false otherwise.
var err, flags: int32
@@ -72,7 +72,7 @@ proc addFile*(z: var TZipArchive, file: string) =
proc mySourceCallback(state, data: pointer, len: int,
cmd: TZipSourceCmd): int {.cdecl.} =
var src = cast[PStream](state)
var src = cast[Stream](state)
case cmd
of ZIP_SOURCE_OPEN:
if src.setPositionImpl != nil: setPosition(src, 0) # reset
@@ -93,7 +93,7 @@ proc mySourceCallback(state, data: pointer, len: int,
of constZIP_SOURCE_FREE: GC_unref(src)
else: assert(false)
proc addFile*(z: var TZipArchive, dest: string, src: PStream) =
proc addFile*(z: var TZipArchive, dest: string, src: Stream) =
## Adds a file named with `dest` to the archive `z`. `dest`
## may contain a path. The file's content is read from the `src` stream.
assert(z.mode != fmRead)
@@ -107,14 +107,14 @@ proc addFile*(z: var TZipArchive, dest: string, src: PStream) =
# -------------- zip file stream ---------------------------------------------
type
TZipFileStream = object of TStream
TZipFileStream = object of StreamObj
f: PZipFile
PZipFileStream* =
ref TZipFileStream ## a reader stream of a file within a zip archive
proc fsClose(s: PStream) = zip_fclose(PZipFileStream(s).f)
proc fsReadData(s: PStream, buffer: pointer, bufLen: int): int =
proc fsClose(s: Stream) = zip_fclose(PZipFileStream(s).f)
proc fsReadData(s: Stream, buffer: pointer, bufLen: int): int =
result = zip_fread(PZipFileStream(s).f, buffer, bufLen)
proc newZipFileStream(f: PZipFile): PZipFileStream =
@@ -144,7 +144,7 @@ iterator walkFiles*(z: var TZipArchive): string =
inc(i)
proc extractFile*(z: var TZipArchive, srcFile: string, dest: PStream) =
proc extractFile*(z: var TZipArchive, srcFile: string, dest: Stream) =
## extracts a file from the zip archive `z` to the destination stream.
var strm = getStream(z, srcFile)
while true: