diff options
author | bptato <nincsnevem662@gmail.com> | 2022-12-19 01:14:01 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2022-12-19 01:14:01 +0100 |
commit | 8419f31aca48d73cdecbcc90992884db5d0ffcfc (patch) | |
tree | ff5b0deca8374d4b7e121a3174649ef6c6d4a129 /src/io/file.nim | |
parent | a04485f298d75ccbd8fc0b6fdd7be9ca63817cb0 (diff) | |
download | chawan-8419f31aca48d73cdecbcc90992884db5d0ffcfc.tar.gz |
File browser: sort files
Diffstat (limited to 'src/io/file.nim')
-rw-r--r-- | src/io/file.nim | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/io/file.nim b/src/io/file.nim index b35aee09..092810e2 100644 --- a/src/io/file.nim +++ b/src/io/file.nim @@ -1,3 +1,4 @@ +import algorithm import os import streams import tables @@ -20,7 +21,11 @@ proc loadDir(url: URL, path: string, ostream: Stream) = <H1>Directory list of """ & path & """</H1> [DIR] <A HREF="../">../</A></br> """) + var fs: seq[(PathComponent, string)] for pc, file in walkDir(path, relative = true): + fs.add((pc, file)) + fs.sort(cmp = proc(a, b: (PathComponent, string)): int = cmp(a[1], b[1])) + for (pc, file) in fs: case pc of pcDir: ostream.write("[DIR] ") @@ -41,7 +46,21 @@ proc loadDir(url: URL, path: string, ostream: Stream) = ostream.flush() proc loadSymlink(path: string, ostream: Stream) = - discard + ostream.swrite(0) + ostream.swrite(200) # ok + ostream.swrite(newHeaderList({"Content-Type": "text/html"}.toTable())) + let sl = expandSymlink(path) + ostream.write(""" +<HTML> +<HEAD> +<TITLE>Symlink view<TITLE> +</HEAD> +<BODY> +Symbolic link to <A HREF="""" & sl & """">""" & sl & """</A></br> +</BODY> +</HTML>""") + ostream.flush() + proc loadFile*(url: URL, ostream: Stream) = when defined(windows) or defined(OS2) or defined(DOS): |