aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tx.go13
1 files changed, 9 insertions, 4 deletions
diff --git a/tx.go b/tx.go
index cc2b13f..a9781f2 100644
--- a/tx.go
+++ b/tx.go
@@ -239,10 +239,15 @@ func (tx *Tx) close() {
// using the database while a copy is in progress.
// Copy will write exactly tx.Size() bytes into the writer.
func (tx *Tx) Copy(w io.Writer) error {
- // Open reader on the database.
- f, err := os.OpenFile(tx.db.path, os.O_RDONLY|odirect, 0)
- if err != nil {
- return err
+ var f *os.File
+ var err error
+
+ // Attempt to open reader directly.
+ if f, err = os.OpenFile(tx.db.path, os.O_RDONLY|odirect, 0); err != nil {
+ // Fallback to a regular open if that doesn't work.
+ if f, err = os.OpenFile(tx.db.path, os.O_RDONLY, 0); err != nil {
+ return err
+ }
}
// Copy the meta pages.