# HG changeset patch # User Dan Buch # Date 1315878752 14400 # Node ID d2269170685c798028ce2a600c5fd617dbd61e19 # Parent f928e608d66e9b2b9df83eb076d1934da773134a collapsing tree to get rid of all the makefile sillyness diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 .hgignore --- a/.hgignore Mon Sep 12 09:24:41 2011 -0400 +++ b/.hgignore Mon Sep 12 21:52:32 2011 -0400 @@ -1,1 +1,9 @@ -^bin/.*$ +^.*\.(8|6)$ +allocation +constants +derp +echo +hello +strings +sum +using-file diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 Makefile --- a/Makefile Mon Sep 12 09:24:41 2011 -0400 +++ b/Makefile Mon Sep 12 21:52:32 2011 -0400 @@ -1,20 +1,20 @@ -GOFLAGS := -Wall -g -BINDIR := ./bin -SRC := ./src -ALL := $(patsubst $(SRC)/%.go,$(BINDIR)/%,$(shell ls $(SRC)/*.go)) +GOFLAGS := +ALL := $(patsubst %.go,%,$(shell grep -l "package main" *.go)) +LIBS := $(patsubst %.go,%.8,$(shell grep -vl "package main" *.go)) -$(BINDIR)/%: $(SRC)/%.go - gccgo -o $@ $^ +%: %.8 + 8l -o $@ $(GOFLAGS) $^ +%.8: %.go + 8g -o $@ $(GOFLAGS) $^ -all: $(ALL) - +all: $(LIBS) $(ALL) clean: find -name \*.out -exec rm -f {} \; find -name \*.8 -exec rm -f {} \; - rm -f $(BINDIR)/* + rm -vf $(ALL) -.PHONY: clean all +.PHONY: clean all libs diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 allocation.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/allocation.go Mon Sep 12 21:52:32 2011 -0400 @@ -0,0 +1,17 @@ +package main + +import "fmt" + +func main(){ + type T struct { a, b int } + t := new(T) + + fmt.Printf("t is the return of `new(T)`: %s\n", t) + + m := make(map[string]int) + fmt.Printf("m was made with `make`: %s\n", m) + + m["foo"] = 1 + m["bar"] = 2 + fmt.Printf("m with elements is: %s\n", m) +} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 constants.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/constants.go Mon Sep 12 21:52:32 2011 -0400 @@ -0,0 +1,24 @@ +package main + +import "fmt" + +func main(){ + const hardEight = (1 << 100) >> 97 + + var a uint64 = 0 + b := uint64(0) + i := 0x1234 + var j int = 1e6 + x := 1.5 + i3div2 := 3/2 + f3div2 := 3./2. + + fmt.Printf("hardEight=%d\n", hardEight) + fmt.Printf("a=%d\n", a) + fmt.Printf("b=%d\n", b) + fmt.Printf("i=%d\n", i) + fmt.Printf("j=%d\n", j) + fmt.Printf("x=%f64\n", x) + fmt.Printf("i3div2=%d\n", i3div2) + fmt.Printf("f3div2=%f64\n", f3div2) +} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 derp.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/derp.go Mon Sep 12 21:52:32 2011 -0400 @@ -0,0 +1,7 @@ +package main + +import "fmt" + +func main(){ + fmt.Printf("Like this?\n") +} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 echo.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/echo.go Mon Sep 12 21:52:32 2011 -0400 @@ -0,0 +1,32 @@ +package main + +import ( + "os" + "flag" +) + + +var omitNewline = flag.Bool("n", false, "don't print final newline") + + +const ( + Space = " " + Newline = "\n" +) + + +func main(){ + flag.Parse() + s := "" + n := flag.NArg() + for i := 0; i < n; i++ { + if i > 0 { + s += Space + } + s += flag.Arg(i) + } + if !*omitNewline { + s += Newline + } + os.Stdout.WriteString(s) +} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 file.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/file.go Mon Sep 12 21:52:32 2011 -0400 @@ -0,0 +1,99 @@ +package file + +import ( + "os" + "syscall" +) + +type File struct { + fd int + name string +} + + +func newFile(fd int, name string) *File { + if fd < 0 { + return nil + } + n := new(File) + n.fd = fd + n.name = name + return n + //return &File(fd, name) +} + + +func OpenFile(name string, mode int, perm uint32) (file *File, err os.Error) { + r, e := syscall.Open(name, mode, perm) + if e != 0 { + err = os.Errno(e) + } + return newFile(r, name), err +} + + +const ( + O_RDONLY = syscall.O_RDONLY + O_RDWR = syscall.O_RDWR + O_CREATE = syscall.O_CREAT + O_TRUNC = syscall.O_TRUNC +) + + +func Open(name string) (file *File, err os.Error) { + return OpenFile(name, O_RDONLY, 0) +} + + +func Create(name string) (file *File, err os.Error) { + return OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666) +} + + +func (file *File) Close() os.Error { + if file == nil { + return os.EINVAL + } + e := syscall.Close(file.fd) + file.fd = -1 + if e != 0 { + return os.Errno(e) + } + return nil +} + +func (file *File) Read(b []byte) (ret int, err os.Error) { + if file == nil { + return -1, os.EINVAL + } + r, e := syscall.Read(file.fd, b) + if e != 0 { + err = os.Errno(e) + } + return int(r), err +} + +func (file *File) Write(b []byte) (ret int, err os.Error) { + if file == nil { + return -1, os.EINVAL + } + r, e := syscall.Write(file.fd, b) + if e != 0 { + err = os.Errno(e) + } + return int(r), err +} + +func (file *File) String() string { + return file.name +} + +var ( + Stdin = newFile(syscall.Stdin, "/dev/stdin") + Stdout = newFile(syscall.Stdout, "/dev/stdout") + Stderr = newFile(syscall.Stderr, "/dev/stderr") +) + +/* + * vim:filetype=go + */ diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 hello.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hello.go Mon Sep 12 21:52:32 2011 -0400 @@ -0,0 +1,7 @@ +package main + +import fmt "fmt" + +func main(){ + fmt.Printf("Hello, worlds.\n") +} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 src/allocation.go --- a/src/allocation.go Mon Sep 12 09:24:41 2011 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -package main - -import "fmt" - -func main(){ - type T struct { a, b int } - t := new(T) - - fmt.Printf("t is the return of `new(T)`: %s\n", t) - - m := make(map[string]int) - fmt.Printf("m was made with `make`: %s\n", m) - - m["foo"] = 1 - m["bar"] = 2 - fmt.Printf("m with elements is: %s\n", m) -} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 src/constants.go --- a/src/constants.go Mon Sep 12 09:24:41 2011 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -package main - -import "fmt" - -func main(){ - const hardEight = (1 << 100) >> 97 - - var a uint64 = 0 - b := uint64(0) - i := 0x1234 - var j int = 1e6 - x := 1.5 - i3div2 := 3/2 - f3div2 := 3./2. - - fmt.Printf("hardEight=%d\n", hardEight) - fmt.Printf("a=%d\n", a) - fmt.Printf("b=%d\n", b) - fmt.Printf("i=%d\n", i) - fmt.Printf("j=%d\n", j) - fmt.Printf("x=%f64\n", x) - fmt.Printf("i3div2=%d\n", i3div2) - fmt.Printf("f3div2=%f64\n", f3div2) -} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 src/derp.go --- a/src/derp.go Mon Sep 12 09:24:41 2011 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -package main - -import "fmt" - -func main(){ - fmt.Printf("Like this?\n") -} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 src/echo.go --- a/src/echo.go Mon Sep 12 09:24:41 2011 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -package main - -import ( - "os" - "flag" -) - - -var omitNewline = flag.Bool("n", false, "don't print final newline") - - -const ( - Space = " " - Newline = "\n" -) - - -func main(){ - flag.Parse() - s := "" - n := flag.NArg() - for i := 0; i < n; i++ { - if i > 0 { - s += Space - } - s += flag.Arg(i) - } - if !*omitNewline { - s += Newline - } - os.Stdout.WriteString(s) -} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 src/hello.go --- a/src/hello.go Mon Sep 12 09:24:41 2011 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -package main - -import fmt "fmt" - -func main(){ - fmt.Printf("Hello, worlds.\n") -} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 src/strings.go --- a/src/strings.go Mon Sep 12 09:24:41 2011 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -package main - -import ( - "os" - "fmt" -) - -func main(){ - s := "hello" - if s[1] != 'e' { - os.Exit(1) - } - s = "good bye" - var p *string = &s - *p = "ciao" - - fmt.Printf("All good!\n") -} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 src/sum.go --- a/src/sum.go Mon Sep 12 09:24:41 2011 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -package main - -import "fmt" - -func main() { - n := [3]int{1, 2, 3} - fmt.Printf("The sum of [%d, %d, %d] is %d\n", n[0], n[1], n[2], sum(n[:])) -} - -func sum(a []int) int { - s := 0 - for i := 0; i < len(a); i++ { - s += a[i] - } - return s -} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 strings.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/strings.go Mon Sep 12 21:52:32 2011 -0400 @@ -0,0 +1,18 @@ +package main + +import ( + "os" + "fmt" +) + +func main(){ + s := "hello" + if s[1] != 'e' { + os.Exit(1) + } + s = "good bye" + var p *string = &s + *p = "ciao" + + fmt.Printf("All good!\n") +} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 sum.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sum.go Mon Sep 12 21:52:32 2011 -0400 @@ -0,0 +1,16 @@ +package main + +import "fmt" + +func main() { + n := [3]int{1, 2, 3} + fmt.Printf("The sum of [%d, %d, %d] is %d\n", n[0], n[1], n[2], sum(n[:])) +} + +func sum(a []int) int { + s := 0 + for i := 0; i < len(a); i++ { + s += a[i] + } + return s +} diff -r f928e608d66e9b2b9df83eb076d1934da773134a -r d2269170685c798028ce2a600c5fd617dbd61e19 using-file.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/using-file.go Mon Sep 12 21:52:32 2011 -0400 @@ -0,0 +1,22 @@ +package main + +import ( + "./file" + "fmt" + "os" +) + + +func main(){ + hello := []byte("hello, world\n") + file.Stdout.Write(hello) + f, err := file.Open("/does/not/exist") + if f == nil { + fmt.Printf("can't open file; err=%s\n", err.String()) + os.Exit(1) + } +} + +/* + * vim:filetype=go + */