diff --git a/builtin/file.go b/builtin/file.go index 17d704d7..ef136df4 100644 --- a/builtin/file.go +++ b/builtin/file.go @@ -96,7 +96,11 @@ func (sf *suFile) reset() { } func (sf *suFile) size() int64 { - info, err := sf.f.(*os.File).Stat() + f := sf.f + if a, ok := sf.f.(appender); ok { + f = a.f + } + info, err := f.(*os.File).Stat() if err != nil { panic("File: " + err.Error()) } @@ -226,6 +230,16 @@ func file_Seek(this, arg1, arg2 Value) Value { return nil } +var _ = method(file_Size, "()") + +func file_Size(this Value) Value { + sf := sfOpen(this) + if sf.w != nil { + sf.w.Flush() + } + return Int64Val(sf.size()) +} + var _ = method(file_Tell, "()") func file_Tell(this Value) Value {