fix: Close files immediately in archive cmd

This commit is contained in:
Felicitas Pojtinger
2021-12-18 20:57:30 +01:00
parent d075c2cd21
commit 4efc0ae249
2 changed files with 20 additions and 2 deletions

View File

@@ -105,7 +105,6 @@ func (o *Operations) Archive(
if err != nil { if err != nil {
return []*tar.Header{}, err return []*tar.Header{}, err
} }
defer f.Close()
signer, sign, err := signature.Sign(f, writer.DriveIsRegular, o.pipes.Signature, o.crypto.Identity) signer, sign, err := signature.Sign(f, writer.DriveIsRegular, o.pipes.Signature, o.crypto.Identity)
if err != nil { if err != nil {
@@ -186,6 +185,12 @@ func (o *Operations) Archive(
dirty = true dirty = true
if !file.Info.Mode().IsRegular() { if !file.Info.Mode().IsRegular() {
if f != nil {
if err := f.Close(); err != nil {
return []*tar.Header{}, err
}
}
continue continue
} }
@@ -232,6 +237,10 @@ func (o *Operations) Archive(
if err := encryptor.Close(); err != nil { if err := encryptor.Close(); err != nil {
return []*tar.Header{}, err return []*tar.Header{}, err
} }
if err := f.Close(); err != nil {
return []*tar.Header{}, err
}
} }
if err := cleanup(&dirty); err != nil { if err := cleanup(&dirty); err != nil {

View File

@@ -101,7 +101,6 @@ func (o *Operations) Update(
if err != nil { if err != nil {
return []*tar.Header{}, err return []*tar.Header{}, err
} }
defer f.Close()
signer, sign, err := signature.Sign(f, writer.DriveIsRegular, o.pipes.Signature, o.crypto.Identity) signer, sign, err := signature.Sign(f, writer.DriveIsRegular, o.pipes.Signature, o.crypto.Identity)
if err != nil { if err != nil {
@@ -185,6 +184,12 @@ func (o *Operations) Update(
dirty = true dirty = true
if !file.Info.Mode().IsRegular() { if !file.Info.Mode().IsRegular() {
if f != nil {
if err := f.Close(); err != nil {
return []*tar.Header{}, err
}
}
continue continue
} }
@@ -231,6 +236,10 @@ func (o *Operations) Update(
if err := encryptor.Close(); err != nil { if err := encryptor.Close(); err != nil {
return []*tar.Header{}, err return []*tar.Header{}, err
} }
if err := f.Close(); err != nil {
return []*tar.Header{}, err
}
} else { } else {
hdr.Size = 0 // Don't try to seek after the record hdr.Size = 0 // Don't try to seek after the record