]> git.giacomolli.uk - onechat/blobdiff - backup_archive.go
Order daemon and storage declarations
[onechat] / backup_archive.go
index 0c3544fdf4b7e4be3b0621e269e90bfbd6aa9817..35a389cbcde7856ac14d41d02eb90311628c5019 100644 (file)
@@ -13,6 +13,25 @@ import (
        "strings"
 )
 
+// BackupReader checks cancellation between reads of an archive or file.
+type BackupReader struct {
+       ctx    context.Context
+       reader io.Reader
+}
+
+func (r BackupReader) Read(data []byte) (int, error) {
+       if r.ctx.Err() != nil {
+               return 0, r.ctx.Err()
+       }
+
+       count, err := r.reader.Read(data)
+       if err != nil {
+               return count, fmt.Errorf("read backup data: %w", err)
+       }
+
+       return count, nil
+}
+
 // backupArchive writes the files in root to path through a private temporary
 // file and a rename. Only directories and regular files enter the archive.
 func backupArchive(ctx context.Context, root, path string) (size int64, err error) {
@@ -197,25 +216,6 @@ func backupExtract(ctx context.Context, path, root string) (err error) {
        return nil
 }
 
-// BackupReader checks cancellation between reads of an archive or file.
-type BackupReader struct {
-       ctx    context.Context
-       reader io.Reader
-}
-
-func (r BackupReader) Read(data []byte) (int, error) {
-       if r.ctx.Err() != nil {
-               return 0, r.ctx.Err()
-       }
-
-       count, err := r.reader.Read(data)
-       if err != nil {
-               return count, fmt.Errorf("read backup data: %w", err)
-       }
-
-       return count, nil
-}
-
 // backupCopyFile copies the size fixed at the snapshot of path. Growth after
 // that point is not part of the copy, and a shorter file is an error.
 func backupCopyFile(ctx context.Context, out io.Writer, path string, size int64) (err error) {