]> Sergey Matveev's repositories - godlighty.git/blobdiff - dirlist.go
Use mtime instead of ctime
[godlighty.git] / dirlist.go
index 86c65f49dc4212fa9e9babdbc7aaa238deefed52..0670692b02b77950578d33a37dbda6a51dfae01d 100644 (file)
@@ -1,19 +1,17 @@
-/*
-godlighty -- highly-customizable HTTP, HTTP/2, HTTPS server
-Copyright (C) 2021 Sergey Matveev <stargrave@stargrave.org>
-
-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 <http://www.gnu.org/licenses/>.
-*/
+// godlighty -- highly-customizable HTTP, HTTP/2, HTTPS server
+// Copyright (C) 2021-2024 Sergey Matveev <stargrave@stargrave.org>
+//
+// 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 <http://www.gnu.org/licenses/>.
 
 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) {
@@ -81,7 +81,10 @@ func dirList(
                if fi.IsDir() {
                        file.IsDir = true
                } else {
-                       file.Type = mediaType(file.Name, cfg.MIMEOverride)
+                       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)
        }