diff options
Diffstat (limited to 'misc/cgo/stdio/file.go')
-rw-r--r-- | misc/cgo/stdio/file.go | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/misc/cgo/stdio/file.go b/misc/cgo/stdio/file.go index 7d1f22280..021cbf909 100644 --- a/misc/cgo/stdio/file.go +++ b/misc/cgo/stdio/file.go @@ -10,33 +10,35 @@ see ../gmp/gmp.go. package stdio -// TODO(rsc): Remove fflushstdout when C.fflush(C.stdout) works in cgo. - /* #include <stdio.h> #include <stdlib.h> +#include <sys/stat.h> +#include <errno.h> -void fflushstdout(void) { fflush(stdout); } +char* greeting = "hello, world"; */ import "C" import "unsafe" -/* type File C.FILE var Stdout = (*File)(C.stdout) var Stderr = (*File)(C.stderr) -func (f *File) WriteString(s string) { - p := C.CString(s); - C.fputs(p, (*C.FILE)(f)); - C.free(p); -} -*/ +// Test reference to library symbol. +// Stdout and stderr are too special to be a reliable test. +var myerr = C.sys_errlist -func Puts(s string) { +func (f *File) WriteString(s string) { p := C.CString(s) - C.puts(p) + C.fputs(p, (*C.FILE)(f)) C.free(unsafe.Pointer(p)) - C.fflushstdout() + f.Flush() +} + +func (f *File) Flush() { + C.fflush((*C.FILE)(f)) } + +var Greeting = C.GoString(C.greeting) |