Added fallback if renaming cant move an upload

This commit is contained in:
Leon Mika 2026-03-05 22:48:38 +11:00
parent 891d904d9c
commit 76ed54f119
3 changed files with 40 additions and 4 deletions

View file

@ -148,7 +148,7 @@ func (b *Builder) renderFeeds(ctx buildContext, postIter iter.Seq[models.Maybe[*
Content: string(renderedPost.HTML),
// TO FIX: Created should be first published
Created: post.PublishedAt,
Updated: post.PublishedAt,
Updated: post.UpdatedAt,
})
items++

View file

@ -26,12 +26,46 @@ func (p *Provider) AdoptFile(site models.Site, up models.Upload, filename string
return err
}
if err := os.Rename(filename, fullPath); err != nil {
if err := os.Rename(filename, fullPath); err == nil {
return nil
}
// Can't rename, possibly because of a cross-link device issue. So copy instead
if err := moveFile(filename, fullPath); err != nil {
return err
}
return nil
}
func moveFile(src, dst string) error {
if err := copyFile(src, dst); err != nil {
_ = os.Remove(dst)
return err
}
_ = os.Remove(src)
return nil
}
func copyFile(src, dst string) error {
in, err := os.Open(src)
if err != nil {
return err
}
defer in.Close()
out, err := os.Create(dst)
if err != nil {
return err
}
defer out.Close()
if _, err = io.Copy(out, in); err != nil {
return err
}
return err
}
func (p *Provider) OpenUpload(site models.Site, up models.Upload) (io.ReadCloser, error) {
fullPath := p.uploadFileName(site, up)
return os.Open(fullPath)