@@ -149,19 +149,19 @@ func readStream(stream *wasiStream, buf *byte, count uint, offset int64) int {
149
149
150
150
libcErrno = 0
151
151
result := stream .in .BlockingRead (uint64 (count ))
152
- if err , isErr := result .Err (); isErr {
152
+ if err := result .Err (); err != nil {
153
153
if err .Closed () {
154
154
libcErrno = 0
155
155
return 0
156
- } else if err , ok := err .LastOperationFailed (); ok {
157
- wasiErrno = err
156
+ } else if err := err .LastOperationFailed (); err != nil {
157
+ wasiErrno = * err
158
158
libcErrno = uintptr (EWASIERROR )
159
159
}
160
160
return - 1
161
161
}
162
162
163
- list , _ := result .OK ()
164
163
dst := unsafe .Slice (buf , count )
164
+ list := result .OK ()
165
165
copy (dst , list .Slice ())
166
166
return int (list .Len ())
167
167
}
@@ -189,12 +189,12 @@ func writeStream(stream *wasiStream, buf *byte, count uint, offset int64) int {
189
189
len = remaining
190
190
}
191
191
result := stream .out .BlockingWriteAndFlush (cm .ToList (src [:len ]))
192
- if err , isErr := result .Err (); isErr {
192
+ if err := result .Err (); err != nil {
193
193
if err .Closed () {
194
194
libcErrno = 0
195
195
return 0
196
- } else if err , ok := err .LastOperationFailed (); ok {
197
- wasiErrno = err
196
+ } else if err := err .LastOperationFailed (); err != nil {
197
+ wasiErrno = * err
198
198
libcErrno = uintptr (EWASIERROR )
199
199
}
200
200
return - 1
@@ -236,13 +236,12 @@ func pread(fd int32, buf *byte, count uint, offset int64) int {
236
236
}
237
237
238
238
result := streams .d .Read (types .FileSize (count ), types .FileSize (offset ))
239
- if code , isErr := result .Err (); isErr {
240
- libcErrno = uintptr (errorCodeToErrno (code ))
239
+ if err := result .Err (); err != nil {
240
+ libcErrno = uintptr (errorCodeToErrno (* err ))
241
241
return - 1
242
242
}
243
243
244
- listAndEOF , _ := result .OK ()
245
- list := listAndEOF .V0
244
+ list := result .OK ().V0
246
245
copy (unsafe .Slice (buf , count ), list .Slice ())
247
246
248
247
// TODO(dgryski): EOF bool is ignored?
@@ -275,14 +274,13 @@ func pwrite(fd int32, buf *byte, count uint, offset int64) int {
275
274
}
276
275
277
276
result := streams .d .Write (cm .NewList (buf , count ), types .FileSize (offset ))
278
- if code , isErr := result .Err (); isErr {
277
+ if err := result .Err (); err != nil {
279
278
// TODO(dgryski):
280
- libcErrno = uintptr (errorCodeToErrno (code ))
279
+ libcErrno = uintptr (errorCodeToErrno (* err ))
281
280
return - 1
282
281
}
283
282
284
- size , _ := result .OK ()
285
- return int (size )
283
+ return int (* result .OK ())
286
284
}
287
285
288
286
// ssize_t lseek(int fd, off_t offset, int whence);
@@ -302,12 +300,11 @@ func lseek(fd int32, offset int64, whence int) int64 {
302
300
stream .offset += offset
303
301
case 2 : // SEEK_END
304
302
result := stream .d .Stat ()
305
- if code , isErr := result .Err (); isErr {
306
- libcErrno = uintptr (errorCodeToErrno (code ))
303
+ if err := result .Err (); err != nil {
304
+ libcErrno = uintptr (errorCodeToErrno (* err ))
307
305
return - 1
308
306
}
309
- stat , _ := result .OK ()
310
- stream .offset = int64 (stat .Size ) + offset
307
+ stream .offset = int64 (result .OK ().Size ) + offset
311
308
}
312
309
313
310
return int64 (stream .offset )
@@ -443,13 +440,12 @@ func stat(pathname *byte, dst *Stat_t) int32 {
443
440
dir , relPath := findPreopenForPath (path )
444
441
445
442
result := dir .StatAt (0 , relPath )
446
- if code , isErr := result .Err (); isErr {
447
- libcErrno = uintptr (errorCodeToErrno (code ))
443
+ if err := result .Err (); err != nil {
444
+ libcErrno = uintptr (errorCodeToErrno (* err ))
448
445
return - 1
449
446
}
450
447
451
- wasiStat , _ := result .OK ()
452
- setStatFromWASIStat (dst , & wasiStat )
448
+ setStatFromWASIStat (dst , result .OK ())
453
449
454
450
return 0
455
451
}
@@ -475,13 +471,12 @@ func fstat(fd int32, dst *Stat_t) int32 {
475
471
// }
476
472
477
473
result := stream .d .Stat ()
478
- if code , isErr := result .Err (); isErr {
479
- libcErrno = uintptr (errorCodeToErrno (code ))
474
+ if err := result .Err (); err != nil {
475
+ libcErrno = uintptr (errorCodeToErrno (* err ))
480
476
return - 1
481
477
}
482
478
483
- wasiStat , _ := result .OK ()
484
- setStatFromWASIStat (dst , & wasiStat )
479
+ setStatFromWASIStat (dst , result .OK ())
485
480
486
481
return 0
487
482
}
@@ -506,18 +501,18 @@ func setStatFromWASIStat(sstat *Stat_t, wstat *types.DescriptorStat) {
506
501
sstat .Blksize = 512
507
502
sstat .Blocks = (sstat .Size + 511 ) / int64 (sstat .Blksize )
508
503
509
- setOptTime := func (t * Timespec , o * cm. Option [ wallclock.DateTime ] ) {
504
+ setOptTime := func (t * Timespec , o * wallclock.DateTime ) {
510
505
t .Sec = 0
511
506
t .Nsec = 0
512
- if some , ok := o . Some (); ok {
513
- t .Sec = int32 (some .Seconds )
514
- t .Nsec = int64 (some .Nanoseconds )
507
+ if o != nil {
508
+ t .Sec = int32 (o .Seconds )
509
+ t .Nsec = int64 (o .Nanoseconds )
515
510
}
516
511
}
517
512
518
- setOptTime (& sstat .Atim , & wstat .DataAccessTimestamp )
519
- setOptTime (& sstat .Mtim , & wstat .DataModificationTimestamp )
520
- setOptTime (& sstat .Ctim , & wstat .StatusChangeTimestamp )
513
+ setOptTime (& sstat .Atim , wstat .DataAccessTimestamp . Some () )
514
+ setOptTime (& sstat .Mtim , wstat .DataModificationTimestamp . Some () )
515
+ setOptTime (& sstat .Ctim , wstat .StatusChangeTimestamp . Some () )
521
516
}
522
517
523
518
// int lstat(const char *path, struct stat * buf);
@@ -528,13 +523,12 @@ func lstat(pathname *byte, dst *Stat_t) int32 {
528
523
dir , relPath := findPreopenForPath (path )
529
524
530
525
result := dir .StatAt (0 , relPath )
531
- if code , isErr := result .Err (); isErr {
532
- libcErrno = uintptr (errorCodeToErrno (code ))
526
+ if err := result .Err (); err != nil {
527
+ libcErrno = uintptr (errorCodeToErrno (* err ))
533
528
return - 1
534
529
}
535
530
536
- wasiStat , _ := result .OK ()
537
- setStatFromWASIStat (dst , & wasiStat )
531
+ setStatFromWASIStat (dst , result .OK ())
538
532
539
533
return 0
540
534
}
@@ -608,25 +602,23 @@ func open(pathname *byte, flags int32, mode uint32) int32 {
608
602
}
609
603
610
604
result := dir .OpenAt (pflags , path , oflags , dflags )
611
- if code , isErr := result .Err (); isErr {
612
- libcErrno = uintptr (errorCodeToErrno (code ))
605
+ if err := result .Err (); err != nil {
606
+ libcErrno = uintptr (errorCodeToErrno (* err ))
613
607
return - 1
614
608
}
615
609
616
- desc , _ := result .OK ()
617
610
stream := wasiFile {
618
- d : desc ,
611
+ d : * result . OK () ,
619
612
oflag : flags ,
620
613
}
621
614
622
615
if flags & (O_WRONLY | O_APPEND ) == (O_WRONLY | O_APPEND ) {
623
616
result := stream .d .Stat ()
624
- if code , isErr := result .Err (); isErr {
625
- libcErrno = uintptr (errorCodeToErrno (code ))
617
+ if err := result .Err (); err != nil {
618
+ libcErrno = uintptr (errorCodeToErrno (* err ))
626
619
return - 1
627
620
}
628
- stat , _ := result .OK ()
629
- stream .offset = int64 (stat .Size )
621
+ stream .offset = int64 (result .OK ().Size )
630
622
}
631
623
632
624
libcfd := nextLibcFd
0 commit comments