Add resumable downloads, download paths, queue controls and history

This commit is contained in:
SirBlob committed 2026-11-01 13:36:29 -05:00
1 parent 434f6441da
commit 6027cfabb9
43 files changed
+2138 -291

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
package files
import (
"errors"
"os"
"path/filepath"
"strings"
)
const (
PartFileName = ".download.part"
JobFileName = ".job.json"
temporaryPrefix = ".ddc-tmp-"
temporaryWildcard = temporaryPrefix + "*"
)
func IsInternal(name string) bool {
return name == PartFileName || name == JobFileName || strings.HasPrefix(name, temporaryPrefix)
}
func WriteAtomically(path string, data []byte) error {
temporary, err := os.CreateTemp(filepath.Dir(path), temporaryWildcard)
if err != nil {
return err
}
_, writeErr := temporary.Write(data)
closeErr := temporary.Close()
if writeErr != nil || closeErr != nil {
os.Remove(temporary.Name())
return errors.Join(writeErr, closeErr)
}
if err := os.Chmod(temporary.Name(), 0o644); err != nil {
os.Remove(temporary.Name())
return err
}
if err := os.Rename(temporary.Name(), path); err != nil {
os.Remove(temporary.Name())
return err
}
return nil
}