X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=dirlist.go;h=0670692b02b77950578d33a37dbda6a51dfae01d;hb=HEAD;hp=82b360650175b46ee7a1f5cc9e5caedd649219c2;hpb=5d3931d2a2671ca97cfc0c9f466bb066f2d92e90;p=godlighty.git diff --git a/dirlist.go b/dirlist.go index 82b3606..0670692 100644 --- a/dirlist.go +++ b/dirlist.go @@ -1,19 +1,17 @@ -/* -godlighty -- highly-customizable HTTP, HTTP/2, HTTPS server -Copyright (C) 2021-2022 Sergey Matveev - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, version 3 of the License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// godlighty -- highly-customizable HTTP, HTTP/2, HTTPS server +// Copyright (C) 2021-2024 Sergey Matveev +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 3 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . package godlighty @@ -22,6 +20,7 @@ import ( "html/template" "io/fs" "os" + "path" "sort" "time" @@ -57,11 +56,12 @@ type DirListFile struct { IsDir bool Type string ModTime string + Symlink string } func dirList( cfg *HostCfg, - dir string, + dir, pth string, entries []os.DirEntry, readme string, ) (*os.File, error) { @@ -83,6 +83,9 @@ func dirList( } else { file.Type = mediaType(file.Name, cfg.MIMEs) } + if (entry.Type() & fs.ModeSymlink) > 0 { + file.Symlink, _ = os.Readlink(path.Join(pth, fi.Name())) + } files = append(files, file) } fd, err := os.CreateTemp("", "godlist-dirlist-")