diff --git a/src/e9p_msg.erl b/src/e9p_msg.erl index 7ce8222..a2789af 100644 --- a/src/e9p_msg.erl +++ b/src/e9p_msg.erl @@ -272,21 +272,33 @@ do_encode(#tread{fid = FID, offset = Offset, len = Len}) -> {?Tread, <>}; do_encode(#rread{data = Data}) -> Len = iolist_size(Data), - {?Rread, [<>, Data]}. - -encode_stat(#{ - type := Type, - dev := Dev, - qid := QID, - mode := Mode, - atime := Atime, - mtime := Mtime, - length := Len, - name := Name, - uid := Uid, - gid := Gid, - muid := MUid - }) -> + {?Rread, [<> | Data]}. + +encode_stat(Stat) -> + #{ + type := Type, + dev := Dev, + qid := QID, + mode := Mode, + atime := Atime, + mtime := Mtime, + length := Len, + name := Name, + uid := Uid, + gid := Gid, + muid := MUid + } = maps:merge( + Stat, + #{ + type => 0, + dev => 0, + mode => 0, + atime => 0, + mtime => 0, + uid => ~"", + gid => ~"", + muid => ~"" + }), Encoded = [<< Type:2/?int, Dev:4/?int @@ -309,8 +321,9 @@ encode_stat(#{ encode_str(Data0) -> Data = unicode:characters_to_binary(Data0), + true = is_binary(Data), Len = iolist_size(Data), - [<> | Data]. + [<>, Data]. binary_to_qid(<>) -> #{type => Type, version => Version, path => Path, state => []}. diff --git a/src/e9p_unfs.erl b/src/e9p_unfs.erl index c39c8ee..0a3ea7e 100644 --- a/src/e9p_unfs.erl +++ b/src/e9p_unfs.erl @@ -106,15 +106,10 @@ file_info_to_stat( true -> filename:basename(Path) end, #{ - type => 0, - dev => 0, qid => QID, mode => Mode, atime => Atime, mtime => Mtime, length => Len, - name => Name, - uid => ~"", - gid => ~"", - muid => ~"" + name => Name }.