github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library@v0.2.0/FileIO/externs.go (about) 1 package FileIO 2 3 import ( 4 "io/ioutil" 5 os "os" 6 "path/filepath" 7 8 "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" 9 _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" 10 ) 11 12 // TODO: Drop this once we fix the DafnyLibraries.FileIO extern 13 var m_DafnyLibraries struct { 14 FileIO CompanionStruct_Default___ 15 } 16 17 func (_static CompanionStruct_Default___) INTERNAL_ReadBytesFromFile(path _dafny.Sequence) (isError bool, bytesRead _dafny.Sequence, errorMsg _dafny.Sequence) { 18 p := func() string { 19 var s string 20 for i := _dafny.Iterate(path); ; { 21 val, notEndOfSequence := i() 22 if notEndOfSequence { 23 s = s + string(val.(_dafny.Char)) 24 } else { 25 return s 26 } 27 } 28 }() 29 30 dat, err := ioutil.ReadFile(p) 31 if err != nil { 32 return true, _dafny.EmptySeq, _dafny.SeqOfChars([]dafny.Char(err.Error())...) 33 } 34 datAsSequence := _dafny.SeqOfBytes(dat) 35 return false, datAsSequence, _dafny.EmptySeq 36 } 37 38 func (_static CompanionStruct_Default___) INTERNAL_WriteBytesToFile(path _dafny.Sequence, bytes _dafny.Sequence) (isError bool, errorMsg _dafny.Sequence) { 39 p := func() string { 40 var s string 41 for i := _dafny.Iterate(path); ; { 42 val, notEndOfSequence := i() 43 if notEndOfSequence { 44 s = s + string(val.(_dafny.Char)) 45 } else { 46 return s 47 } 48 } 49 }() 50 51 // Create directories 52 os.MkdirAll(filepath.Dir(p), os.ModePerm) 53 bytesArray := _dafny.ToByteArray(bytes) 54 err := ioutil.WriteFile(p, bytesArray, 0644) 55 if err != nil { 56 return true, _dafny.SeqOfChars([]dafny.Char(err.Error())...) 57 } 58 return false, _dafny.EmptySeq 59 } 60 61 func (_static CompanionStruct_Default___) INTERNAL_AppendBytesToFile(path _dafny.Sequence, bytes _dafny.Sequence) (isError bool, errorMsg _dafny.Sequence) { 62 p := func() string { 63 var s string 64 for i := _dafny.Iterate(path); ; { 65 val, notEndOfSequence := i() 66 if notEndOfSequence { 67 s = s + string(val.(_dafny.Char)) 68 } else { 69 return s 70 } 71 } 72 }() 73 74 // Create directories 75 err := os.MkdirAll(filepath.Dir(p), os.ModePerm) 76 if err != nil { 77 return true, _dafny.SeqOfChars([]dafny.Char(err.Error())...) 78 } 79 80 bytesArray := _dafny.ToByteArray(bytes) 81 82 f, err := os.OpenFile(p, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) 83 if err != nil { 84 return true, _dafny.SeqOfChars([]dafny.Char(err.Error())...) 85 } 86 87 if _, err := f.Write(bytesArray); err != nil { 88 return true, _dafny.SeqOfChars([]dafny.Char(err.Error())...) 89 } 90 91 if err := f.Close(); err != nil { 92 return true, _dafny.SeqOfChars([]dafny.Char(err.Error())...) 93 } 94 95 return false, _dafny.EmptySeq 96 }