mirror of
https://github.com/golang/go
synced 2024-11-21 20:14:52 -07:00
move things out of sys into os and runtime
R=r OCL=28569 CL=28573
This commit is contained in:
parent
c367d1b789
commit
918afd9491
@ -18,7 +18,7 @@ func cat(f *file.File) {
|
|||||||
switch nr, er := f.Read(&buf); true {
|
switch nr, er := f.Read(&buf); true {
|
||||||
case nr < 0:
|
case nr < 0:
|
||||||
fmt.Fprintf(os.Stderr, "error reading from %s: %s\n", f.String(), er.String());
|
fmt.Fprintf(os.Stderr, "error reading from %s: %s\n", f.String(), er.String());
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
case nr == 0: // EOF
|
case nr == 0: // EOF
|
||||||
return;
|
return;
|
||||||
case nr > 0:
|
case nr > 0:
|
||||||
@ -38,7 +38,7 @@ func main() {
|
|||||||
f, err := file.Open(flag.Arg(i), 0, 0);
|
f, err := file.Open(flag.Arg(i), 0, 0);
|
||||||
if f == nil {
|
if f == nil {
|
||||||
fmt.Fprintf(os.Stderr, "can't open %s: error %s\n", flag.Arg(i), err);
|
fmt.Fprintf(os.Stderr, "can't open %s: error %s\n", flag.Arg(i), err);
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
cat(f);
|
cat(f);
|
||||||
f.Close();
|
f.Close();
|
||||||
|
@ -60,7 +60,7 @@ func cat(r reader) {
|
|||||||
switch nr, er := r.Read(&buf); {
|
switch nr, er := r.Read(&buf); {
|
||||||
case nr < 0:
|
case nr < 0:
|
||||||
fmt.Fprintf(os.Stderr, "error reading from %s: %s\n", r.String(), er.String());
|
fmt.Fprintf(os.Stderr, "error reading from %s: %s\n", r.String(), er.String());
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
case nr == 0: // EOF
|
case nr == 0: // EOF
|
||||||
return;
|
return;
|
||||||
case nr > 0:
|
case nr > 0:
|
||||||
@ -81,7 +81,7 @@ func main() {
|
|||||||
f, err := file.Open(flag.Arg(i), 0, 0);
|
f, err := file.Open(flag.Arg(i), 0, 0);
|
||||||
if f == nil {
|
if f == nil {
|
||||||
fmt.Fprintf(os.Stderr, "can't open %s: error %s\n", flag.Arg(i), err);
|
fmt.Fprintf(os.Stderr, "can't open %s: error %s\n", flag.Arg(i), err);
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
cat(f);
|
cat(f);
|
||||||
f.Close();
|
f.Close();
|
||||||
|
@ -7,6 +7,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"file";
|
"file";
|
||||||
"fmt";
|
"fmt";
|
||||||
|
"os";
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -15,6 +16,6 @@ func main() {
|
|||||||
file, err := file.Open("/does/not/exist", 0, 0);
|
file, err := file.Open("/does/not/exist", 0, 0);
|
||||||
if file == nil {
|
if file == nil {
|
||||||
fmt.Printf("can't open file; err=%s\n", err.String());
|
fmt.Printf("can't open file; err=%s\n", err.String());
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,11 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import "fmt"
|
import "fmt"
|
||||||
|
import "os"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
s := "hello";
|
s := "hello";
|
||||||
if s[1] != 'e' { sys.Exit(1) }
|
if s[1] != 'e' { os.Exit(1) }
|
||||||
s = "good bye";
|
s = "good bye";
|
||||||
var p *string = &s;
|
var p *string = &s;
|
||||||
*p = "ciao";
|
*p = "ciao";
|
||||||
|
@ -44,7 +44,7 @@ y.tab.h: $(YFILES)
|
|||||||
y.tab.c: y.tab.h
|
y.tab.c: y.tab.h
|
||||||
test -f y.tab.c && touch y.tab.c
|
test -f y.tab.c && touch y.tab.c
|
||||||
|
|
||||||
builtin.c: sys.go unsafe.go mkbuiltin1.c mkbuiltin
|
builtin.c: sys.go unsafe.go runtime.go mkbuiltin1.c mkbuiltin
|
||||||
./mkbuiltin >builtin.c || \
|
./mkbuiltin >builtin.c || \
|
||||||
(echo 'mkbuiltin failed; using bootstrap copy of builtin.c'; cp builtin.c.boot builtin.c)
|
(echo 'mkbuiltin failed; using bootstrap copy of builtin.c'; cp builtin.c.boot builtin.c)
|
||||||
|
|
||||||
|
@ -55,13 +55,6 @@ char *sysimport =
|
|||||||
"func sys.arrayslices (old *any, nel int, lb int, hb int, width int) (ary []any)\n"
|
"func sys.arrayslices (old *any, nel int, lb int, hb int, width int) (ary []any)\n"
|
||||||
"func sys.arrays2d (old *any, nel int) (ary []any)\n"
|
"func sys.arrays2d (old *any, nel int) (ary []any)\n"
|
||||||
"func sys.closure ()\n"
|
"func sys.closure ()\n"
|
||||||
"func sys.Breakpoint ()\n"
|
|
||||||
"var sys.Args []string\n"
|
|
||||||
"var sys.Envs []string\n"
|
|
||||||
"func sys.Gosched ()\n"
|
|
||||||
"func sys.Goexit ()\n"
|
|
||||||
"func sys.Exit (? int)\n"
|
|
||||||
"func sys.Caller (n int) (pc uint64, file string, line int, ok bool)\n"
|
|
||||||
"\n"
|
"\n"
|
||||||
"$$\n";
|
"$$\n";
|
||||||
char *unsafeimport =
|
char *unsafeimport =
|
||||||
@ -74,3 +67,11 @@ char *unsafeimport =
|
|||||||
"func unsafe.Unreflect (? uint64, ? string, ? bool) (ret interface { })\n"
|
"func unsafe.Unreflect (? uint64, ? string, ? bool) (ret interface { })\n"
|
||||||
"\n"
|
"\n"
|
||||||
"$$\n";
|
"$$\n";
|
||||||
|
char *runtimeimport =
|
||||||
|
"package runtime\n"
|
||||||
|
"func runtime.Breakpoint ()\n"
|
||||||
|
"func runtime.Gosched ()\n"
|
||||||
|
"func runtime.Goexit ()\n"
|
||||||
|
"func runtime.Caller (n int) (pc uint64, file string, line int, ok bool)\n"
|
||||||
|
"\n"
|
||||||
|
"$$\n";
|
||||||
|
@ -541,6 +541,7 @@ EXTERN Sym* pkgimportname; // package name from imported package
|
|||||||
EXTERN int tptr; // either TPTR32 or TPTR64
|
EXTERN int tptr; // either TPTR32 or TPTR64
|
||||||
extern char* sysimport;
|
extern char* sysimport;
|
||||||
extern char* unsafeimport;
|
extern char* unsafeimport;
|
||||||
|
extern char* runtimeimport;
|
||||||
EXTERN char* filename; // name to uniqify names
|
EXTERN char* filename; // name to uniqify names
|
||||||
EXTERN Idir* idirs;
|
EXTERN Idir* idirs;
|
||||||
|
|
||||||
|
@ -265,6 +265,10 @@ importfile(Val *f)
|
|||||||
cannedimports("unsafe.6", unsafeimport);
|
cannedimports("unsafe.6", unsafeimport);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(strcmp(f->u.sval->s, "runtime") == 0) {
|
||||||
|
cannedimports("runtime.6", runtimeimport);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(!findpkg(f->u.sval))
|
if(!findpkg(f->u.sval))
|
||||||
fatal("can't find import: %Z", f->u.sval);
|
fatal("can't find import: %Z", f->u.sval);
|
||||||
|
@ -5,11 +5,12 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
gcc -o mkbuiltin1 mkbuiltin1.c
|
gcc -o mkbuiltin1 mkbuiltin1.c
|
||||||
6g sys.go
|
|
||||||
6g unsafe.go
|
|
||||||
rm -f _builtin.c
|
rm -f _builtin.c
|
||||||
./mkbuiltin1 sys >_builtin.c
|
for i in sys unsafe runtime
|
||||||
./mkbuiltin1 unsafe >>_builtin.c
|
do
|
||||||
|
6g $i.go
|
||||||
|
./mkbuiltin1 $i >>_builtin.c
|
||||||
|
done
|
||||||
|
|
||||||
# If _builtin.c has changed vs builtin.c.boot,
|
# If _builtin.c has changed vs builtin.c.boot,
|
||||||
# check in the new change if being run by
|
# check in the new change if being run by
|
||||||
|
9
src/cmd/gc/runtime.go
Normal file
9
src/cmd/gc/runtime.go
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
// Copyright 2009 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package PACKAGE
|
||||||
|
func Breakpoint();
|
||||||
|
func Gosched();
|
||||||
|
func Goexit();
|
||||||
|
func Caller(n int) (pc uint64, file string, line int, ok bool);
|
@ -72,17 +72,3 @@ func arrayslices(old *any, nel int, lb int, hb int, width int) (ary []any);
|
|||||||
func arrays2d(old *any, nel int) (ary []any);
|
func arrays2d(old *any, nel int) (ary []any);
|
||||||
|
|
||||||
func closure(); // has args, but compiler fills in
|
func closure(); // has args, but compiler fills in
|
||||||
|
|
||||||
// used by go programs
|
|
||||||
|
|
||||||
func Breakpoint();
|
|
||||||
|
|
||||||
var Args []string;
|
|
||||||
var Envs []string;
|
|
||||||
|
|
||||||
func Gosched();
|
|
||||||
func Goexit();
|
|
||||||
|
|
||||||
func Exit(int);
|
|
||||||
|
|
||||||
func Caller(n int) (pc uint64, file string, line int, ok bool);
|
|
||||||
|
@ -131,7 +131,7 @@ func ScanFiles(filenames []string) *Info {
|
|||||||
// TODO(rsc): Build a binary from package main?
|
// TODO(rsc): Build a binary from package main?
|
||||||
|
|
||||||
z := new(Info);
|
z := new(Info);
|
||||||
z.Args = sys.Args;
|
z.Args = os.Args;
|
||||||
z.Dir = PkgDir();
|
z.Dir = PkgDir();
|
||||||
z.Char = theChar; // for template
|
z.Char = theChar; // for template
|
||||||
z.ObjDir = ObjDir; // for template
|
z.ObjDir = ObjDir; // for template
|
||||||
|
@ -34,7 +34,7 @@ const ObjDir = "_obj"
|
|||||||
|
|
||||||
func fatal(args ...) {
|
func fatal(args ...) {
|
||||||
fmt.Fprintf(os.Stderr, "gobuild: %s\n", fmt.Sprint(args));
|
fmt.Fprintf(os.Stderr, "gobuild: %s\n", fmt.Sprint(args));
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -261,15 +261,15 @@ func PrintDefaults() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Usage prints to standard error a default usage message documenting all defined flags and
|
// Usage prints to standard error a default usage message documenting all defined flags and
|
||||||
// then calls sys.Exit(1).
|
// then calls os.Exit(1).
|
||||||
func Usage() {
|
func Usage() {
|
||||||
if len(sys.Args) > 0 {
|
if len(os.Args) > 0 {
|
||||||
fmt.Fprintln(os.Stderr, "Usage of", sys.Args[0] + ":");
|
fmt.Fprintln(os.Stderr, "Usage of", os.Args[0] + ":");
|
||||||
} else {
|
} else {
|
||||||
fmt.Fprintln(os.Stderr, "Usage:");
|
fmt.Fprintln(os.Stderr, "Usage:");
|
||||||
}
|
}
|
||||||
PrintDefaults();
|
PrintDefaults();
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
func NFlag() int {
|
func NFlag() int {
|
||||||
@ -280,20 +280,20 @@ func NFlag() int {
|
|||||||
// after flags have been processed.
|
// after flags have been processed.
|
||||||
func Arg(i int) string {
|
func Arg(i int) string {
|
||||||
i += flags.first_arg;
|
i += flags.first_arg;
|
||||||
if i < 0 || i >= len(sys.Args) {
|
if i < 0 || i >= len(os.Args) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
return sys.Args[i]
|
return os.Args[i]
|
||||||
}
|
}
|
||||||
|
|
||||||
// NArg is the number of arguments remaining after flags have been processed.
|
// NArg is the number of arguments remaining after flags have been processed.
|
||||||
func NArg() int {
|
func NArg() int {
|
||||||
return len(sys.Args) - flags.first_arg
|
return len(os.Args) - flags.first_arg
|
||||||
}
|
}
|
||||||
|
|
||||||
// Args returns the non-flag command-line arguments.
|
// Args returns the non-flag command-line arguments.
|
||||||
func Args() []string {
|
func Args() []string {
|
||||||
return sys.Args[flags.first_arg:len(sys.Args)];
|
return os.Args[flags.first_arg:len(os.Args)];
|
||||||
}
|
}
|
||||||
|
|
||||||
func add(name string, value FlagValue, usage string) {
|
func add(name string, value FlagValue, usage string) {
|
||||||
@ -393,7 +393,7 @@ func String(name, value string, usage string) *string {
|
|||||||
|
|
||||||
func (f *allFlags) parseOne(index int) (ok bool, next int)
|
func (f *allFlags) parseOne(index int) (ok bool, next int)
|
||||||
{
|
{
|
||||||
s := sys.Args[index];
|
s := os.Args[index];
|
||||||
f.first_arg = index; // until proven otherwise
|
f.first_arg = index; // until proven otherwise
|
||||||
if len(s) == 0 {
|
if len(s) == 0 {
|
||||||
return false, -1
|
return false, -1
|
||||||
@ -450,11 +450,11 @@ func (f *allFlags) parseOne(index int) (ok bool, next int)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// It must have a value, which might be the next argument.
|
// It must have a value, which might be the next argument.
|
||||||
if !has_value && index < len(sys.Args)-1 {
|
if !has_value && index < len(os.Args)-1 {
|
||||||
// value is the next arg
|
// value is the next arg
|
||||||
has_value = true;
|
has_value = true;
|
||||||
index++;
|
index++;
|
||||||
value = sys.Args[index];
|
value = os.Args[index];
|
||||||
}
|
}
|
||||||
if !has_value {
|
if !has_value {
|
||||||
print("flag needs an argument: -", name, "\n");
|
print("flag needs an argument: -", name, "\n");
|
||||||
@ -473,7 +473,7 @@ func (f *allFlags) parseOne(index int) (ok bool, next int)
|
|||||||
// Parse parses the command-line flags. Must be called after all flags are defined
|
// Parse parses the command-line flags. Must be called after all flags are defined
|
||||||
// and before any are accessed by the program.
|
// and before any are accessed by the program.
|
||||||
func Parse() {
|
func Parse() {
|
||||||
for i := 1; i < len(sys.Args); {
|
for i := 1; i < len(os.Args); {
|
||||||
ok, next := flags.parseOne(i);
|
ok, next := flags.parseOne(i);
|
||||||
if next > 0 {
|
if next > 0 {
|
||||||
flags.first_arg = next;
|
flags.first_arg = next;
|
||||||
|
@ -74,7 +74,7 @@ func FlagServer(c *http.Conn, req *http.Request) {
|
|||||||
|
|
||||||
// simple argument server
|
// simple argument server
|
||||||
func ArgServer(c *http.Conn, req *http.Request) {
|
func ArgServer(c *http.Conn, req *http.Request) {
|
||||||
for i, s := range sys.Args {
|
for i, s := range os.Args {
|
||||||
fmt.Fprint(c, s, " ");
|
fmt.Fprint(c, s, " ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ package log
|
|||||||
import (
|
import (
|
||||||
"fmt";
|
"fmt";
|
||||||
"io";
|
"io";
|
||||||
|
"runtime";
|
||||||
"os";
|
"os";
|
||||||
"time";
|
"time";
|
||||||
)
|
)
|
||||||
@ -96,7 +97,7 @@ func (l *Logger) formatHeader(ns int64, calldepth int) string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if l.flag & (Lshortfile | Llongfile) != 0 {
|
if l.flag & (Lshortfile | Llongfile) != 0 {
|
||||||
pc, file, line, ok := sys.Caller(calldepth);
|
pc, file, line, ok := runtime.Caller(calldepth);
|
||||||
if ok {
|
if ok {
|
||||||
if l.flag & Lshortfile != 0 {
|
if l.flag & Lshortfile != 0 {
|
||||||
short, ok := shortnames[file];
|
short, ok := shortnames[file];
|
||||||
@ -139,7 +140,7 @@ func (l *Logger) Output(calldepth int, s string) {
|
|||||||
case Lcrash:
|
case Lcrash:
|
||||||
panic("log: fatal error");
|
panic("log: fatal error");
|
||||||
case Lexit:
|
case Lexit:
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,12 +174,12 @@ func Stderrf(format string, v ...) {
|
|||||||
stderr.Output(2, fmt.Sprintf(format, v))
|
stderr.Output(2, fmt.Sprintf(format, v))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exit is equivalent to Stderr() followed by a call to sys.Exit(1).
|
// Exit is equivalent to Stderr() followed by a call to os.Exit(1).
|
||||||
func Exit(v ...) {
|
func Exit(v ...) {
|
||||||
exit.Output(2, fmt.Sprintln(v))
|
exit.Output(2, fmt.Sprintln(v))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exitf is equivalent to Stderrf() followed by a call to sys.Exit(1).
|
// Exitf is equivalent to Stderrf() followed by a call to os.Exit(1).
|
||||||
func Exitf(format string, v ...) {
|
func Exitf(format string, v ...) {
|
||||||
exit.Output(2, fmt.Sprintf(format, v))
|
exit.Output(2, fmt.Sprintf(format, v))
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
# license that can be found in the LICENSE file.
|
# license that can be found in the LICENSE file.
|
||||||
|
|
||||||
# DO NOT EDIT. Automatically generated by gobuild.
|
# DO NOT EDIT. Automatically generated by gobuild.
|
||||||
# gobuild -m dir_${GOARCH}_${GOOS}.go env.go error.go file.go stat_${GOARCH}_${GOOS}.go time.go types.go exec.go >Makefile
|
# gobuild -m dir_${GOARCH}_${GOOS}.go env.go error.go file.go proc.go stat_${GOARCH}_${GOOS}.go time.go types.go exec.go >Makefile
|
||||||
|
|
||||||
D=
|
D=
|
||||||
|
|
||||||
@ -41,6 +41,7 @@ coverage: packages
|
|||||||
|
|
||||||
O1=\
|
O1=\
|
||||||
error.$O\
|
error.$O\
|
||||||
|
proc.$O\
|
||||||
types.$O\
|
types.$O\
|
||||||
|
|
||||||
O2=\
|
O2=\
|
||||||
@ -60,7 +61,7 @@ phases: a1 a2 a3 a4
|
|||||||
_obj$D/os.a: phases
|
_obj$D/os.a: phases
|
||||||
|
|
||||||
a1: $(O1)
|
a1: $(O1)
|
||||||
$(AR) grc _obj$D/os.a error.$O types.$O
|
$(AR) grc _obj$D/os.a error.$O proc.$O types.$O
|
||||||
rm -f $(O1)
|
rm -f $(O1)
|
||||||
|
|
||||||
a2: $(O2)
|
a2: $(O2)
|
||||||
|
@ -19,7 +19,7 @@ var env map[string] string;
|
|||||||
|
|
||||||
func copyenv() {
|
func copyenv() {
|
||||||
env = make(map[string] string);
|
env = make(map[string] string);
|
||||||
for i, s := range sys.Envs {
|
for i, s := range os.Envs {
|
||||||
for j := 0; j < len(s); j++ {
|
for j := 0; j < len(s); j++ {
|
||||||
if s[j] == '=' {
|
if s[j] == '=' {
|
||||||
env[s[0:j]] = s[j+1:len(s)];
|
env[s[0:j]] = s[j+1:len(s)];
|
||||||
|
@ -132,7 +132,7 @@ func (file *File) Write(b []byte) (ret int, err Error) {
|
|||||||
if e == syscall.EPIPE {
|
if e == syscall.EPIPE {
|
||||||
file.nepipe++;
|
file.nepipe++;
|
||||||
if file.nepipe >= 10 {
|
if file.nepipe >= 10 {
|
||||||
sys.Exit(syscall.EPIPE);
|
os.Exit(syscall.EPIPE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
file.nepipe = 0;
|
file.nepipe = 0;
|
||||||
|
@ -25,6 +25,7 @@ package regexp
|
|||||||
import (
|
import (
|
||||||
"container/vector";
|
"container/vector";
|
||||||
"os";
|
"os";
|
||||||
|
"runtime";
|
||||||
"utf8";
|
"utf8";
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -236,7 +237,7 @@ func (nop *_Nop) print() { print("nop") }
|
|||||||
func (re *Regexp) setError(err os.Error) {
|
func (re *Regexp) setError(err os.Error) {
|
||||||
re.error = err;
|
re.error = err;
|
||||||
re.ch <- re;
|
re.ch <- re;
|
||||||
sys.Goexit();
|
runtime.Goexit();
|
||||||
}
|
}
|
||||||
|
|
||||||
func (re *Regexp) add(i instr) instr {
|
func (re *Regexp) add(i instr) instr {
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
first looked for in the cursor, as in .section and .repeated.
|
first looked for in the cursor, as in .section and .repeated.
|
||||||
If it is not found, the search continues in outer sections
|
If it is not found, the search continues in outer sections
|
||||||
until the top level is reached.
|
until the top level is reached.
|
||||||
|
|
||||||
If a formatter is specified, it must be named in the formatter
|
If a formatter is specified, it must be named in the formatter
|
||||||
map passed to the template set up routines or in the default
|
map passed to the template set up routines or in the default
|
||||||
set ("html","str","") and is used to process the data for
|
set ("html","str","") and is used to process the data for
|
||||||
@ -61,6 +61,7 @@ import (
|
|||||||
"io";
|
"io";
|
||||||
"os";
|
"os";
|
||||||
"reflect";
|
"reflect";
|
||||||
|
"runtime";
|
||||||
"strings";
|
"strings";
|
||||||
"template";
|
"template";
|
||||||
"container/vector";
|
"container/vector";
|
||||||
@ -181,7 +182,7 @@ func New(fmap FormatterMap) *Template {
|
|||||||
// Generic error handler, called only from execError or parseError.
|
// Generic error handler, called only from execError or parseError.
|
||||||
func error(errors chan os.Error, line int, err string, args ...) {
|
func error(errors chan os.Error, line int, err string, args ...) {
|
||||||
errors <- ParseError{fmt.Sprintf("line %d: %s", line, fmt.Sprintf(err, args))};
|
errors <- ParseError{fmt.Sprintf("line %d: %s", line, fmt.Sprintf(err, args))};
|
||||||
sys.Goexit();
|
runtime.Goexit();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Report error and stop executing. The line number must be provided explicitly.
|
// Report error and stop executing. The line number must be provided explicitly.
|
||||||
|
@ -14,6 +14,8 @@ package testing
|
|||||||
import (
|
import (
|
||||||
"flag";
|
"flag";
|
||||||
"fmt";
|
"fmt";
|
||||||
|
"os";
|
||||||
|
"runtime";
|
||||||
)
|
)
|
||||||
|
|
||||||
// Report as tests are run; default is silent for success.
|
// Report as tests are run; default is silent for success.
|
||||||
@ -47,7 +49,7 @@ func (t *T) Fail() {
|
|||||||
func (t *T) FailNow() {
|
func (t *T) FailNow() {
|
||||||
t.Fail();
|
t.Fail();
|
||||||
t.ch <- t;
|
t.ch <- t;
|
||||||
sys.Goexit();
|
runtime.Goexit();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Log formats its arguments using default formatting, analogous to Print(),
|
// Log formats its arguments using default formatting, analogous to Print(),
|
||||||
@ -129,7 +131,7 @@ func Main(tests []Test) {
|
|||||||
}
|
}
|
||||||
if !ok {
|
if !ok {
|
||||||
println("FAIL");
|
println("FAIL");
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
println("PASS");
|
println("PASS");
|
||||||
}
|
}
|
||||||
|
@ -84,12 +84,12 @@ TEXT mainstart(SB),7,$0
|
|||||||
CALL initdone(SB)
|
CALL initdone(SB)
|
||||||
CALL main·main(SB)
|
CALL main·main(SB)
|
||||||
PUSHL $0
|
PUSHL $0
|
||||||
CALL sys·Exit(SB)
|
CALL exit(SB)
|
||||||
POPL AX
|
POPL AX
|
||||||
INT $3
|
INT $3
|
||||||
RET
|
RET
|
||||||
|
|
||||||
TEXT sys·Breakpoint(SB),7,$0
|
TEXT breakpoint(SB),7,$0
|
||||||
BYTE $0xcc
|
BYTE $0xcc
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ traceback(byte *pc0, byte *sp, G *g)
|
|||||||
|
|
||||||
// func caller(n int) (pc uint64, file string, line int, ok bool)
|
// func caller(n int) (pc uint64, file string, line int, ok bool)
|
||||||
void
|
void
|
||||||
sys·Caller(int32 n, uint64 retpc, string retfile, int32 retline, bool retbool)
|
runtime·Caller(int32 n, uint64 retpc, string retfile, int32 retline, bool retbool)
|
||||||
{
|
{
|
||||||
uint64 pc;
|
uint64 pc;
|
||||||
byte *sp;
|
byte *sp;
|
||||||
|
@ -55,12 +55,12 @@ TEXT mainstart(SB),7,$0
|
|||||||
CALL initdone(SB)
|
CALL initdone(SB)
|
||||||
CALL main·main(SB)
|
CALL main·main(SB)
|
||||||
PUSHQ $0
|
PUSHQ $0
|
||||||
CALL sys·Exit(SB)
|
CALL exit(SB)
|
||||||
POPQ AX
|
POPQ AX
|
||||||
CALL notok(SB)
|
CALL notok(SB)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
TEXT sys·Breakpoint(SB),7,$0
|
TEXT breakpoint(SB),7,$0
|
||||||
BYTE $0xcc
|
BYTE $0xcc
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ traceback(byte *pc0, byte *sp, G *g)
|
|||||||
|
|
||||||
// func caller(n int) (pc uint64, file string, line int, ok bool)
|
// func caller(n int) (pc uint64, file string, line int, ok bool)
|
||||||
void
|
void
|
||||||
sys·Caller(int32 n, uint64 retpc, String retfile, int32 retline, bool retbool)
|
runtime·Caller(int32 n, uint64 retpc, String retfile, int32 retline, bool retbool)
|
||||||
{
|
{
|
||||||
uint64 pc;
|
uint64 pc;
|
||||||
byte *sp;
|
byte *sp;
|
||||||
|
@ -211,7 +211,7 @@ loop:
|
|||||||
g->status = Gwaiting;
|
g->status = Gwaiting;
|
||||||
enqueue(&c->sendq, sg);
|
enqueue(&c->sendq, sg);
|
||||||
unlock(&chanlock);
|
unlock(&chanlock);
|
||||||
sys·Gosched();
|
gosched();
|
||||||
|
|
||||||
lock(&chanlock);
|
lock(&chanlock);
|
||||||
sg = g->param;
|
sg = g->param;
|
||||||
@ -237,7 +237,7 @@ asynch:
|
|||||||
g->status = Gwaiting;
|
g->status = Gwaiting;
|
||||||
enqueue(&c->sendq, sg);
|
enqueue(&c->sendq, sg);
|
||||||
unlock(&chanlock);
|
unlock(&chanlock);
|
||||||
sys·Gosched();
|
gosched();
|
||||||
|
|
||||||
lock(&chanlock);
|
lock(&chanlock);
|
||||||
goto asynch;
|
goto asynch;
|
||||||
@ -311,7 +311,7 @@ loop:
|
|||||||
g->status = Gwaiting;
|
g->status = Gwaiting;
|
||||||
enqueue(&c->recvq, sg);
|
enqueue(&c->recvq, sg);
|
||||||
unlock(&chanlock);
|
unlock(&chanlock);
|
||||||
sys·Gosched();
|
gosched();
|
||||||
|
|
||||||
lock(&chanlock);
|
lock(&chanlock);
|
||||||
sg = g->param;
|
sg = g->param;
|
||||||
@ -339,7 +339,7 @@ asynch:
|
|||||||
g->status = Gwaiting;
|
g->status = Gwaiting;
|
||||||
enqueue(&c->recvq, sg);
|
enqueue(&c->recvq, sg);
|
||||||
unlock(&chanlock);
|
unlock(&chanlock);
|
||||||
sys·Gosched();
|
gosched();
|
||||||
|
|
||||||
lock(&chanlock);
|
lock(&chanlock);
|
||||||
goto asynch;
|
goto asynch;
|
||||||
@ -748,7 +748,7 @@ loop:
|
|||||||
g->param = nil;
|
g->param = nil;
|
||||||
g->status = Gwaiting;
|
g->status = Gwaiting;
|
||||||
unlock(&chanlock);
|
unlock(&chanlock);
|
||||||
sys·Gosched();
|
gosched();
|
||||||
|
|
||||||
lock(&chanlock);
|
lock(&chanlock);
|
||||||
sg = g->param;
|
sg = g->param;
|
||||||
|
@ -33,7 +33,7 @@ sighandler(int32 sig, Siginfo *info, void *context)
|
|||||||
Regs *r;
|
Regs *r;
|
||||||
|
|
||||||
if(panicking) // traceback already printed
|
if(panicking) // traceback already printed
|
||||||
sys_Exit(2);
|
exit(2);
|
||||||
panicking = 1;
|
panicking = 1;
|
||||||
|
|
||||||
if(sig < 0 || sig >= NSIG){
|
if(sig < 0 || sig >= NSIG){
|
||||||
@ -56,8 +56,8 @@ sighandler(int32 sig, Siginfo *info, void *context)
|
|||||||
dumpregs(r);
|
dumpregs(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
sys·Breakpoint();
|
breakpoint();
|
||||||
sys_Exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -11,7 +11,7 @@ TEXT notok(SB),7,$0
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
// Exit the entire program (like C exit)
|
// Exit the entire program (like C exit)
|
||||||
TEXT sys·Exit(SB),7,$0
|
TEXT exit(SB),7,$0
|
||||||
MOVL $1, AX
|
MOVL $1, AX
|
||||||
INT $0x80
|
INT $0x80
|
||||||
CALL notok(SB)
|
CALL notok(SB)
|
||||||
|
@ -41,7 +41,7 @@ sighandler(int32 sig, Siginfo *info, void *context)
|
|||||||
Regs *r;
|
Regs *r;
|
||||||
|
|
||||||
if(panicking) // traceback already printed
|
if(panicking) // traceback already printed
|
||||||
sys_Exit(2);
|
exit(2);
|
||||||
panicking = 1;
|
panicking = 1;
|
||||||
|
|
||||||
if(sig < 0 || sig >= NSIG){
|
if(sig < 0 || sig >= NSIG){
|
||||||
@ -64,8 +64,8 @@ sighandler(int32 sig, Siginfo *info, void *context)
|
|||||||
dumpregs(r);
|
dumpregs(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
sys·Breakpoint();
|
breakpoint();
|
||||||
sys_Exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
// Exit the entire program (like C exit)
|
// Exit the entire program (like C exit)
|
||||||
TEXT sys·Exit(SB),7,$-8
|
TEXT exit(SB),7,$-8
|
||||||
MOVL 8(SP), DI // arg 1 exit status
|
MOVL 8(SP), DI // arg 1 exit status
|
||||||
MOVL $(0x2000000+1), AX // syscall entry
|
MOVL $(0x2000000+1), AX // syscall entry
|
||||||
SYSCALL
|
SYSCALL
|
||||||
|
@ -40,7 +40,7 @@ sighandler(int32 sig, Siginfo* info, void* context)
|
|||||||
Sigcontext *sc;
|
Sigcontext *sc;
|
||||||
|
|
||||||
if(panicking) // traceback already printed
|
if(panicking) // traceback already printed
|
||||||
sys_Exit(2);
|
exit(2);
|
||||||
panicking = 1;
|
panicking = 1;
|
||||||
|
|
||||||
uc = context;
|
uc = context;
|
||||||
@ -61,8 +61,8 @@ sighandler(int32 sig, Siginfo* info, void* context)
|
|||||||
dumpregs(sc);
|
dumpregs(sc);
|
||||||
}
|
}
|
||||||
|
|
||||||
sys·Breakpoint();
|
breakpoint();
|
||||||
sys_Exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -20,7 +20,7 @@ TEXT syscall(SB),7,$0
|
|||||||
INT $3 // not reached
|
INT $3 // not reached
|
||||||
RET
|
RET
|
||||||
|
|
||||||
TEXT sys·Exit(SB),7,$0
|
TEXT exit(SB),7,$0
|
||||||
MOVL $252, AX // syscall number
|
MOVL $252, AX // syscall number
|
||||||
MOVL 4(SP), BX
|
MOVL 4(SP), BX
|
||||||
INT $0x80
|
INT $0x80
|
||||||
|
@ -49,7 +49,7 @@ sighandler(int32 sig, Siginfo* info, void* context)
|
|||||||
Sigcontext *sc;
|
Sigcontext *sc;
|
||||||
|
|
||||||
if(panicking) // traceback already printed
|
if(panicking) // traceback already printed
|
||||||
sys_Exit(2);
|
exit(2);
|
||||||
panicking = 1;
|
panicking = 1;
|
||||||
|
|
||||||
uc = context;
|
uc = context;
|
||||||
@ -71,8 +71,8 @@ sighandler(int32 sig, Siginfo* info, void* context)
|
|||||||
dumpregs(sc);
|
dumpregs(sc);
|
||||||
}
|
}
|
||||||
|
|
||||||
sys·Breakpoint();
|
breakpoint();
|
||||||
sys_Exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// System calls and other sys.stuff for AMD64, Linux
|
// System calls and other sys.stuff for AMD64, Linux
|
||||||
//
|
//
|
||||||
|
|
||||||
TEXT sys·Exit(SB),7,$0-8
|
TEXT exit(SB),7,$0-8
|
||||||
MOVL 8(SP), DI
|
MOVL 8(SP), DI
|
||||||
MOVL $231, AX // exitgroup - force all os threads to exi
|
MOVL $231, AX // exitgroup - force all os threads to exi
|
||||||
SYSCALL
|
SYSCALL
|
||||||
|
@ -129,7 +129,7 @@ initdone(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sys·Goexit(void)
|
goexit(void)
|
||||||
{
|
{
|
||||||
if(debug > 1){
|
if(debug > 1){
|
||||||
lock(&debuglock);
|
lock(&debuglock);
|
||||||
@ -137,7 +137,7 @@ sys·Goexit(void)
|
|||||||
unlock(&debuglock);
|
unlock(&debuglock);
|
||||||
}
|
}
|
||||||
g->status = Gmoribund;
|
g->status = Gmoribund;
|
||||||
sys·Gosched();
|
gosched();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -431,7 +431,7 @@ scheduler(void)
|
|||||||
case Gmoribund:
|
case Gmoribund:
|
||||||
gp->status = Gdead;
|
gp->status = Gdead;
|
||||||
if(--sched.gcount == 0)
|
if(--sched.gcount == 0)
|
||||||
sys_Exit(0);
|
exit(0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(gp->readyonstop){
|
if(gp->readyonstop){
|
||||||
@ -461,7 +461,7 @@ scheduler(void)
|
|||||||
// before running g again. If g->status is Gmoribund,
|
// before running g again. If g->status is Gmoribund,
|
||||||
// kills off g.
|
// kills off g.
|
||||||
void
|
void
|
||||||
sys·Gosched(void)
|
gosched(void)
|
||||||
{
|
{
|
||||||
if(g == m->g0)
|
if(g == m->g0)
|
||||||
throw("gosched of g0");
|
throw("gosched of g0");
|
||||||
@ -529,7 +529,7 @@ sys·exitsyscall(void)
|
|||||||
// The scheduler will ready g and put this m to sleep.
|
// The scheduler will ready g and put this m to sleep.
|
||||||
// When the scheduler takes g awa from m,
|
// When the scheduler takes g awa from m,
|
||||||
// it will undo the sched.mcpu++ above.
|
// it will undo the sched.mcpu++ above.
|
||||||
sys·Gosched();
|
gosched();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -784,7 +784,7 @@ sys·newproc(int32 siz, byte* fn, byte* arg0)
|
|||||||
mcpy(sp, (byte*)&arg0, siz);
|
mcpy(sp, (byte*)&arg0, siz);
|
||||||
|
|
||||||
sp -= sizeof(uintptr);
|
sp -= sizeof(uintptr);
|
||||||
*(byte**)sp = (byte*)sys·Goexit;
|
*(byte**)sp = (byte*)goexit;
|
||||||
|
|
||||||
sp -= sizeof(uintptr); // retpc used by gogo
|
sp -= sizeof(uintptr); // retpc used by gogo
|
||||||
newg->sched.SP = sp;
|
newg->sched.SP = sp;
|
||||||
@ -839,3 +839,21 @@ sys·deferreturn(int32 arg0)
|
|||||||
jmpdefer(sp);
|
jmpdefer(sp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
runtime·Breakpoint(void)
|
||||||
|
{
|
||||||
|
breakpoint();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
runtime·Goexit(void)
|
||||||
|
{
|
||||||
|
goexit();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
runtime·Gosched(void)
|
||||||
|
{
|
||||||
|
gosched();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ sys·panicl(int32 lno)
|
|||||||
|
|
||||||
if(panicking) {
|
if(panicking) {
|
||||||
printf("double panic\n");
|
printf("double panic\n");
|
||||||
sys_Exit(3);
|
exit(3);
|
||||||
}
|
}
|
||||||
panicking++;
|
panicking++;
|
||||||
|
|
||||||
@ -35,8 +35,8 @@ sys·panicl(int32 lno)
|
|||||||
traceback(sys·getcallerpc(&lno), sp, g);
|
traceback(sys·getcallerpc(&lno), sp, g);
|
||||||
tracebackothers(g);
|
tracebackothers(g);
|
||||||
}
|
}
|
||||||
sys·Breakpoint(); // so we can grab it in a debugger
|
breakpoint(); // so we can grab it in a debugger
|
||||||
sys_Exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -57,7 +57,7 @@ throw(int8 *s)
|
|||||||
printf("throw: %s\n", s);
|
printf("throw: %s\n", s);
|
||||||
sys·panicl(-1);
|
sys·panicl(-1);
|
||||||
*(int32*)0 = 0; // not reached
|
*(int32*)0 = 0; // not reached
|
||||||
sys_Exit(1); // even more not reached
|
exit(1); // even more not reached
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -136,8 +136,8 @@ rnd(uint32 n, uint32 m)
|
|||||||
static int32 argc;
|
static int32 argc;
|
||||||
static uint8** argv;
|
static uint8** argv;
|
||||||
|
|
||||||
Array sys·Args;
|
Array os·Args;
|
||||||
Array sys·Envs;
|
Array os·Envs;
|
||||||
|
|
||||||
void
|
void
|
||||||
args(int32 c, uint8 **v)
|
args(int32 c, uint8 **v)
|
||||||
@ -161,15 +161,15 @@ goargs(void)
|
|||||||
|
|
||||||
for(i=0; i<argc; i++)
|
for(i=0; i<argc; i++)
|
||||||
gargv[i] = gostring(argv[i]);
|
gargv[i] = gostring(argv[i]);
|
||||||
sys·Args.array = (byte*)gargv;
|
os·Args.array = (byte*)gargv;
|
||||||
sys·Args.nel = argc;
|
os·Args.nel = argc;
|
||||||
sys·Args.cap = argc;
|
os·Args.cap = argc;
|
||||||
|
|
||||||
for(i=0; i<envc; i++)
|
for(i=0; i<envc; i++)
|
||||||
genvv[i] = gostring(argv[argc+1+i]);
|
genvv[i] = gostring(argv[argc+1+i]);
|
||||||
sys·Envs.array = (byte*)genvv;
|
os·Envs.array = (byte*)genvv;
|
||||||
sys·Envs.nel = envc;
|
os·Envs.nel = envc;
|
||||||
sys·Envs.cap = envc;
|
os·Envs.cap = envc;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte*
|
byte*
|
||||||
@ -182,8 +182,8 @@ getenv(int8 *s)
|
|||||||
|
|
||||||
bs = (byte*)s;
|
bs = (byte*)s;
|
||||||
len = findnull(bs);
|
len = findnull(bs);
|
||||||
envv = (String*)sys·Envs.array;
|
envv = (String*)os·Envs.array;
|
||||||
envc = sys·Envs.nel;
|
envc = os·Envs.nel;
|
||||||
for(i=0; i<envc; i++){
|
for(i=0; i<envc; i++){
|
||||||
if(envv[i].len <= len)
|
if(envv[i].len <= len)
|
||||||
continue;
|
continue;
|
||||||
|
@ -329,6 +329,10 @@ uint32 noequal(uint32, void*, void*);
|
|||||||
void* malloc(uintptr size);
|
void* malloc(uintptr size);
|
||||||
void* mallocgc(uintptr size);
|
void* mallocgc(uintptr size);
|
||||||
void free(void *v);
|
void free(void *v);
|
||||||
|
void exit(int32);
|
||||||
|
void breakpoint(void);
|
||||||
|
void gosched(void);
|
||||||
|
void goexit(void);
|
||||||
|
|
||||||
#pragma varargck argpos printf 1
|
#pragma varargck argpos printf 1
|
||||||
|
|
||||||
@ -378,15 +382,11 @@ void notewakeup(Note*);
|
|||||||
* UTF-8 characters in identifiers.
|
* UTF-8 characters in identifiers.
|
||||||
*/
|
*/
|
||||||
#ifndef __GNUC__
|
#ifndef __GNUC__
|
||||||
#define sys_Exit sys·Exit
|
|
||||||
#define sys_Gosched sys·Gosched
|
|
||||||
#define sys_memclr sys·memclr
|
#define sys_memclr sys·memclr
|
||||||
#define sys_write sys·write
|
#define sys_write sys·write
|
||||||
#define sys_Breakpoint sys·Breakpoint
|
|
||||||
#define sys_catstring sys·catstring
|
#define sys_catstring sys·catstring
|
||||||
#define sys_cmpstring sys·cmpstring
|
#define sys_cmpstring sys·cmpstring
|
||||||
#define sys_getcallerpc sys·getcallerpc
|
#define sys_getcallerpc sys·getcallerpc
|
||||||
#define sys_Goexit sys·Goexit
|
|
||||||
#define sys_indexstring sys·indexstring
|
#define sys_indexstring sys·indexstring
|
||||||
#define sys_intstring sys·intstring
|
#define sys_intstring sys·intstring
|
||||||
#define sys_mal sys·mal
|
#define sys_mal sys·mal
|
||||||
@ -408,11 +408,7 @@ void notewakeup(Note*);
|
|||||||
/*
|
/*
|
||||||
* low level go-called
|
* low level go-called
|
||||||
*/
|
*/
|
||||||
void sys_Goexit(void);
|
|
||||||
void sys_Gosched(void);
|
|
||||||
void sys_Exit(int32);
|
|
||||||
void sys_write(int32, void*, int32);
|
void sys_write(int32, void*, int32);
|
||||||
void sys_Breakpoint(void);
|
|
||||||
uint8* sys_mmap(byte*, uint32, int32, int32, int32, uint32);
|
uint8* sys_mmap(byte*, uint32, int32, int32, int32, uint32);
|
||||||
void sys_memclr(byte*, uint32);
|
void sys_memclr(byte*, uint32);
|
||||||
void sys_setcallerpc(void*, void*);
|
void sys_setcallerpc(void*, void*);
|
||||||
|
@ -119,7 +119,7 @@ semsleep2(Sema *s)
|
|||||||
{
|
{
|
||||||
USED(s);
|
USED(s);
|
||||||
g->status = Gwaiting;
|
g->status = Gwaiting;
|
||||||
sys·Gosched();
|
gosched();
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32
|
static int32
|
||||||
|
@ -215,8 +215,6 @@ out:
|
|||||||
void
|
void
|
||||||
sys·stringiter2(String s, int32 k, int32 retk, int32 retv)
|
sys·stringiter2(String s, int32 k, int32 retk, int32 retv)
|
||||||
{
|
{
|
||||||
int32 l;
|
|
||||||
|
|
||||||
if(k >= s.len) {
|
if(k >= s.len) {
|
||||||
// retk=0 is end of iteration
|
// retk=0 is end of iteration
|
||||||
retk = 0;
|
retk = 0;
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
type T chan uint64;
|
type T chan uint64;
|
||||||
|
|
||||||
func M(f uint64) (in, out T) {
|
func M(f uint64) (in, out T) {
|
||||||
@ -65,5 +67,5 @@ func main() {
|
|||||||
x = min(xs);
|
x = min(xs);
|
||||||
if x != OUT[i] { panic("bad: ", x, " should be ", OUT[i]); }
|
if x != OUT[i] { panic("bad: ", x, " should be ", OUT[i]); }
|
||||||
}
|
}
|
||||||
sys.Exit(0);
|
os.Exit(0);
|
||||||
}
|
}
|
||||||
|
@ -6,14 +6,16 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if len(sys.Args) != 3 {
|
if len(os.Args) != 3 {
|
||||||
panic("argc")
|
panic("argc")
|
||||||
}
|
}
|
||||||
if sys.Args[1] != "arg1" {
|
if os.Args[1] != "arg1" {
|
||||||
panic("arg1")
|
panic("arg1")
|
||||||
}
|
}
|
||||||
if sys.Args[2] != "arg2" {
|
if os.Args[2] != "arg2" {
|
||||||
panic("arg2")
|
panic("arg2")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
const N = 10
|
const N = 10
|
||||||
|
|
||||||
func AsynchFifo() {
|
func AsynchFifo() {
|
||||||
@ -18,7 +20,7 @@ func AsynchFifo() {
|
|||||||
for i := 0; i < N; i++ {
|
for i := 0; i < N; i++ {
|
||||||
if <-ch != i {
|
if <-ch != i {
|
||||||
print("bad receive\n");
|
print("bad receive\n");
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,12 +20,12 @@ func f(left, right chan int) {
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var n = 10000;
|
var n = 10000;
|
||||||
if len(sys.Args) > 1 {
|
if len(os.Args) > 1 {
|
||||||
var err os.Error;
|
var err os.Error;
|
||||||
n, err = strconv.Atoi(sys.Args[1]);
|
n, err = strconv.Atoi(os.Args[1]);
|
||||||
if err != nil {
|
if err != nil {
|
||||||
print("bad arg\n");
|
print("bad arg\n");
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
leftmost := make(chan int);
|
leftmost := make(chan int);
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "runtime"
|
||||||
import "time"
|
import "time"
|
||||||
|
|
||||||
func i32receiver(c chan int32, strobe chan bool) {
|
func i32receiver(c chan int32, strobe chan bool) {
|
||||||
@ -55,9 +56,9 @@ var ticker = time.Tick(10*1000); // 10 us
|
|||||||
func sleep() {
|
func sleep() {
|
||||||
<-ticker;
|
<-ticker;
|
||||||
<-ticker;
|
<-ticker;
|
||||||
sys.Gosched();
|
runtime.Gosched();
|
||||||
sys.Gosched();
|
runtime.Gosched();
|
||||||
sys.Gosched();
|
runtime.Gosched();
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
type rat struct {
|
type rat struct {
|
||||||
num, den int64; // numerator, denominator
|
num, den int64; // numerator, denominator
|
||||||
}
|
}
|
||||||
@ -623,7 +625,7 @@ func checka(U PS, a []rat, str string) {
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
Init();
|
Init();
|
||||||
if len(sys.Args) > 1 { // print
|
if len(os.Args) > 1 { // print
|
||||||
print("Ones: "); printn(Ones, 10);
|
print("Ones: "); printn(Ones, 10);
|
||||||
print("Twos: "); printn(Twos, 10);
|
print("Twos: "); printn(Twos, 10);
|
||||||
print("Add: "); printn(Add(Ones, Twos), 10);
|
print("Add: "); printn(Add(Ones, Twos), 10);
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
type rat struct {
|
type rat struct {
|
||||||
num, den int64; // numerator, denominator
|
num, den int64; // numerator, denominator
|
||||||
}
|
}
|
||||||
@ -636,7 +638,7 @@ func checka(U PS, a []*rat, str string) {
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
Init();
|
Init();
|
||||||
if len(sys.Args) > 1 { // print
|
if len(os.Args) > 1 { // print
|
||||||
print("Ones: "); Printn(Ones, 10);
|
print("Ones: "); Printn(Ones, 10);
|
||||||
print("Twos: "); Printn(Twos, 10);
|
print("Twos: "); Printn(Twos, 10);
|
||||||
print("Add: "); Printn(Add(Ones, Twos), 10);
|
print("Add: "); Printn(Add(Ones, Twos), 10);
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
// Send the sequence 2, 3, 4, ... to channel 'ch'.
|
// Send the sequence 2, 3, 4, ... to channel 'ch'.
|
||||||
func Generate(ch chan<- int) {
|
func Generate(ch chan<- int) {
|
||||||
for i := 2; ; i++ {
|
for i := 2; ; i++ {
|
||||||
@ -47,5 +49,5 @@ func main() {
|
|||||||
for i := 0; i < len(a); i++ {
|
for i := 0; i < len(a); i++ {
|
||||||
if x := <-primes; x != a[i] { panic(x, " != ", a[i]) }
|
if x := <-primes; x != a[i] { panic(x, " != ", a[i]) }
|
||||||
}
|
}
|
||||||
sys.Exit(0);
|
os.Exit(0);
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var i uint64 =
|
var i uint64 =
|
||||||
' ' +
|
' ' +
|
||||||
@ -33,10 +35,10 @@ func main() {
|
|||||||
;
|
;
|
||||||
if '\Ucafebabe' != 0xcafebabe {
|
if '\Ucafebabe' != 0xcafebabe {
|
||||||
print("cafebabe wrong\n");
|
print("cafebabe wrong\n");
|
||||||
sys.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
if i != 0xcc238de1 {
|
if i != 0xcc238de1 {
|
||||||
print("number is ", i, " should be ", 0xcc238de1, "\n");
|
print("number is ", i, " should be ", 0xcc238de1, "\n");
|
||||||
sys.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,15 +12,15 @@ func main() {
|
|||||||
ga, e0 := os.Getenv("GOARCH");
|
ga, e0 := os.Getenv("GOARCH");
|
||||||
if e0 != nil {
|
if e0 != nil {
|
||||||
print("$GOARCH: ", e0.String(), "\n");
|
print("$GOARCH: ", e0.String(), "\n");
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
if ga != "amd64" {
|
if ga != "amd64" {
|
||||||
print("$GOARCH=", ga, "\n");
|
print("$GOARCH=", ga, "\n");
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
xxx, e1 := os.Getenv("DOES_NOT_EXIST");
|
xxx, e1 := os.Getenv("DOES_NOT_EXIST");
|
||||||
if e1 != os.ENOENV {
|
if e1 != os.ENOENV {
|
||||||
print("$DOES_NOT_EXIST=", xxx, "; err = ", e1.String(), "\n");
|
print("$DOES_NOT_EXIST=", xxx, "; err = ", e1.String(), "\n");
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
x float = iota;
|
x float = iota;
|
||||||
g float = 4.5 * iota;
|
g float = 4.5 * iota;
|
||||||
@ -13,5 +15,5 @@ const (
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if g == 0.0 { print("zero\n");}
|
if g == 0.0 { print("zero\n");}
|
||||||
if g != 4.5 { print(" fail\n"); sys.Exit(1); }
|
if g != 4.5 { print(" fail\n"); os.Exit(1); }
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
func P(a []string) string {
|
func P(a []string) string {
|
||||||
s := "{";
|
s := "{";
|
||||||
for i := 0; i < 2; i++ {
|
for i := 0; i < 2; i++ {
|
||||||
@ -29,6 +31,6 @@ func main() {
|
|||||||
a[0] = "x";
|
a[0] = "x";
|
||||||
m["0"][0] = "deleted";
|
m["0"][0] = "deleted";
|
||||||
if m["0"][0] != "deleted" {
|
if m["0"][0] != "deleted" {
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,12 +6,14 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
m := make(map[int]int);
|
m := make(map[int]int);
|
||||||
m[0] = 0;
|
m[0] = 0;
|
||||||
m[0]++;
|
m[0]++;
|
||||||
if m[0] != 1 {
|
if m[0] != 1 {
|
||||||
print("map does not increment\n");
|
print("map does not increment\n");
|
||||||
sys.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
import "strconv";
|
import "strconv";
|
||||||
|
|
||||||
type Test struct {
|
type Test struct {
|
||||||
@ -53,6 +54,6 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !ok {
|
if !ok {
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
type I interface { send(chan <- int) }
|
type I interface { send(chan <- int) }
|
||||||
|
|
||||||
type S struct { v int }
|
type S struct { v int }
|
||||||
@ -16,5 +18,5 @@ func main() {
|
|||||||
var i I = &s;
|
var i I = &s;
|
||||||
c := make(chan int);
|
c := make(chan int);
|
||||||
go i.send(c);
|
go i.send(c);
|
||||||
sys.Exit(<-c);
|
os.Exit(<-c);
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
type S struct { i int }
|
type S struct { i int }
|
||||||
func (p *S) Get() int { return p.i }
|
func (p *S) Get() int { return p.i }
|
||||||
|
|
||||||
@ -18,7 +20,7 @@ type Getter interface {
|
|||||||
|
|
||||||
func f1(p Empty) {
|
func f1(p Empty) {
|
||||||
switch x := p.(type) {
|
switch x := p.(type) {
|
||||||
default: println("failed to match interface"); sys.Exit(1);
|
default: println("failed to match interface"); os.Exit(1);
|
||||||
case Getter: break;
|
case Getter: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
count := 7;
|
count := 7;
|
||||||
if one := 1; {
|
if one := 1; {
|
||||||
@ -13,6 +15,6 @@ func main() {
|
|||||||
}
|
}
|
||||||
if count != 8 {
|
if count != 8 {
|
||||||
print(count, " should be 8\n");
|
print(count, " should be 8\n");
|
||||||
sys.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
s :=
|
s :=
|
||||||
0 +
|
0 +
|
||||||
@ -18,6 +20,6 @@ func main() {
|
|||||||
0X123;
|
0X123;
|
||||||
if s != 788 {
|
if s != 788 {
|
||||||
print("s is ", s, "; should be 788\n");
|
print("s is ", s, "; should be 788\n");
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
const Value = 1e12
|
const Value = 1e12
|
||||||
|
|
||||||
type Inter interface { M() int64 }
|
type Inter interface { M() int64 }
|
||||||
@ -73,6 +75,6 @@ func main() {
|
|||||||
|
|
||||||
if !ok {
|
if !ok {
|
||||||
println("BUG: interface10");
|
println("BUG: interface10");
|
||||||
sys.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
type I interface { M() int64 }
|
type I interface { M() int64 }
|
||||||
|
|
||||||
type BigPtr struct { a, b, c, d int64 }
|
type BigPtr struct { a, b, c, d int64 }
|
||||||
@ -70,6 +72,6 @@ func main() {
|
|||||||
nonptrs();
|
nonptrs();
|
||||||
|
|
||||||
if bad {
|
if bad {
|
||||||
sys.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
var fail int
|
var fail int
|
||||||
|
|
||||||
func check(b bool, msg string) {
|
func check(b bool, msg string) {
|
||||||
@ -145,6 +147,6 @@ func main() {
|
|||||||
f11();
|
f11();
|
||||||
f12();
|
f12();
|
||||||
if fail > 0 {
|
if fail > 0 {
|
||||||
sys.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
import "runtime"
|
||||||
|
|
||||||
var randx int;
|
var randx int;
|
||||||
|
|
||||||
@ -88,7 +90,7 @@ send(c *Chan)
|
|||||||
nproc++; // total goroutines running
|
nproc++; // total goroutines running
|
||||||
for {
|
for {
|
||||||
for r:=nrand(10); r>=0; r-- {
|
for r:=nrand(10); r>=0; r-- {
|
||||||
sys.Gosched();
|
runtime.Gosched();
|
||||||
}
|
}
|
||||||
c.sc <- c.sv;
|
c.sc <- c.sv;
|
||||||
if c.send() {
|
if c.send() {
|
||||||
@ -119,7 +121,7 @@ recv(c *Chan)
|
|||||||
nproc++; // total goroutines running
|
nproc++; // total goroutines running
|
||||||
for {
|
for {
|
||||||
for r:=nrand(10); r>=0; r-- {
|
for r:=nrand(10); r>=0; r-- {
|
||||||
sys.Gosched();
|
runtime.Gosched();
|
||||||
}
|
}
|
||||||
v = <-c.rc;
|
v = <-c.rc;
|
||||||
if c.recv(v) {
|
if c.recv(v) {
|
||||||
@ -148,7 +150,7 @@ sel(r0,r1,r2,r3, s0,s1,s2,s3 *Chan)
|
|||||||
|
|
||||||
for {
|
for {
|
||||||
for r:=nrand(5); r>=0; r-- {
|
for r:=nrand(5); r>=0; r-- {
|
||||||
sys.Gosched();
|
runtime.Gosched();
|
||||||
}
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
@ -270,9 +272,9 @@ test6(c int)
|
|||||||
func
|
func
|
||||||
wait()
|
wait()
|
||||||
{
|
{
|
||||||
sys.Gosched();
|
runtime.Gosched();
|
||||||
for nproc != 0 {
|
for nproc != 0 {
|
||||||
sys.Gosched();
|
runtime.Gosched();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -321,7 +323,7 @@ main()
|
|||||||
|
|
||||||
if tots != t || totr != t {
|
if tots != t || totr != t {
|
||||||
print("tots=", tots, " totr=", totr, " sb=", t, "\n");
|
print("tots=", tots, " totr=", totr, " sb=", t, "\n");
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
sys.Exit(0);
|
os.Exit(0);
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "runtime"
|
||||||
|
|
||||||
const N = 1000; // sent messages
|
const N = 1000; // sent messages
|
||||||
const M = 10; // receiving goroutines
|
const M = 10; // receiving goroutines
|
||||||
const W = 2; // channel buffering
|
const W = 2; // channel buffering
|
||||||
@ -48,9 +50,9 @@ main()
|
|||||||
c := make(chan int, W);
|
c := make(chan int, W);
|
||||||
for m:=0; m<M; m++ {
|
for m:=0; m<M; m++ {
|
||||||
go r(c, m);
|
go r(c, m);
|
||||||
sys.Gosched();
|
runtime.Gosched();
|
||||||
}
|
}
|
||||||
sys.Gosched();
|
runtime.Gosched();
|
||||||
sys.Gosched();
|
runtime.Gosched();
|
||||||
s(c);
|
s(c);
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
var ecode int;
|
var ecode int;
|
||||||
|
|
||||||
func assert(a, b, c string) {
|
func assert(a, b, c string) {
|
||||||
@ -84,5 +86,5 @@ func main() {
|
|||||||
r = 0x10ffff + 1;
|
r = 0x10ffff + 1;
|
||||||
s = string(r);
|
s = string(r);
|
||||||
assert(s, "\xef\xbf\xbd", "too-large rune");
|
assert(s, "\xef\xbf\xbd", "too-large rune");
|
||||||
sys.Exit(ecode);
|
os.Exit(ecode);
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ package main
|
|||||||
|
|
||||||
import(
|
import(
|
||||||
"fmt";
|
"fmt";
|
||||||
|
"os";
|
||||||
"utf8";
|
"utf8";
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -56,6 +57,6 @@ func main() {
|
|||||||
|
|
||||||
if !ok {
|
if !ok {
|
||||||
fmt.Println("BUG: stringrange");
|
fmt.Println("BUG: stringrange");
|
||||||
sys.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,13 +6,15 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
i := 0;
|
i := 0;
|
||||||
switch x := 5; {
|
switch x := 5; {
|
||||||
case i < x:
|
case i < x:
|
||||||
sys.Exit(0);
|
os.Exit(0);
|
||||||
case i == x:
|
case i == x:
|
||||||
case i > x:
|
case i > x:
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
Bool = iota;
|
Bool = iota;
|
||||||
Int;
|
Int;
|
||||||
@ -31,7 +33,7 @@ var m = make(map[string]int)
|
|||||||
func assert(b bool, s string) {
|
func assert(b bool, s string) {
|
||||||
if !b {
|
if !b {
|
||||||
println(s);
|
println(s);
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -641,7 +641,7 @@ func findPackages(name string) *pakInfo {
|
|||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
info.Packages = paks;
|
info.Packages = paks;
|
||||||
if cname == "." {
|
if cname == "." {
|
||||||
info.Path = "";
|
info.Path = "";
|
||||||
@ -704,7 +704,7 @@ func usage() {
|
|||||||
" godoc -http=:6060\n"
|
" godoc -http=:6060\n"
|
||||||
);
|
);
|
||||||
flag.PrintDefaults();
|
flag.PrintDefaults();
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -761,7 +761,7 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Stderrf("packagelistText.Execute: %s", err);
|
log.Stderrf("packagelistText.Execute: %s", err);
|
||||||
}
|
}
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
doc, errors := info.Package.Doc();
|
doc, errors := info.Package.Doc();
|
||||||
@ -770,7 +770,7 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Stderrf("parseerrorText.Execute: %s", err);
|
log.Stderrf("parseerrorText.Execute: %s", err);
|
||||||
}
|
}
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if flag.NArg() > 1 {
|
if flag.NArg() > 1 {
|
||||||
|
@ -41,7 +41,7 @@ func init() {
|
|||||||
func usage() {
|
func usage() {
|
||||||
fmt.Fprintf(os.Stderr, "usage: pretty { flags } { files }\n");
|
fmt.Fprintf(os.Stderr, "usage: pretty { flags } { files }\n");
|
||||||
flag.PrintDefaults();
|
flag.PrintDefaults();
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -127,12 +127,12 @@ func main() {
|
|||||||
src, err := readFile(ast_txt);
|
src, err := readFile(ast_txt);
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "%s: %v\n", ast_txt, err);
|
fmt.Fprintf(os.Stderr, "%s: %v\n", ast_txt, err);
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
ast_format, err := format.Parse(src, format.FormatterMap{"isValidPos": isValidPos, "isSend": isSend, "isRecv": isRecv});
|
ast_format, err := format.Parse(src, format.FormatterMap{"isValidPos": isValidPos, "isSend": isSend, "isRecv": isRecv});
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "%s: format errors:\n%s", ast_txt, err);
|
fmt.Fprintf(os.Stderr, "%s: format errors:\n%s", ast_txt, err);
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// process files
|
// process files
|
||||||
@ -150,7 +150,7 @@ func main() {
|
|||||||
prog, ok := parser.Parse(src, &ErrorHandler{filename, 0}, mode);
|
prog, ok := parser.Parse(src, &ErrorHandler{filename, 0}, mode);
|
||||||
if !ok {
|
if !ok {
|
||||||
exitcode = 1;
|
exitcode = 1;
|
||||||
continue; // proceed with next file
|
continue; // proceed with next file
|
||||||
}
|
}
|
||||||
|
|
||||||
if !*silent {
|
if !*silent {
|
||||||
@ -165,6 +165,6 @@ func main() {
|
|||||||
tw.Flush();
|
tw.Flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sys.Exit(exitcode);
|
os.Exit(exitcode);
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ var (
|
|||||||
|
|
||||||
func error(format string, params ...) {
|
func error(format string, params ...) {
|
||||||
fmt.Printf(format, params);
|
fmt.Printf(format, params);
|
||||||
sys.Exit(1);
|
os.Exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user