Skip to content

Commit 1b159b9

Browse files
author
IDF
committed
Made a file for common functions
1 parent 219c00a commit 1b159b9

File tree

4 files changed

+34
-35
lines changed

4 files changed

+34
-35
lines changed

src/utils/cat.nim

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
import private/errors
1+
import private/[errors, helpers]
22

33
const MaxBuffLen = 2048
44

5-
proc read(fd: cint, buf: pointer, count: cint): cint {.importc.}
6-
75
proc cat(filename: string) =
86
var f: File
97
try:

src/utils/private/helpers.nim

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import posix, posix_utils, os
2+
3+
proc utimensat*(fd: int, path: cstring, times: ptr array[2, TimeSpec], flags: cint): cint{.importc, header:"<sys/stat.h>".}
4+
proc read*(fd: cint, buf: pointer, count: cint): cint {.importc.}
5+
6+
var
7+
UTIME_OMIT*{.importc, header:"<sys/stat.h>".}: cint
8+
UTIME_NOW*{.importc, header:"<sys/stat.h>".}: cint
9+
AT_FDCWD*{.importc, header:"<fcntl.h>".}: cint
10+
11+
proc isDotDot*(filename: string): bool =
12+
let base = filename.extractFileName
13+
return base == "." or base == ".."
14+
15+
iterator readDir*(dirname: string): string =
16+
let dirptr = opendir(dirname)
17+
18+
var dirent = readdir(dirptr)
19+
while dirent != nil:
20+
var filename: string
21+
for c in dirent.d_name:
22+
if c == '\0': break
23+
filename.add c
24+
if not filename.isDotDot:
25+
yield filename
26+
dirent = readdir(dirptr)
27+
discard closedir(dirptr)
28+
29+
proc isDir*(filename: string): bool =
30+
let stat = stat(filename)
31+
return S_ISDIR(stat.st_mode)

src/utils/rm.nim

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,10 @@
11
import posix, posix_utils, os
22
import parseopt
3-
import private/errors
3+
import private/[errors, helpers]
44

55
var
66
recurse, force: bool
77

8-
proc isDotDot(filename: string): bool =
9-
let base = filename.extractFileName
10-
return base == "." or base == ".."
11-
12-
iterator readDir(dirname: string): string =
13-
let dirptr = opendir(dirname)
14-
15-
var dirent = readdir(dirptr)
16-
while dirent != nil:
17-
var filename: string
18-
for c in dirent.d_name:
19-
if c == '\0': break
20-
filename.add c
21-
if not filename.isDotDot:
22-
yield filename
23-
dirent = readdir(dirptr)
24-
25-
discard closedir(dirptr)
26-
27-
proc isDir(filename: string): bool =
28-
let stat = stat(filename)
29-
return S_ISDIR(stat.st_mode)
30-
318
proc rmFileOrEmpty(filename: string) =
329
if not force and access(filename, W_OK) < 0:
3310
stdout.write "Remove write-protected file '", filename, "'? "

src/utils/touch.nim

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from os import fileExists
22
import posix
33
import parseopt, times
4-
import private/errors
4+
import private/[errors, helpers]
55

66
type
77
BitFlag* {.size: sizeof(cint).} = enum
@@ -10,13 +10,6 @@ type
1010
M
1111
BitFlags = set[BitFlag]
1212

13-
proc utimensat(fd: int, path: cstring, times: ptr array[2, TimeSpec], flags: cint): cint{.importc, header:"<sys/stat.h>".}
14-
15-
var
16-
UTIME_OMIT{.importc, header:"<sys/stat.h>".}: cint
17-
UTIME_NOW{.importc, header:"<sys/stat.h>".}: cint
18-
AT_FDCWD{.importc, header:"<fcntl.h>".}: cint
19-
2013
proc parseTimeToPosix(dateTime: string): posix.Time =
2114
var tm: Tm
2215
let parseDt = parse(dateTime, "YYYY-MM-dd/HH:mm:ss")

0 commit comments

Comments
 (0)