Skip to content

Commit

Permalink
Closes #4
Browse files Browse the repository at this point in the history
  • Loading branch information
fasterthanlime committed Apr 18, 2018
1 parent a708ea6 commit fc1ce25
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 13 deletions.
32 changes: 32 additions & 0 deletions szextractor/lib.go
@@ -0,0 +1,32 @@
package szextractor

import (
"sync"

"github.com/itchio/sevenzip-go/sz"
"github.com/itchio/wharf/state"
)

var _libMutex sync.Mutex
var _lib *sz.Lib
var _libErr error
var _loadOnce sync.Once

func GetLib(consumer *state.Consumer) (*sz.Lib, error) {
_libMutex.Lock()
defer _libMutex.Unlock()

_loadOnce.Do(func() {
_libErr = EnsureDeps(consumer)
if _libErr != nil {
return
}

_lib, _libErr = sz.NewLib()
})

if _libErr != nil {
return nil, _libErr
}
return _lib, nil
}
14 changes: 1 addition & 13 deletions szextractor/szextractor.go
Expand Up @@ -33,7 +33,6 @@ type szExtractor struct {
consumer *state.Consumer
saveConsumer savior.SaveConsumer

lib *sz.Lib
archive *sz.Archive
in *sz.InStream
format string
Expand Down Expand Up @@ -72,16 +71,10 @@ func New(file eos.File, consumer *state.Consumer) (SzExtractor, error) {
se.free()
})

err := EnsureDeps(consumer)
if err != nil {
return nil, errors.Wrap(err, "ensuring 7-zip deps")
}

lib, err := sz.NewLib()
lib, err := GetLib(consumer)
if err != nil {
return nil, errors.Wrap(err, "opening 7-zip library")
}
se.lib = lib

stats, err := file.Stat()
if err != nil {
Expand Down Expand Up @@ -425,11 +418,6 @@ func (se *szExtractor) free() {
se.in = nil
}

if se.lib != nil {
se.lib.Free()
se.lib = nil
}

se.freed = true
}

Expand Down

0 comments on commit fc1ce25

Please sign in to comment.