From d74625dd5e370ccc5ab17a79a6860126dd715452 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 9 Jul 2016 14:19:56 +0200 Subject: Truncate --- meta/info.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'meta') 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 -- cgit v1.2.3