summaryrefslogtreecommitdiff
path: root/misc/cgo/stdio/file.go
diff options
context:
space:
mode:
Diffstat (limited to 'misc/cgo/stdio/file.go')
-rw-r--r--misc/cgo/stdio/file.go28
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)