From 31d5f306371a4b1c683dadb0d582b2d676419440 Mon Sep 17 00:00:00 2001 From: vijay korimilli Date: Sat, 7 Sep 2019 20:53:04 -0700 Subject: [PATCH] Handle filenames with special characters #131 --- internal/photoprism/indexer.go | 5 +++++ internal/photoprism/mediafile.go | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/photoprism/indexer.go b/internal/photoprism/indexer.go index 03cf2a125..dcba8ebf1 100644 --- a/internal/photoprism/indexer.go +++ b/internal/photoprism/indexer.go @@ -380,6 +380,11 @@ func (i *Indexer) IndexAll() map[string]bool { indexed := make(map[string]bool) err := filepath.Walk(i.originalsPath(), func(filename string, fileInfo os.FileInfo, err error) error { + defer func() { + if err := recover(); err != nil { + log.Printf("Could not index file %s due to an unexpected error: %s", filename, err) + } + }() if err != nil || indexed[filename] { return nil } diff --git a/internal/photoprism/mediafile.go b/internal/photoprism/mediafile.go index d8eeb14c2..b1bbc2e64 100644 --- a/internal/photoprism/mediafile.go +++ b/internal/photoprism/mediafile.go @@ -7,6 +7,7 @@ import ( "net/http" "os" "path/filepath" + "regexp" "sort" "strings" "time" @@ -269,7 +270,8 @@ func (m *MediaFile) EditedFilename() string { // RelatedFiles returns files which are related to this file. func (m *MediaFile) RelatedFiles() (result MediaFiles, mainFile *MediaFile, err error) { baseFilename := m.DirectoryBasename() - + // escape any meta characters in the file name + baseFilename = regexp.QuoteMeta(baseFilename) matches, err := filepath.Glob(baseFilename + "*") if err != nil {