@@ -162,8 +162,8 @@ func readStream(stream *wasiStream, buf *byte, count uint, offset int64) int {
162162 }
163163
164164 libcErrno = 0
165- result := stream .in .BlockingRead (uint64 (count ))
166- if err := result . Err (); err != nil {
165+ list , err , isErr := stream .in .BlockingRead (uint64 (count )). Result ( )
166+ if isErr {
167167 if err .Closed () {
168168 libcErrno = 0
169169 return 0
@@ -174,9 +174,7 @@ func readStream(stream *wasiStream, buf *byte, count uint, offset int64) int {
174174 return - 1
175175 }
176176
177- dst := unsafe .Slice (buf , count )
178- list := result .OK ()
179- copy (dst , list .Slice ())
177+ copy (unsafe .Slice (buf , count ), list .Slice ())
180178 return int (list .Len ())
181179}
182180
@@ -202,8 +200,8 @@ func writeStream(stream *wasiStream, buf *byte, count uint, offset int64) int {
202200 if len > remaining {
203201 len = remaining
204202 }
205- result := stream .out .BlockingWriteAndFlush (cm .ToList (src [:len ]))
206- if err := result . Err (); err != nil {
203+ _ , err , isErr := stream .out .BlockingWriteAndFlush (cm .ToList (src [:len ])). Result ( )
204+ if isErr {
207205 if err .Closed () {
208206 libcErrno = 0
209207 return 0
@@ -248,13 +246,13 @@ func pread(fd int32, buf *byte, count uint, offset int64) int {
248246 return - 1
249247 }
250248
251- result := streams .d .Read (types .FileSize (count ), types .FileSize (offset ))
252- if err := result . Err (); err != nil {
253- libcErrno = errorCodeToErrno (* err )
249+ listEOF , err , isErr := streams .d .Read (types .FileSize (count ), types .FileSize (offset )). Result ( )
250+ if isErr {
251+ libcErrno = errorCodeToErrno (err )
254252 return - 1
255253 }
256254
257- list := result . OK () .F0
255+ list := listEOF .F0
258256 copy (unsafe .Slice (buf , count ), list .Slice ())
259257
260258 // TODO(dgryski): EOF bool is ignored?
@@ -285,14 +283,14 @@ func pwrite(fd int32, buf *byte, count uint, offset int64) int {
285283 return - 1
286284 }
287285
288- result := streams .d .Write (cm .NewList (buf , count ), types .FileSize (offset ))
289- if err := result . Err (); err != nil {
286+ n , err , isErr := streams .d .Write (cm .NewList (buf , count ), types .FileSize (offset )). Result ( )
287+ if isErr {
290288 // TODO(dgryski):
291- libcErrno = errorCodeToErrno (* err )
289+ libcErrno = errorCodeToErrno (err )
292290 return - 1
293291 }
294292
295- return int (* result . OK () )
293+ return int (n )
296294}
297295
298296// ssize_t lseek(int fd, off_t offset, int whence);
@@ -321,12 +319,12 @@ func lseek(fd int32, offset int64, whence int) int64 {
321319 case 1 : // SEEK_CUR
322320 stream .offset += offset
323321 case 2 : // SEEK_END
324- result := stream .d .Stat ()
325- if err := result . Err (); err != nil {
326- libcErrno = errorCodeToErrno (* err )
322+ stat , err , isErr := stream .d .Stat (). Result ()
323+ if isErr {
324+ libcErrno = errorCodeToErrno (err )
327325 return - 1
328326 }
329- stream .offset = int64 (result . OK () .Size ) + offset
327+ stream .offset = int64 (stat .Size ) + offset
330328 }
331329
332330 return int64 (stream .offset )
@@ -439,9 +437,9 @@ func mkdir(pathname *byte, mode uint32) int32 {
439437 return - 1
440438 }
441439
442- result := dir .d .CreateDirectoryAt (relPath )
443- if err := result . Err (); err != nil {
444- libcErrno = errorCodeToErrno (* err )
440+ _ , err , isErr := dir .d .CreateDirectoryAt (relPath ). Result ( )
441+ if isErr {
442+ libcErrno = errorCodeToErrno (err )
445443 return - 1
446444 }
447445
@@ -459,9 +457,9 @@ func rmdir(pathname *byte) int32 {
459457 return - 1
460458 }
461459
462- result := dir .d .RemoveDirectoryAt (relPath )
463- if err := result . Err (); err != nil {
464- libcErrno = errorCodeToErrno (* err )
460+ _ , err , isErr := dir .d .RemoveDirectoryAt (relPath ). Result ( )
461+ if isErr {
462+ libcErrno = errorCodeToErrno (err )
465463 return - 1
466464 }
467465
@@ -486,9 +484,9 @@ func rename(from, to *byte) int32 {
486484 return - 1
487485 }
488486
489- result := fromDir .d .RenameAt (fromRelPath , toDir .d , toRelPath )
490- if err := result . Err (); err != nil {
491- libcErrno = errorCodeToErrno (* err )
487+ _ , err , isErr := fromDir .d .RenameAt (fromRelPath , toDir .d , toRelPath ). Result ( )
488+ if isErr {
489+ libcErrno = errorCodeToErrno (err )
492490 return - 1
493491 }
494492
@@ -520,9 +518,9 @@ func symlink(from, to *byte) int32 {
520518
521519 // TODO(dgryski): check fromDir == toDir?
522520
523- result := fromDir .d .SymlinkAt (fromRelPath , toRelPath )
524- if err := result . Err (); err != nil {
525- libcErrno = errorCodeToErrno (* err )
521+ _ , err , isErr := fromDir .d .SymlinkAt (fromRelPath , toRelPath ). Result ( )
522+ if isErr {
523+ libcErrno = errorCodeToErrno (err )
526524 return - 1
527525 }
528526
@@ -554,9 +552,9 @@ func link(from, to *byte) int32 {
554552
555553 // TODO(dgryski): check fromDir == toDir?
556554
557- result := fromDir .d .LinkAt (0 , fromRelPath , toDir .d , toRelPath )
558- if err := result . Err (); err != nil {
559- libcErrno = errorCodeToErrno (* err )
555+ _ , err , isErr := fromDir .d .LinkAt (0 , fromRelPath , toDir .d , toRelPath ). Result ( )
556+ if isErr {
557+ libcErrno = errorCodeToErrno (err )
560558 return - 1
561559 }
562560
@@ -587,9 +585,9 @@ func fsync(fd int32) int32 {
587585 return - 1
588586 }
589587
590- result := streams .d .SyncData ()
591- if err := result . Err (); err != nil {
592- libcErrno = errorCodeToErrno (* err )
588+ _ , err , isErr := streams .d .SyncData (). Result ()
589+ if isErr {
590+ libcErrno = errorCodeToErrno (err )
593591 return - 1
594592 }
595593
@@ -607,13 +605,12 @@ func readlink(pathname *byte, buf *byte, count uint) int {
607605 return - 1
608606 }
609607
610- result := dir .d .ReadLinkAt (relPath )
611- if err := result . Err (); err != nil {
612- libcErrno = errorCodeToErrno (* err )
608+ s , err , isErr := dir .d .ReadLinkAt (relPath ). Result ( )
609+ if isErr {
610+ libcErrno = errorCodeToErrno (err )
613611 return - 1
614612 }
615613
616- s := * result .OK ()
617614 size := uintptr (count )
618615 if size > uintptr (len (s )) {
619616 size = uintptr (len (s ))
@@ -634,9 +631,9 @@ func unlink(pathname *byte) int32 {
634631 return - 1
635632 }
636633
637- result := dir .d .UnlinkFileAt (relPath )
638- if err := result . Err (); err != nil {
639- libcErrno = errorCodeToErrno (* err )
634+ _ , err , isErr := dir .d .UnlinkFileAt (relPath ). Result ( )
635+ if isErr {
636+ libcErrno = errorCodeToErrno (err )
640637 return - 1
641638 }
642639
@@ -661,13 +658,13 @@ func stat(pathname *byte, dst *Stat_t) int32 {
661658 return - 1
662659 }
663660
664- result := dir .d .StatAt (0 , relPath )
665- if err := result . Err (); err != nil {
666- libcErrno = errorCodeToErrno (* err )
661+ stat , err , isErr := dir .d .StatAt (0 , relPath ). Result ( )
662+ if isErr {
663+ libcErrno = errorCodeToErrno (err )
667664 return - 1
668665 }
669666
670- setStatFromWASIStat (dst , result . OK () )
667+ setStatFromWASIStat (dst , & stat )
671668
672669 return 0
673670}
@@ -690,13 +687,13 @@ func fstat(fd int32, dst *Stat_t) int32 {
690687 libcErrno = EBADF
691688 return - 1
692689 }
693- result := stream .d .Stat ()
694- if err := result . Err (); err != nil {
695- libcErrno = errorCodeToErrno (* err )
690+ stat , err , isErr := stream .d .Stat (). Result ()
691+ if isErr {
692+ libcErrno = errorCodeToErrno (err )
696693 return - 1
697694 }
698695
699- setStatFromWASIStat (dst , result . OK () )
696+ setStatFromWASIStat (dst , & stat )
700697
701698 return 0
702699}
@@ -745,13 +742,13 @@ func lstat(pathname *byte, dst *Stat_t) int32 {
745742 return - 1
746743 }
747744
748- result := dir .d .StatAt (0 , relPath )
749- if err := result . Err (); err != nil {
750- libcErrno = errorCodeToErrno (* err )
745+ stat , err , isErr := dir .d .StatAt (0 , relPath ). Result ( )
746+ if isErr {
747+ libcErrno = errorCodeToErrno (err )
751748 return - 1
752749 }
753750
754- setStatFromWASIStat (dst , result . OK () )
751+ setStatFromWASIStat (dst , & stat )
755752
756753 return 0
757754}
@@ -981,25 +978,25 @@ func open(pathname *byte, flags int32, mode uint32) int32 {
981978 pflags &^= types .PathFlagsSymlinkFollow
982979 }
983980
984- result := dir .d .OpenAt (pflags , relPath , oflags , dflags )
985- if err := result . Err (); err != nil {
986- libcErrno = errorCodeToErrno (* err )
981+ descriptor , err , isErr := dir .d .OpenAt (pflags , relPath , oflags , dflags ). Result ( )
982+ if isErr {
983+ libcErrno = errorCodeToErrno (err )
987984 return - 1
988985 }
989986
990987 stream := wasiFile {
991- d : * result . OK () ,
988+ d : descriptor ,
992989 oflag : flags ,
993990 refs : 1 ,
994991 }
995992
996993 if flags & (O_WRONLY | O_APPEND ) == (O_WRONLY | O_APPEND ) {
997- result := stream .d .Stat ()
998- if err := result . Err (); err != nil {
999- libcErrno = errorCodeToErrno (* err )
994+ stat , err , isErr := stream .d .Stat (). Result ()
995+ if isErr {
996+ libcErrno = errorCodeToErrno (err )
1000997 return - 1
1001998 }
1002- stream .offset = int64 (result . OK () .Size )
999+ stream .offset = int64 (stat .Size )
10031000 }
10041001
10051002 libcfd := findFreeFD ()
@@ -1112,13 +1109,13 @@ func fdopendir(fd int32) unsafe.Pointer {
11121109 return nil
11131110 }
11141111
1115- result := stream .d .ReadDirectory ()
1116- if err := result . Err (); err != nil {
1117- libcErrno = errorCodeToErrno (* err )
1112+ dir , err , isErr := stream .d .ReadDirectory (). Result ()
1113+ if isErr {
1114+ libcErrno = errorCodeToErrno (err )
11181115 return nil
11191116 }
11201117
1121- return unsafe .Pointer (& libc_DIR {d : * result . OK () })
1118+ return unsafe .Pointer (& libc_DIR {d : dir })
11221119}
11231120
11241121// int fdclosedir(DIR *);
@@ -1153,13 +1150,13 @@ func readdir(dirp unsafe.Pointer) *Dirent {
11531150 return nil
11541151 }
11551152
1156- result := dir .d .ReadDirectoryEntry ()
1157- if err := result . Err (); err != nil {
1158- libcErrno = errorCodeToErrno (* err )
1153+ someEntry , err , isErr := dir .d .ReadDirectoryEntry (). Result ()
1154+ if isErr {
1155+ libcErrno = errorCodeToErrno (err )
11591156 return nil
11601157 }
11611158
1162- entry := result . OK () .Some ()
1159+ entry := someEntry .Some ()
11631160 if entry == nil {
11641161 libcErrno = 0
11651162 return nil
@@ -1311,9 +1308,9 @@ func chdir(name *byte) int {
13111308 return - 1
13121309 }
13131310
1314- result := dir .d .OpenAt (types .PathFlagsSymlinkFollow , rel , types .OpenFlagsDirectory , types .DescriptorFlagsRead )
1315- if err := result . Err (); err != nil {
1316- libcErrno = errorCodeToErrno (* err )
1311+ _ , err , isErr := dir .d .OpenAt (types .PathFlagsSymlinkFollow , rel , types .OpenFlagsDirectory , types .DescriptorFlagsRead ). Result ( )
1312+ if isErr {
1313+ libcErrno = errorCodeToErrno (err )
13171314 return - 1
13181315 }
13191316
0 commit comments