From 77ff92dc786d343a8c1d2a614ac734c40df3102b Mon Sep 17 00:00:00 2001 From: Cory Schwartz Date: Thu, 15 Apr 2021 23:47:52 -0700 Subject: [PATCH 1/2] io/dagreader.go --- io/dagreader.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/io/dagreader.go b/io/dagreader.go index 374b50916..9fb37afff 100644 --- a/io/dagreader.go +++ b/io/dagreader.go @@ -56,9 +56,27 @@ func NewDagReader(ctx context.Context, n ipld.Node, serv ipld.NodeGetter) (DagRe } switch fsNode.Type() { - case unixfs.TFile, unixfs.TRaw: + case unixfs.TFile: size = fsNode.FileSize() + case unixfs.TRaw: + stat, err := n.Stat() + if err != nil { + return nil, err + } + size = uint64(stat.DataSize) + for _, link := range n.Links() { + ln, err := link.GetNode(ctx, serv) + if err != nil { + return nil, err + } + stat, err := ln.Stat() + if err != nil { + return nil, err + } + size += uint64(stat.DataSize) + } + case unixfs.TDirectory, unixfs.THAMTShard: // Dont allow reading directories return nil, ErrIsDir From 7e96bad956c88140fe130b2ad2129c486e546408 Mon Sep 17 00:00:00 2001 From: Cory Schwartz Date: Fri, 16 Apr 2021 15:29:59 -0700 Subject: [PATCH 2/2] Fix in size func --- io/dagreader.go | 20 +------------------- unixfs.go | 4 ++-- 2 files changed, 3 insertions(+), 21 deletions(-) diff --git a/io/dagreader.go b/io/dagreader.go index 9fb37afff..374b50916 100644 --- a/io/dagreader.go +++ b/io/dagreader.go @@ -56,27 +56,9 @@ func NewDagReader(ctx context.Context, n ipld.Node, serv ipld.NodeGetter) (DagRe } switch fsNode.Type() { - case unixfs.TFile: + case unixfs.TFile, unixfs.TRaw: size = fsNode.FileSize() - case unixfs.TRaw: - stat, err := n.Stat() - if err != nil { - return nil, err - } - size = uint64(stat.DataSize) - for _, link := range n.Links() { - ln, err := link.GetNode(ctx, serv) - if err != nil { - return nil, err - } - stat, err := ln.Stat() - if err != nil { - return nil, err - } - size += uint64(stat.DataSize) - } - case unixfs.TDirectory, unixfs.THAMTShard: // Dont allow reading directories return nil, ErrIsDir diff --git a/unixfs.go b/unixfs.go index 05abf6576..555d24efc 100644 --- a/unixfs.go +++ b/unixfs.go @@ -159,9 +159,9 @@ func size(pbdata *pb.Data) (uint64, error) { switch pbdata.GetType() { case pb.Data_Directory, pb.Data_HAMTShard: return 0, errors.New("can't get data size of directory") - case pb.Data_File: + case pb.Data_File, pb.Data_Raw: return pbdata.GetFilesize(), nil - case pb.Data_Symlink, pb.Data_Raw: + case pb.Data_Symlink: return uint64(len(pbdata.GetData())), nil default: return 0, errors.New("unrecognized node data type")