aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-09 14:19:56 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-09 14:19:56 +0200
commitd74625dd5e370ccc5ab17a79a6860126dd715452 (patch)
tree7f209888d4cb5736379486fabc4f92bab0a8b5d1
parent79cb847f46928401b152bc052addad3458565e7a (diff)
Truncate
-rw-r--r--meta/info.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/meta/info.go b/meta/info.go
index bdcb894..fd670ce 100644
--- a/meta/info.go
+++ b/meta/info.go
@@ -62,15 +62,22 @@ func (i Info) GetPieces() []Piece {
// Open N-th file and allocate required path on demand
func (i Info) Open(n int) (*os.File, error) {
var p string
+ var sz int
if len(i.Files) == 0 {
p = i.Name
+ sz = i.Length
} else {
p = path.Join(i.Name, i.Files[n].Name())
if err := os.MkdirAll(p, 0755); err != nil {
return nil, err
}
+ sz = i.Files[n].Length
}
- return os.OpenFile(i.Name, os.O_RDWR|os.O_CREATE, 0644)
+ fd, err := os.OpenFile(p, os.O_RDWR|os.O_CREATE, 0644)
+ if err != nil {
+ return nil, err
+ }
+ return fd, fd.Truncate(int64(sz))
}
// Offset of piece in gross buffer