runtime: abort stack scan in cases that we cannot unwind the stack
[gcc.git] / libgo / go / os / example_test.go
1 // Copyright 2016 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package os_test
6
7 import (
8 "fmt"
9 "log"
10 "os"
11 "time"
12 )
13
14 func ExampleOpenFile() {
15 f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE, 0755)
16 if err != nil {
17 log.Fatal(err)
18 }
19 if err := f.Close(); err != nil {
20 log.Fatal(err)
21 }
22 }
23
24 func ExampleOpenFile_append() {
25 // If the file doesn't exist, create it, or append to the file
26 f, err := os.OpenFile("access.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
27 if err != nil {
28 log.Fatal(err)
29 }
30 if _, err := f.Write([]byte("appended some data\n")); err != nil {
31 log.Fatal(err)
32 }
33 if err := f.Close(); err != nil {
34 log.Fatal(err)
35 }
36 }
37
38 func ExampleChmod() {
39 if err := os.Chmod("some-filename", 0644); err != nil {
40 log.Fatal(err)
41 }
42 }
43
44 func ExampleChtimes() {
45 mtime := time.Date(2006, time.February, 1, 3, 4, 5, 0, time.UTC)
46 atime := time.Date(2007, time.March, 2, 4, 5, 6, 0, time.UTC)
47 if err := os.Chtimes("some-filename", atime, mtime); err != nil {
48 log.Fatal(err)
49 }
50 }
51
52 func ExampleFileMode() {
53 fi, err := os.Lstat("some-filename")
54 if err != nil {
55 log.Fatal(err)
56 }
57
58 fmt.Printf("permissions: %#o\n", fi.Mode().Perm()) // 0400, 0777, etc.
59 switch mode := fi.Mode(); {
60 case mode.IsRegular():
61 fmt.Println("regular file")
62 case mode.IsDir():
63 fmt.Println("directory")
64 case mode&os.ModeSymlink != 0:
65 fmt.Println("symbolic link")
66 case mode&os.ModeNamedPipe != 0:
67 fmt.Println("named pipe")
68 }
69 }
70
71 func ExampleIsNotExist() {
72 filename := "a-nonexistent-file"
73 if _, err := os.Stat(filename); os.IsNotExist(err) {
74 fmt.Println("file does not exist")
75 }
76 // Output:
77 // file does not exist
78 }
79
80 func ExampleExpand() {
81 mapper := func(placeholderName string) string {
82 switch placeholderName {
83 case "DAY_PART":
84 return "morning"
85 case "NAME":
86 return "Gopher"
87 }
88
89 return ""
90 }
91
92 fmt.Println(os.Expand("Good ${DAY_PART}, $NAME!", mapper))
93
94 // Output:
95 // Good morning, Gopher!
96 }
97
98 func ExampleExpandEnv() {
99 os.Setenv("NAME", "gopher")
100 os.Setenv("BURROW", "/usr/gopher")
101
102 fmt.Println(os.ExpandEnv("$NAME lives in ${BURROW}."))
103
104 // Output:
105 // gopher lives in /usr/gopher.
106 }
107
108 func ExampleLookupEnv() {
109 show := func(key string) {
110 val, ok := os.LookupEnv(key)
111 if !ok {
112 fmt.Printf("%s not set\n", key)
113 } else {
114 fmt.Printf("%s=%s\n", key, val)
115 }
116 }
117
118 os.Setenv("SOME_KEY", "value")
119 os.Setenv("EMPTY_KEY", "")
120
121 show("SOME_KEY")
122 show("EMPTY_KEY")
123 show("MISSING_KEY")
124
125 // Output:
126 // SOME_KEY=value
127 // EMPTY_KEY=
128 // MISSING_KEY not set
129 }
130
131 func ExampleGetenv() {
132 os.Setenv("NAME", "gopher")
133 os.Setenv("BURROW", "/usr/gopher")
134
135 fmt.Printf("%s lives in %s.\n", os.Getenv("NAME"), os.Getenv("BURROW"))
136
137 // Output:
138 // gopher lives in /usr/gopher.
139 }
140
141 func ExampleUnsetenv() {
142 os.Setenv("TMPDIR", "/my/tmp")
143 defer os.Unsetenv("TMPDIR")
144 }