]> Cypherpunks.ru repositories - gostls13.git/blob - misc/cgo/stdio/testdata/stdio/file.go
a024f2c361c8be4b87ab99d89b8b33b1e490e516
[gostls13.git] / misc / cgo / stdio / testdata / stdio / file.go
1 // skip
2
3 // Copyright 2009 The Go Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file.
6
7 /*
8 A trivial example of wrapping a C library in Go.
9 For a more complex example and explanation,
10 see ../gmp/gmp.go.
11 */
12
13 package stdio
14
15 /*
16 #include <stdio.h>
17 #include <stdlib.h>
18 #include <sys/stat.h>
19 #include <errno.h>
20
21 char* greeting = "hello, world";
22 */
23 import "C"
24 import "unsafe"
25
26 type File C.FILE
27
28 // Test reference to library symbol.
29 // Stdout and stderr are too special to be a reliable test.
30 //var  = C.environ
31
32 func (f *File) WriteString(s string) {
33         p := C.CString(s)
34         C.fputs(p, (*C.FILE)(f))
35         C.free(unsafe.Pointer(p))
36         f.Flush()
37 }
38
39 func (f *File) Flush() {
40         C.fflush((*C.FILE)(f))
41 }
42
43 var Greeting = C.GoString(C.greeting)
44 var Gbytes = C.GoBytes(unsafe.Pointer(C.greeting), C.int(len(Greeting)))