mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-10-30 23:57:43 +02:00 
			
		
		
		
	prune unnecessary stuff
This commit is contained in:
		
							
								
								
									
										12
									
								
								Gopkg.toml
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								Gopkg.toml
									
									
									
									
									
								
							| @@ -19,11 +19,11 @@ | ||||
| #   name = "github.com/x/y" | ||||
| #   version = "2.4.0" | ||||
| # | ||||
| # [prune] | ||||
| #   non-go = false | ||||
| #   go-tests = true | ||||
| #   unused-packages = true | ||||
|  | ||||
| [prune] | ||||
|   go-tests = true | ||||
|   unused-packages = true | ||||
|   non-go = true | ||||
|  | ||||
| [[constraint]] | ||||
|   name = "github.com/fatih/color" | ||||
| @@ -36,7 +36,3 @@ | ||||
| [[constraint]] | ||||
|   branch = "master" | ||||
|   name = "github.com/jesseduffield/gocui" | ||||
|  | ||||
| [prune] | ||||
|   go-tests = true | ||||
|   unused-packages = true | ||||
|   | ||||
							
								
								
									
										5
									
								
								vendor/github.com/fatih/color/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/fatih/color/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,5 +0,0 @@ | ||||
| language: go | ||||
| go:  | ||||
|  - 1.8.x | ||||
|  - tip | ||||
|  | ||||
							
								
								
									
										27
									
								
								vendor/github.com/fatih/color/Gopkg.lock
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/github.com/fatih/color/Gopkg.lock
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,27 +0,0 @@ | ||||
| # This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. | ||||
|  | ||||
|  | ||||
| [[projects]] | ||||
|   name = "github.com/mattn/go-colorable" | ||||
|   packages = ["."] | ||||
|   revision = "167de6bfdfba052fa6b2d3664c8f5272e23c9072" | ||||
|   version = "v0.0.9" | ||||
|  | ||||
| [[projects]] | ||||
|   name = "github.com/mattn/go-isatty" | ||||
|   packages = ["."] | ||||
|   revision = "0360b2af4f38e8d38c7fce2a9f4e702702d73a39" | ||||
|   version = "v0.0.3" | ||||
|  | ||||
| [[projects]] | ||||
|   branch = "master" | ||||
|   name = "golang.org/x/sys" | ||||
|   packages = ["unix"] | ||||
|   revision = "37707fdb30a5b38865cfb95e5aab41707daec7fd" | ||||
|  | ||||
| [solve-meta] | ||||
|   analyzer-name = "dep" | ||||
|   analyzer-version = 1 | ||||
|   inputs-digest = "e8a50671c3cb93ea935bf210b1cd20702876b9d9226129be581ef646d1565cdc" | ||||
|   solver-name = "gps-cdcl" | ||||
|   solver-version = 1 | ||||
							
								
								
									
										30
									
								
								vendor/github.com/fatih/color/Gopkg.toml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/github.com/fatih/color/Gopkg.toml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,30 +0,0 @@ | ||||
|  | ||||
| # Gopkg.toml example | ||||
| # | ||||
| # Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md | ||||
| # for detailed Gopkg.toml documentation. | ||||
| # | ||||
| # required = ["github.com/user/thing/cmd/thing"] | ||||
| # ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] | ||||
| # | ||||
| # [[constraint]] | ||||
| #   name = "github.com/user/project" | ||||
| #   version = "1.0.0" | ||||
| # | ||||
| # [[constraint]] | ||||
| #   name = "github.com/user/project2" | ||||
| #   branch = "dev" | ||||
| #   source = "github.com/myfork/project2" | ||||
| # | ||||
| # [[override]] | ||||
| #  name = "github.com/x/y" | ||||
| #  version = "2.4.0" | ||||
|  | ||||
|  | ||||
| [[constraint]] | ||||
|   name = "github.com/mattn/go-colorable" | ||||
|   version = "0.0.9" | ||||
|  | ||||
| [[constraint]] | ||||
|   name = "github.com/mattn/go-isatty" | ||||
|   version = "0.0.3" | ||||
							
								
								
									
										179
									
								
								vendor/github.com/fatih/color/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										179
									
								
								vendor/github.com/fatih/color/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,179 +0,0 @@ | ||||
| # Color [](https://godoc.org/github.com/fatih/color) [](https://travis-ci.org/fatih/color) | ||||
|  | ||||
|  | ||||
|  | ||||
| Color lets you use colorized outputs in terms of [ANSI Escape | ||||
| Codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors) in Go (Golang). It | ||||
| has support for Windows too! The API can be used in several ways, pick one that | ||||
| suits you. | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Install | ||||
|  | ||||
| ```bash | ||||
| go get github.com/fatih/color | ||||
| ``` | ||||
|  | ||||
| Note that the `vendor` folder is here for stability. Remove the folder if you | ||||
| already have the dependencies in your GOPATH. | ||||
|  | ||||
| ## Examples | ||||
|  | ||||
| ### Standard colors | ||||
|  | ||||
| ```go | ||||
| // Print with default helper functions | ||||
| color.Cyan("Prints text in cyan.") | ||||
|  | ||||
| // A newline will be appended automatically | ||||
| color.Blue("Prints %s in blue.", "text") | ||||
|  | ||||
| // These are using the default foreground colors | ||||
| color.Red("We have red") | ||||
| color.Magenta("And many others ..") | ||||
|  | ||||
| ``` | ||||
|  | ||||
| ### Mix and reuse colors | ||||
|  | ||||
| ```go | ||||
| // Create a new color object | ||||
| c := color.New(color.FgCyan).Add(color.Underline) | ||||
| c.Println("Prints cyan text with an underline.") | ||||
|  | ||||
| // Or just add them to New() | ||||
| d := color.New(color.FgCyan, color.Bold) | ||||
| d.Printf("This prints bold cyan %s\n", "too!.") | ||||
|  | ||||
| // Mix up foreground and background colors, create new mixes! | ||||
| red := color.New(color.FgRed) | ||||
|  | ||||
| boldRed := red.Add(color.Bold) | ||||
| boldRed.Println("This will print text in bold red.") | ||||
|  | ||||
| whiteBackground := red.Add(color.BgWhite) | ||||
| whiteBackground.Println("Red text with white background.") | ||||
| ``` | ||||
|  | ||||
| ### Use your own output (io.Writer) | ||||
|  | ||||
| ```go | ||||
| // Use your own io.Writer output | ||||
| color.New(color.FgBlue).Fprintln(myWriter, "blue color!") | ||||
|  | ||||
| blue := color.New(color.FgBlue) | ||||
| blue.Fprint(writer, "This will print text in blue.") | ||||
| ``` | ||||
|  | ||||
| ### Custom print functions (PrintFunc) | ||||
|  | ||||
| ```go | ||||
| // Create a custom print function for convenience | ||||
| red := color.New(color.FgRed).PrintfFunc() | ||||
| red("Warning") | ||||
| red("Error: %s", err) | ||||
|  | ||||
| // Mix up multiple attributes | ||||
| notice := color.New(color.Bold, color.FgGreen).PrintlnFunc() | ||||
| notice("Don't forget this...") | ||||
| ``` | ||||
|  | ||||
| ### Custom fprint functions (FprintFunc) | ||||
|  | ||||
| ```go | ||||
| blue := color.New(FgBlue).FprintfFunc() | ||||
| blue(myWriter, "important notice: %s", stars) | ||||
|  | ||||
| // Mix up with multiple attributes | ||||
| success := color.New(color.Bold, color.FgGreen).FprintlnFunc() | ||||
| success(myWriter, "Don't forget this...") | ||||
| ``` | ||||
|  | ||||
| ### Insert into noncolor strings (SprintFunc) | ||||
|  | ||||
| ```go | ||||
| // Create SprintXxx functions to mix strings with other non-colorized strings: | ||||
| yellow := color.New(color.FgYellow).SprintFunc() | ||||
| red := color.New(color.FgRed).SprintFunc() | ||||
| fmt.Printf("This is a %s and this is %s.\n", yellow("warning"), red("error")) | ||||
|  | ||||
| info := color.New(color.FgWhite, color.BgGreen).SprintFunc() | ||||
| fmt.Printf("This %s rocks!\n", info("package")) | ||||
|  | ||||
| // Use helper functions | ||||
| fmt.Println("This", color.RedString("warning"), "should be not neglected.") | ||||
| fmt.Printf("%v %v\n", color.GreenString("Info:"), "an important message.") | ||||
|  | ||||
| // Windows supported too! Just don't forget to change the output to color.Output | ||||
| fmt.Fprintf(color.Output, "Windows support: %s", color.GreenString("PASS")) | ||||
| ``` | ||||
|  | ||||
| ### Plug into existing code | ||||
|  | ||||
| ```go | ||||
| // Use handy standard colors | ||||
| color.Set(color.FgYellow) | ||||
|  | ||||
| fmt.Println("Existing text will now be in yellow") | ||||
| fmt.Printf("This one %s\n", "too") | ||||
|  | ||||
| color.Unset() // Don't forget to unset | ||||
|  | ||||
| // You can mix up parameters | ||||
| color.Set(color.FgMagenta, color.Bold) | ||||
| defer color.Unset() // Use it in your function | ||||
|  | ||||
| fmt.Println("All text will now be bold magenta.") | ||||
| ``` | ||||
|  | ||||
| ### Disable/Enable color | ||||
|   | ||||
| There might be a case where you want to explicitly disable/enable color output. the  | ||||
| `go-isatty` package will automatically disable color output for non-tty output streams  | ||||
| (for example if the output were piped directly to `less`) | ||||
|  | ||||
| `Color` has support to disable/enable colors both globally and for single color  | ||||
| definitions. For example suppose you have a CLI app and a `--no-color` bool flag. You  | ||||
| can easily disable the color output with: | ||||
|  | ||||
| ```go | ||||
|  | ||||
| var flagNoColor = flag.Bool("no-color", false, "Disable color output") | ||||
|  | ||||
| if *flagNoColor { | ||||
| 	color.NoColor = true // disables colorized output | ||||
| } | ||||
| ``` | ||||
|  | ||||
| It also has support for single color definitions (local). You can | ||||
| disable/enable color output on the fly: | ||||
|  | ||||
| ```go | ||||
| c := color.New(color.FgCyan) | ||||
| c.Println("Prints cyan text") | ||||
|  | ||||
| c.DisableColor() | ||||
| c.Println("This is printed without any color") | ||||
|  | ||||
| c.EnableColor() | ||||
| c.Println("This prints again cyan...") | ||||
| ``` | ||||
|  | ||||
| ## Todo | ||||
|  | ||||
| * Save/Return previous values | ||||
| * Evaluate fmt.Formatter interface | ||||
|  | ||||
|  | ||||
| ## Credits | ||||
|  | ||||
|  * [Fatih Arslan](https://github.com/fatih) | ||||
|  * Windows support via @mattn: [colorable](https://github.com/mattn/go-colorable) | ||||
|  | ||||
| ## License | ||||
|  | ||||
| The MIT License (MIT) - see [`LICENSE.md`](https://github.com/fatih/color/blob/master/LICENSE.md) for more details | ||||
|  | ||||
							
								
								
									
										1
									
								
								vendor/github.com/jesseduffield/gocui/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/jesseduffield/gocui/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1 +0,0 @@ | ||||
| *.swp | ||||
							
								
								
									
										110
									
								
								vendor/github.com/jesseduffield/gocui/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										110
									
								
								vendor/github.com/jesseduffield/gocui/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,110 +0,0 @@ | ||||
| # GOCUI - Go Console User Interface | ||||
|  | ||||
| [](https://godoc.org/github.com/jroimartin/gocui) | ||||
|  | ||||
| Minimalist Go package aimed at creating Console User Interfaces. | ||||
|  | ||||
| ## Features | ||||
|  | ||||
| * Minimalist API. | ||||
| * Views (the "windows" in the GUI) implement the interface io.ReadWriter. | ||||
| * Support for overlapping views. | ||||
| * The GUI can be modified at runtime (concurrent-safe). | ||||
| * Global and view-level keybindings. | ||||
| * Mouse support. | ||||
| * Colored text. | ||||
| * Customizable edition mode. | ||||
| * Easy to build reusable widgets, complex layouts... | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| Execute: | ||||
|  | ||||
| ``` | ||||
| $ go get github.com/jroimartin/gocui | ||||
| ``` | ||||
|  | ||||
| ## Documentation | ||||
|  | ||||
| Execute: | ||||
|  | ||||
| ``` | ||||
| $ go doc github.com/jroimartin/gocui | ||||
| ``` | ||||
|  | ||||
| Or visit [godoc.org](https://godoc.org/github.com/jroimartin/gocui) to read it | ||||
| online. | ||||
|  | ||||
| ## Example | ||||
|  | ||||
| ```go | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"log" | ||||
|  | ||||
| 	"github.com/jroimartin/gocui" | ||||
| ) | ||||
|  | ||||
| func main() { | ||||
| 	g, err := gocui.NewGui(gocui.OutputNormal) | ||||
| 	if err != nil { | ||||
| 		log.Panicln(err) | ||||
| 	} | ||||
| 	defer g.Close() | ||||
|  | ||||
| 	g.SetManagerFunc(layout) | ||||
|  | ||||
| 	if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil { | ||||
| 		log.Panicln(err) | ||||
| 	} | ||||
|  | ||||
| 	if err := g.MainLoop(); err != nil && err != gocui.ErrQuit { | ||||
| 		log.Panicln(err) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func layout(g *gocui.Gui) error { | ||||
| 	maxX, maxY := g.Size() | ||||
| 	if v, err := g.SetView("hello", maxX/2-7, maxY/2, maxX/2+7, maxY/2+2); err != nil { | ||||
| 		if err != gocui.ErrUnknownView { | ||||
| 			return err | ||||
| 		} | ||||
| 		fmt.Fprintln(v, "Hello world!") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func quit(g *gocui.Gui, v *gocui.View) error { | ||||
| 	return gocui.ErrQuit | ||||
| } | ||||
| ``` | ||||
|  | ||||
| ## Screenshots | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Projects using gocui | ||||
|  | ||||
| * [komanda-cli](https://github.com/mephux/komanda-cli): IRC Client For Developers. | ||||
| * [vuls](https://github.com/future-architect/vuls): Agentless vulnerability scanner for Linux/FreeBSD. | ||||
| * [wuzz](https://github.com/asciimoo/wuzz): Interactive cli tool for HTTP inspection. | ||||
| * [httplab](https://github.com/gchaincl/httplab): Interactive web server. | ||||
| * [domainr](https://github.com/MichaelThessel/domainr): Tool that checks the availability of domains based on keywords. | ||||
| * [gotime](https://github.com/nanohard/gotime): Time tracker for projects and tasks. | ||||
| * [claws](https://github.com/thehowl/claws): Interactive command line client for testing websockets. | ||||
| * [terminews](http://github.com/antavelos/terminews): Terminal based RSS reader. | ||||
| * [diagram](https://github.com/esimov/diagram): Tool to convert ascii arts into hand drawn diagrams. | ||||
| * [pody](https://github.com/JulienBreux/pody): CLI app to manage Pods in a Kubernetes cluster. | ||||
| * [kubexp](https://github.com/alitari/kubexp): Kubernetes client. | ||||
| * [kcli](https://github.com/cswank/kcli): Tool for inspecting kafka topics/partitions/messages. | ||||
| * [fac](https://github.com/mkchoi212/fac): git merge conflict resolver | ||||
| * [jsonui](https://github.com/gulyasm/jsonui): Interactive JSON explorer for your terminal. | ||||
| * [cointop](https://github.com/miguelmota/cointop): Interactive terminal based UI application for tracking cryptocurrencies. | ||||
|  | ||||
| Note: if your project is not listed here, let us know! :) | ||||
							
								
								
									
										9
									
								
								vendor/github.com/mattn/go-colorable/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/mattn/go-colorable/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,9 +0,0 @@ | ||||
| language: go | ||||
| go: | ||||
|   - tip | ||||
|  | ||||
| before_install: | ||||
|   - go get github.com/mattn/goveralls | ||||
|   - go get golang.org/x/tools/cmd/cover | ||||
| script: | ||||
|   - $HOME/gopath/bin/goveralls -repotoken xnXqRGwgW3SXIguzxf90ZSK1GPYZPaGrw | ||||
							
								
								
									
										48
									
								
								vendor/github.com/mattn/go-colorable/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										48
									
								
								vendor/github.com/mattn/go-colorable/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,48 +0,0 @@ | ||||
| # go-colorable | ||||
|  | ||||
| [](http://godoc.org/github.com/mattn/go-colorable) | ||||
| [](https://travis-ci.org/mattn/go-colorable) | ||||
| [](https://coveralls.io/github/mattn/go-colorable?branch=master) | ||||
| [](https://goreportcard.com/report/mattn/go-colorable) | ||||
|  | ||||
| Colorable writer for windows. | ||||
|  | ||||
| For example, most of logger packages doesn't show colors on windows. (I know we can do it with ansicon. But I don't want.) | ||||
| This package is possible to handle escape sequence for ansi color on windows. | ||||
|  | ||||
| ## Too Bad! | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| ## So Good! | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Usage | ||||
|  | ||||
| ```go | ||||
| logrus.SetFormatter(&logrus.TextFormatter{ForceColors: true}) | ||||
| logrus.SetOutput(colorable.NewColorableStdout()) | ||||
|  | ||||
| logrus.Info("succeeded") | ||||
| logrus.Warn("not correct") | ||||
| logrus.Error("something error") | ||||
| logrus.Fatal("panic") | ||||
| ``` | ||||
|  | ||||
| You can compile above code on non-windows OSs. | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| ``` | ||||
| $ go get github.com/mattn/go-colorable | ||||
| ``` | ||||
|  | ||||
| # License | ||||
|  | ||||
| MIT | ||||
|  | ||||
| # Author | ||||
|  | ||||
| Yasuhiro Matsumoto (a.k.a mattn) | ||||
							
								
								
									
										9
									
								
								vendor/github.com/mattn/go-isatty/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/mattn/go-isatty/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,9 +0,0 @@ | ||||
| language: go | ||||
| go: | ||||
|   - tip | ||||
|  | ||||
| before_install: | ||||
|   - go get github.com/mattn/goveralls | ||||
|   - go get golang.org/x/tools/cmd/cover | ||||
| script: | ||||
|   - $HOME/gopath/bin/goveralls -repotoken 3gHdORO5k5ziZcWMBxnd9LrMZaJs8m9x5 | ||||
							
								
								
									
										50
									
								
								vendor/github.com/mattn/go-isatty/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										50
									
								
								vendor/github.com/mattn/go-isatty/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,50 +0,0 @@ | ||||
| # go-isatty | ||||
|  | ||||
| [](http://godoc.org/github.com/mattn/go-isatty) | ||||
| [](https://travis-ci.org/mattn/go-isatty) | ||||
| [](https://coveralls.io/github/mattn/go-isatty?branch=master) | ||||
| [](https://goreportcard.com/report/mattn/go-isatty) | ||||
|  | ||||
| isatty for golang | ||||
|  | ||||
| ## Usage | ||||
|  | ||||
| ```go | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"github.com/mattn/go-isatty" | ||||
| 	"os" | ||||
| ) | ||||
|  | ||||
| func main() { | ||||
| 	if isatty.IsTerminal(os.Stdout.Fd()) { | ||||
| 		fmt.Println("Is Terminal") | ||||
| 	} else if isatty.IsCygwinTerminal(os.Stdout.Fd()) { | ||||
| 		fmt.Println("Is Cygwin/MSYS2 Terminal") | ||||
| 	} else { | ||||
| 		fmt.Println("Is Not Terminal") | ||||
| 	} | ||||
| } | ||||
| ``` | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| ``` | ||||
| $ go get github.com/mattn/go-isatty | ||||
| ``` | ||||
|  | ||||
| ## License | ||||
|  | ||||
| MIT | ||||
|  | ||||
| ## Author | ||||
|  | ||||
| Yasuhiro Matsumoto (a.k.a mattn) | ||||
|  | ||||
| ## Thanks | ||||
|  | ||||
| * k-takata: base idea for IsCygwinTerminal | ||||
|  | ||||
|     https://github.com/k-takata/go-iscygpty | ||||
							
								
								
									
										8
									
								
								vendor/github.com/mattn/go-runewidth/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/mattn/go-runewidth/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,8 +0,0 @@ | ||||
| language: go | ||||
| go: | ||||
|   - tip | ||||
| before_install: | ||||
|   - go get github.com/mattn/goveralls | ||||
|   - go get golang.org/x/tools/cmd/cover | ||||
| script: | ||||
|     - $HOME/gopath/bin/goveralls -repotoken lAKAWPzcGsD3A8yBX3BGGtRUdJ6CaGERL | ||||
							
								
								
									
										27
									
								
								vendor/github.com/mattn/go-runewidth/README.mkd
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/github.com/mattn/go-runewidth/README.mkd
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,27 +0,0 @@ | ||||
| go-runewidth | ||||
| ============ | ||||
|  | ||||
| [](https://travis-ci.org/mattn/go-runewidth) | ||||
| [](https://coveralls.io/r/mattn/go-runewidth?branch=HEAD) | ||||
| [](http://godoc.org/github.com/mattn/go-runewidth) | ||||
| [](https://goreportcard.com/report/github.com/mattn/go-runewidth) | ||||
|  | ||||
| Provides functions to get fixed width of the character or string. | ||||
|  | ||||
| Usage | ||||
| ----- | ||||
|  | ||||
| ```go | ||||
| runewidth.StringWidth("つのだ☆HIRO") == 12 | ||||
| ``` | ||||
|  | ||||
|  | ||||
| Author | ||||
| ------ | ||||
|  | ||||
| Yasuhiro Matsumoto | ||||
|  | ||||
| License | ||||
| ------- | ||||
|  | ||||
| under the MIT License: http://mattn.mit-license.org/2013 | ||||
							
								
								
									
										43
									
								
								vendor/github.com/nsf/termbox-go/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										43
									
								
								vendor/github.com/nsf/termbox-go/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,43 +0,0 @@ | ||||
| [](http://godoc.org/github.com/nsf/termbox-go) | ||||
|  | ||||
| ## Termbox | ||||
| Termbox is a library that provides a minimalistic API which allows the programmer to write text-based user interfaces. The library is crossplatform and has both terminal-based implementations on *nix operating systems and a winapi console based implementation for windows operating systems. The basic idea is an abstraction of the greatest common subset of features available on all major terminals and other terminal-like APIs in a minimalistic fashion. Small API means it is easy to implement, test, maintain and learn it, that's what makes the termbox a distinct library in its area. | ||||
|  | ||||
| ### Installation | ||||
| Install and update this go package with `go get -u github.com/nsf/termbox-go` | ||||
|  | ||||
| ### Examples | ||||
| For examples of what can be done take a look at demos in the _demos directory. You can try them with go run: `go run _demos/keyboard.go` | ||||
|  | ||||
| There are also some interesting projects using termbox-go: | ||||
|  - [godit](https://github.com/nsf/godit) is an emacsish lightweight text editor written using termbox. | ||||
|  - [gotetris](https://github.com/jjinux/gotetris) is an implementation of Tetris. | ||||
|  - [sokoban-go](https://github.com/rn2dy/sokoban-go) is an implementation of sokoban game. | ||||
|  - [hecate](https://github.com/evanmiller/hecate) is a hex editor designed by Satan. | ||||
|  - [httopd](https://github.com/verdverm/httopd) is top for httpd logs. | ||||
|  - [mop](https://github.com/mop-tracker/mop) is stock market tracker for hackers. | ||||
|  - [termui](https://github.com/gizak/termui) is a terminal dashboard. | ||||
|  - [termloop](https://github.com/JoelOtter/termloop) is a terminal game engine. | ||||
|  - [xterm-color-chart](https://github.com/kutuluk/xterm-color-chart) is a XTerm 256 color chart. | ||||
|  - [gocui](https://github.com/jroimartin/gocui) is a minimalist Go library aimed at creating console user interfaces. | ||||
|  - [dry](https://github.com/moncho/dry) is an interactive cli to manage Docker containers. | ||||
|  - [pxl](https://github.com/ichinaski/pxl) displays images in the terminal. | ||||
|  - [snake-game](https://github.com/DyegoCosta/snake-game) is an implementation of the Snake game. | ||||
|  - [gone](https://github.com/guillaumebreton/gone) is a CLI pomodoro® timer. | ||||
|  - [Spoof.go](https://github.com/sabey/spoofgo) controllable movement spoofing from the cli | ||||
|  - [lf](https://github.com/gokcehan/lf) is a terminal file manager | ||||
|  - [rat](https://github.com/ericfreese/rat) lets you compose shell commands to build terminal applications. | ||||
|  - [httplab](https://github.com/gchaincl/httplab) An interactive web server. | ||||
|  - [tetris](https://github.com/MichaelS11/tetris) Go Tetris with AI option | ||||
|  - [wot](https://github.com/kyu-suke/wot) Wait time during command is completed. | ||||
|  - [2048-go](https://github.com/1984weed/2048-go) is 2048 in Go | ||||
|  - [jv](https://github.com/maxzender/jv) helps you view JSON on the command-line. | ||||
|  - [pinger](https://github.com/hirose31/pinger) helps you to monitor numerous hosts using ICMP ECHO_REQUEST. | ||||
|  - [vixl44](https://github.com/sebashwa/vixl44) lets you create pixel art inside your terminal using vim movements | ||||
|  - [zterm](https://github.com/varunrau/zterm) is a typing game inspired by http://zty.pe/ | ||||
|  - [gotypist](https://github.com/pb-/gotypist) is a fun touch-typing tutor following Steve Yegge's method. | ||||
|  - [cointop](https://github.com/miguelmota/cointop) is an interactive terminal based UI application for tracking cryptocurrencies. | ||||
|  - [pexpo](https://github.com/nnao45/pexpo) is a terminal sending ping tool written in Go. | ||||
|  | ||||
| ### API reference | ||||
| [godoc.org/github.com/nsf/termbox-go](http://godoc.org/github.com/nsf/termbox-go) | ||||
							
								
								
									
										110
									
								
								vendor/github.com/nsf/termbox-go/collect_terminfo.py
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										110
									
								
								vendor/github.com/nsf/termbox-go/collect_terminfo.py
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,110 +0,0 @@ | ||||
| #!/usr/bin/env python | ||||
|  | ||||
| import sys, os, subprocess | ||||
|  | ||||
| def escaped(s): | ||||
| 	return repr(s)[1:-1] | ||||
|  | ||||
| def tput(term, name): | ||||
| 	try: | ||||
| 		return subprocess.check_output(['tput', '-T%s' % term, name]).decode() | ||||
| 	except subprocess.CalledProcessError as e: | ||||
| 		return e.output.decode() | ||||
|  | ||||
|  | ||||
| def w(s): | ||||
| 	if s == None: | ||||
| 		return | ||||
| 	sys.stdout.write(s) | ||||
|  | ||||
| terminals = { | ||||
| 	'xterm' : 'xterm', | ||||
| 	'rxvt-256color' : 'rxvt_256color', | ||||
| 	'rxvt-unicode' : 'rxvt_unicode', | ||||
| 	'linux' : 'linux', | ||||
| 	'Eterm' : 'eterm', | ||||
| 	'screen' : 'screen' | ||||
| } | ||||
|  | ||||
| keys = [ | ||||
| 	"F1",		"kf1", | ||||
| 	"F2",		"kf2", | ||||
| 	"F3",		"kf3", | ||||
| 	"F4",		"kf4", | ||||
| 	"F5",		"kf5", | ||||
| 	"F6",		"kf6", | ||||
| 	"F7",		"kf7", | ||||
| 	"F8",		"kf8", | ||||
| 	"F9",		"kf9", | ||||
| 	"F10",		"kf10", | ||||
| 	"F11",		"kf11", | ||||
| 	"F12",		"kf12", | ||||
| 	"INSERT",	"kich1", | ||||
| 	"DELETE",	"kdch1", | ||||
| 	"HOME",		"khome", | ||||
| 	"END",		"kend", | ||||
| 	"PGUP",		"kpp", | ||||
| 	"PGDN",		"knp", | ||||
| 	"KEY_UP",	"kcuu1", | ||||
| 	"KEY_DOWN",	"kcud1", | ||||
| 	"KEY_LEFT",	"kcub1", | ||||
| 	"KEY_RIGHT",	"kcuf1" | ||||
| ] | ||||
|  | ||||
| funcs = [ | ||||
| 	"T_ENTER_CA",		"smcup", | ||||
| 	"T_EXIT_CA",		"rmcup", | ||||
| 	"T_SHOW_CURSOR",	"cnorm", | ||||
| 	"T_HIDE_CURSOR",	"civis", | ||||
| 	"T_CLEAR_SCREEN",	"clear", | ||||
| 	"T_SGR0",		"sgr0", | ||||
| 	"T_UNDERLINE",		"smul", | ||||
| 	"T_BOLD",		"bold", | ||||
| 	"T_BLINK",		"blink", | ||||
| 	"T_REVERSE",            "rev", | ||||
| 	"T_ENTER_KEYPAD",	"smkx", | ||||
| 	"T_EXIT_KEYPAD",	"rmkx" | ||||
| ] | ||||
|  | ||||
| def iter_pairs(iterable): | ||||
| 	iterable = iter(iterable) | ||||
| 	while True: | ||||
| 		yield (next(iterable), next(iterable)) | ||||
|  | ||||
| def do_term(term, nick): | ||||
| 	w("// %s\n" % term) | ||||
| 	w("var %s_keys = []string{\n\t" % nick) | ||||
| 	for k, v in iter_pairs(keys): | ||||
| 		w('"') | ||||
| 		w(escaped(tput(term, v))) | ||||
| 		w('",') | ||||
| 	w("\n}\n") | ||||
| 	w("var %s_funcs = []string{\n\t" % nick) | ||||
| 	for k,v in iter_pairs(funcs): | ||||
| 		w('"') | ||||
| 		if v == "sgr": | ||||
| 			w("\\033[3%d;4%dm") | ||||
| 		elif v == "cup": | ||||
| 			w("\\033[%d;%dH") | ||||
| 		else: | ||||
| 			w(escaped(tput(term, v))) | ||||
| 		w('", ') | ||||
| 	w("\n}\n\n") | ||||
|  | ||||
| def do_terms(d): | ||||
| 	w("var terms = []struct {\n") | ||||
| 	w("\tname  string\n") | ||||
| 	w("\tkeys  []string\n") | ||||
| 	w("\tfuncs []string\n") | ||||
| 	w("}{\n") | ||||
| 	for k, v in d.items(): | ||||
| 		w('\t{"%s", %s_keys, %s_funcs},\n' % (k, v, v)) | ||||
| 	w("}\n\n") | ||||
|  | ||||
| w("// +build !windows\n\npackage termbox\n\n") | ||||
|  | ||||
| for k,v in terminals.items(): | ||||
| 	do_term(k, v) | ||||
|  | ||||
| do_terms(terminals) | ||||
|  | ||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/sys/unix/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/sys/unix/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,2 +0,0 @@ | ||||
| _obj/ | ||||
| unix.test | ||||
							
								
								
									
										173
									
								
								vendor/golang.org/x/sys/unix/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										173
									
								
								vendor/golang.org/x/sys/unix/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,173 +0,0 @@ | ||||
| # Building `sys/unix` | ||||
|  | ||||
| The sys/unix package provides access to the raw system call interface of the | ||||
| underlying operating system. See: https://godoc.org/golang.org/x/sys/unix | ||||
|  | ||||
| Porting Go to a new architecture/OS combination or adding syscalls, types, or | ||||
| constants to an existing architecture/OS pair requires some manual effort; | ||||
| however, there are tools that automate much of the process. | ||||
|  | ||||
| ## Build Systems | ||||
|  | ||||
| There are currently two ways we generate the necessary files. We are currently | ||||
| migrating the build system to use containers so the builds are reproducible. | ||||
| This is being done on an OS-by-OS basis. Please update this documentation as | ||||
| components of the build system change. | ||||
|  | ||||
| ### Old Build System (currently for `GOOS != "Linux" || GOARCH == "sparc64"`) | ||||
|  | ||||
| The old build system generates the Go files based on the C header files | ||||
| present on your system. This means that files | ||||
| for a given GOOS/GOARCH pair must be generated on a system with that OS and | ||||
| architecture. This also means that the generated code can differ from system | ||||
| to system, based on differences in the header files. | ||||
|  | ||||
| To avoid this, if you are using the old build system, only generate the Go | ||||
| files on an installation with unmodified header files. It is also important to | ||||
| keep track of which version of the OS the files were generated from (ex. | ||||
| Darwin 14 vs Darwin 15). This makes it easier to track the progress of changes | ||||
| and have each OS upgrade correspond to a single change. | ||||
|  | ||||
| To build the files for your current OS and architecture, make sure GOOS and | ||||
| GOARCH are set correctly and run `mkall.sh`. This will generate the files for | ||||
| your specific system. Running `mkall.sh -n` shows the commands that will be run. | ||||
|  | ||||
| Requirements: bash, perl, go | ||||
|  | ||||
| ### New Build System (currently for `GOOS == "Linux" && GOARCH != "sparc64"`) | ||||
|  | ||||
| The new build system uses a Docker container to generate the go files directly | ||||
| from source checkouts of the kernel and various system libraries. This means | ||||
| that on any platform that supports Docker, all the files using the new build | ||||
| system can be generated at once, and generated files will not change based on | ||||
| what the person running the scripts has installed on their computer. | ||||
|  | ||||
| The OS specific files for the new build system are located in the `${GOOS}` | ||||
| directory, and the build is coordinated by the `${GOOS}/mkall.go` program. When | ||||
| the kernel or system library updates, modify the Dockerfile at | ||||
| `${GOOS}/Dockerfile` to checkout the new release of the source. | ||||
|  | ||||
| To build all the files under the new build system, you must be on an amd64/Linux | ||||
| system and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will | ||||
| then generate all of the files for all of the GOOS/GOARCH pairs in the new build | ||||
| system. Running `mkall.sh -n` shows the commands that will be run. | ||||
|  | ||||
| Requirements: bash, perl, go, docker | ||||
|  | ||||
| ## Component files | ||||
|  | ||||
| This section describes the various files used in the code generation process. | ||||
| It also contains instructions on how to modify these files to add a new | ||||
| architecture/OS or to add additional syscalls, types, or constants. Note that | ||||
| if you are using the new build system, the scripts cannot be called normally. | ||||
| They must be called from within the docker container. | ||||
|  | ||||
| ### asm files | ||||
|  | ||||
| The hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system | ||||
| call dispatch. There are three entry points: | ||||
| ``` | ||||
|   func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) | ||||
|   func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr) | ||||
|   func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) | ||||
| ``` | ||||
| The first and second are the standard ones; they differ only in how many | ||||
| arguments can be passed to the kernel. The third is for low-level use by the | ||||
| ForkExec wrapper. Unlike the first two, it does not call into the scheduler to | ||||
| let it know that a system call is running. | ||||
|  | ||||
| When porting Go to an new architecture/OS, this file must be implemented for | ||||
| each GOOS/GOARCH pair. | ||||
|  | ||||
| ### mksysnum | ||||
|  | ||||
| Mksysnum is a script located at `${GOOS}/mksysnum.pl` (or `mksysnum_${GOOS}.pl` | ||||
| for the old system). This script takes in a list of header files containing the | ||||
| syscall number declarations and parses them to produce the corresponding list of | ||||
| Go numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated | ||||
| constants. | ||||
|  | ||||
| Adding new syscall numbers is mostly done by running the build on a sufficiently | ||||
| new installation of the target OS (or updating the source checkouts for the | ||||
| new build system). However, depending on the OS, you make need to update the | ||||
| parsing in mksysnum. | ||||
|  | ||||
| ### mksyscall.pl | ||||
|  | ||||
| The `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are | ||||
| hand-written Go files which implement system calls (for unix, the specific OS, | ||||
| or the specific OS/Architecture pair respectively) that need special handling | ||||
| and list `//sys` comments giving prototypes for ones that can be generated. | ||||
|  | ||||
| The mksyscall.pl script takes the `//sys` and `//sysnb` comments and converts | ||||
| them into syscalls. This requires the name of the prototype in the comment to | ||||
| match a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function | ||||
| prototype can be exported (capitalized) or not. | ||||
|  | ||||
| Adding a new syscall often just requires adding a new `//sys` function prototype | ||||
| with the desired arguments and a capitalized name so it is exported. However, if | ||||
| you want the interface to the syscall to be different, often one will make an | ||||
| unexported `//sys` prototype, an then write a custom wrapper in | ||||
| `syscall_${GOOS}.go`. | ||||
|  | ||||
| ### types files | ||||
|  | ||||
| For each OS, there is a hand-written Go file at `${GOOS}/types.go` (or | ||||
| `types_${GOOS}.go` on the old system). This file includes standard C headers and | ||||
| creates Go type aliases to the corresponding C types. The file is then fed | ||||
| through godef to get the Go compatible definitions. Finally, the generated code | ||||
| is fed though mkpost.go to format the code correctly and remove any hidden or | ||||
| private identifiers. This cleaned-up code is written to | ||||
| `ztypes_${GOOS}_${GOARCH}.go`. | ||||
|  | ||||
| The hardest part about preparing this file is figuring out which headers to | ||||
| include and which symbols need to be `#define`d to get the actual data | ||||
| structures that pass through to the kernel system calls. Some C libraries | ||||
| preset alternate versions for binary compatibility and translate them on the | ||||
| way in and out of system calls, but there is almost always a `#define` that can | ||||
| get the real ones. | ||||
| See `types_darwin.go` and `linux/types.go` for examples. | ||||
|  | ||||
| To add a new type, add in the necessary include statement at the top of the | ||||
| file (if it is not already there) and add in a type alias line. Note that if | ||||
| your type is significantly different on different architectures, you may need | ||||
| some `#if/#elif` macros in your include statements. | ||||
|  | ||||
| ### mkerrors.sh | ||||
|  | ||||
| This script is used to generate the system's various constants. This doesn't | ||||
| just include the error numbers and error strings, but also the signal numbers | ||||
| an a wide variety of miscellaneous constants. The constants come from the list | ||||
| of include files in the `includes_${uname}` variable. A regex then picks out | ||||
| the desired `#define` statements, and generates the corresponding Go constants. | ||||
| The error numbers and strings are generated from `#include <errno.h>`, and the | ||||
| signal numbers and strings are generated from `#include <signal.h>`. All of | ||||
| these constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program, | ||||
| `_errors.c`, which prints out all the constants. | ||||
|  | ||||
| To add a constant, add the header that includes it to the appropriate variable. | ||||
| Then, edit the regex (if necessary) to match the desired constant. Avoid making | ||||
| the regex too broad to avoid matching unintended constants. | ||||
|  | ||||
|  | ||||
| ## Generated files | ||||
|  | ||||
| ### `zerror_${GOOS}_${GOARCH}.go` | ||||
|  | ||||
| A file containing all of the system's generated error numbers, error strings, | ||||
| signal numbers, and constants. Generated by `mkerrors.sh` (see above). | ||||
|  | ||||
| ### `zsyscall_${GOOS}_${GOARCH}.go` | ||||
|  | ||||
| A file containing all the generated syscalls for a specific GOOS and GOARCH. | ||||
| Generated by `mksyscall.pl` (see above). | ||||
|  | ||||
| ### `zsysnum_${GOOS}_${GOARCH}.go` | ||||
|  | ||||
| A list of numeric constants for all the syscall number of the specific GOOS | ||||
| and GOARCH. Generated by mksysnum (see above). | ||||
|  | ||||
| ### `ztypes_${GOOS}_${GOARCH}.go` | ||||
|  | ||||
| A file containing Go types for passing into (or returning from) syscalls. | ||||
| Generated by godefs and the types file (see above). | ||||
							
								
								
									
										188
									
								
								vendor/golang.org/x/sys/unix/mkall.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										188
									
								
								vendor/golang.org/x/sys/unix/mkall.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,188 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
| # 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. | ||||
|  | ||||
| # This script runs or (given -n) prints suggested commands to generate files for | ||||
| # the Architecture/OS specified by the GOARCH and GOOS environment variables. | ||||
| # See README.md for more information about how the build system works. | ||||
|  | ||||
| GOOSARCH="${GOOS}_${GOARCH}" | ||||
|  | ||||
| # defaults | ||||
| mksyscall="./mksyscall.pl" | ||||
| mkerrors="./mkerrors.sh" | ||||
| zerrors="zerrors_$GOOSARCH.go" | ||||
| mksysctl="" | ||||
| zsysctl="zsysctl_$GOOSARCH.go" | ||||
| mksysnum= | ||||
| mktypes= | ||||
| run="sh" | ||||
| cmd="" | ||||
|  | ||||
| case "$1" in | ||||
| -syscalls) | ||||
| 	for i in zsyscall*go | ||||
| 	do | ||||
| 		# Run the command line that appears in the first line | ||||
| 		# of the generated file to regenerate it. | ||||
| 		sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i | ||||
| 		rm _$i | ||||
| 	done | ||||
| 	exit 0 | ||||
| 	;; | ||||
| -n) | ||||
| 	run="cat" | ||||
| 	cmd="echo" | ||||
| 	shift | ||||
| esac | ||||
|  | ||||
| case "$#" in | ||||
| 0) | ||||
| 	;; | ||||
| *) | ||||
| 	echo 'usage: mkall.sh [-n]' 1>&2 | ||||
| 	exit 2 | ||||
| esac | ||||
|  | ||||
| if [[ "$GOOS" = "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then | ||||
| 	# Use then new build system | ||||
| 	# Files generated through docker (use $cmd so you can Ctl-C the build or run) | ||||
| 	$cmd docker build --tag generate:$GOOS $GOOS | ||||
| 	$cmd docker run --interactive --tty --volume $(dirname "$(readlink -f "$0")"):/build generate:$GOOS | ||||
| 	exit | ||||
| fi | ||||
|  | ||||
| GOOSARCH_in=syscall_$GOOSARCH.go | ||||
| case "$GOOSARCH" in | ||||
| _* | *_ | _) | ||||
| 	echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2 | ||||
| 	exit 1 | ||||
| 	;; | ||||
| darwin_386) | ||||
| 	mkerrors="$mkerrors -m32" | ||||
| 	mksyscall="./mksyscall.pl -l32" | ||||
| 	mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| darwin_amd64) | ||||
| 	mkerrors="$mkerrors -m64" | ||||
| 	mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| darwin_arm) | ||||
| 	mkerrors="$mkerrors" | ||||
| 	mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| darwin_arm64) | ||||
| 	mkerrors="$mkerrors -m64" | ||||
| 	mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| dragonfly_amd64) | ||||
| 	mkerrors="$mkerrors -m64" | ||||
| 	mksyscall="./mksyscall.pl -dragonfly" | ||||
| 	mksysnum="curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| freebsd_386) | ||||
| 	mkerrors="$mkerrors -m32" | ||||
| 	mksyscall="./mksyscall.pl -l32" | ||||
| 	mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| freebsd_amd64) | ||||
| 	mkerrors="$mkerrors -m64" | ||||
| 	mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| freebsd_arm) | ||||
| 	mkerrors="$mkerrors" | ||||
| 	mksyscall="./mksyscall.pl -l32 -arm" | ||||
| 	mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" | ||||
| 	# Let the type of C char be signed for making the bare syscall | ||||
| 	# API consistent across platforms. | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" | ||||
| 	;; | ||||
| linux_sparc64) | ||||
| 	GOOSARCH_in=syscall_linux_sparc64.go | ||||
| 	unistd_h=/usr/include/sparc64-linux-gnu/asm/unistd.h | ||||
| 	mkerrors="$mkerrors -m64" | ||||
| 	mksysnum="./mksysnum_linux.pl $unistd_h" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| netbsd_386) | ||||
| 	mkerrors="$mkerrors -m32" | ||||
| 	mksyscall="./mksyscall.pl -l32 -netbsd" | ||||
| 	mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| netbsd_amd64) | ||||
| 	mkerrors="$mkerrors -m64" | ||||
| 	mksyscall="./mksyscall.pl -netbsd" | ||||
| 	mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| netbsd_arm) | ||||
| 	mkerrors="$mkerrors" | ||||
| 	mksyscall="./mksyscall.pl -l32 -netbsd -arm" | ||||
| 	mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl" | ||||
| 	# Let the type of C char be signed for making the bare syscall | ||||
| 	# API consistent across platforms. | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" | ||||
| 	;; | ||||
| openbsd_386) | ||||
| 	mkerrors="$mkerrors -m32" | ||||
| 	mksyscall="./mksyscall.pl -l32 -openbsd" | ||||
| 	mksysctl="./mksysctl_openbsd.pl" | ||||
| 	mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| openbsd_amd64) | ||||
| 	mkerrors="$mkerrors -m64" | ||||
| 	mksyscall="./mksyscall.pl -openbsd" | ||||
| 	mksysctl="./mksysctl_openbsd.pl" | ||||
| 	mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| openbsd_arm) | ||||
| 	mkerrors="$mkerrors" | ||||
| 	mksyscall="./mksyscall.pl -l32 -openbsd -arm" | ||||
| 	mksysctl="./mksysctl_openbsd.pl" | ||||
| 	mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl" | ||||
| 	# Let the type of C char be signed for making the bare syscall | ||||
| 	# API consistent across platforms. | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" | ||||
| 	;; | ||||
| solaris_amd64) | ||||
| 	mksyscall="./mksyscall_solaris.pl" | ||||
| 	mkerrors="$mkerrors -m64" | ||||
| 	mksysnum= | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| *) | ||||
| 	echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2 | ||||
| 	exit 1 | ||||
| 	;; | ||||
| esac | ||||
|  | ||||
| ( | ||||
| 	if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi | ||||
| 	case "$GOOS" in | ||||
| 	*) | ||||
| 		syscall_goos="syscall_$GOOS.go" | ||||
| 		case "$GOOS" in | ||||
| 		darwin | dragonfly | freebsd | netbsd | openbsd) | ||||
| 			syscall_goos="syscall_bsd.go $syscall_goos" | ||||
| 			;; | ||||
| 		esac | ||||
| 		if [ -n "$mksyscall" ]; then echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; fi | ||||
| 		;; | ||||
| 	esac | ||||
| 	if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi | ||||
| 	if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi | ||||
| 	if [ -n "$mktypes" ]; then | ||||
| 		echo "$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go"; | ||||
| 	fi | ||||
| ) | $run | ||||
							
								
								
									
										605
									
								
								vendor/golang.org/x/sys/unix/mkerrors.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										605
									
								
								vendor/golang.org/x/sys/unix/mkerrors.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,605 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
| # 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. | ||||
|  | ||||
| # Generate Go code listing errors and other #defined constant | ||||
| # values (ENAMETOOLONG etc.), by asking the preprocessor | ||||
| # about the definitions. | ||||
|  | ||||
| unset LANG | ||||
| export LC_ALL=C | ||||
| export LC_CTYPE=C | ||||
|  | ||||
| if test -z "$GOARCH" -o -z "$GOOS"; then | ||||
| 	echo 1>&2 "GOARCH or GOOS not defined in environment" | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| # Check that we are using the new build system if we should | ||||
| if [[ "$GOOS" = "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then | ||||
| 	if [[ "$GOLANG_SYS_BUILD" != "docker" ]]; then | ||||
| 		echo 1>&2 "In the new build system, mkerrors should not be called directly." | ||||
| 		echo 1>&2 "See README.md" | ||||
| 		exit 1 | ||||
| 	fi | ||||
| fi | ||||
|  | ||||
| CC=${CC:-cc} | ||||
|  | ||||
| if [[ "$GOOS" = "solaris" ]]; then | ||||
| 	# Assumes GNU versions of utilities in PATH. | ||||
| 	export PATH=/usr/gnu/bin:$PATH | ||||
| fi | ||||
|  | ||||
| uname=$(uname) | ||||
|  | ||||
| includes_Darwin=' | ||||
| #define _DARWIN_C_SOURCE | ||||
| #define KERNEL | ||||
| #define _DARWIN_USE_64_BIT_INODE | ||||
| #include <stdint.h> | ||||
| #include <sys/attr.h> | ||||
| #include <sys/types.h> | ||||
| #include <sys/event.h> | ||||
| #include <sys/ptrace.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/sockio.h> | ||||
| #include <sys/sysctl.h> | ||||
| #include <sys/mman.h> | ||||
| #include <sys/mount.h> | ||||
| #include <sys/utsname.h> | ||||
| #include <sys/wait.h> | ||||
| #include <sys/xattr.h> | ||||
| #include <net/bpf.h> | ||||
| #include <net/if.h> | ||||
| #include <net/if_types.h> | ||||
| #include <net/route.h> | ||||
| #include <netinet/in.h> | ||||
| #include <netinet/ip.h> | ||||
| #include <termios.h> | ||||
| ' | ||||
|  | ||||
| includes_DragonFly=' | ||||
| #include <sys/types.h> | ||||
| #include <sys/event.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/sockio.h> | ||||
| #include <sys/sysctl.h> | ||||
| #include <sys/mman.h> | ||||
| #include <sys/wait.h> | ||||
| #include <sys/ioctl.h> | ||||
| #include <net/bpf.h> | ||||
| #include <net/if.h> | ||||
| #include <net/if_types.h> | ||||
| #include <net/route.h> | ||||
| #include <netinet/in.h> | ||||
| #include <termios.h> | ||||
| #include <netinet/ip.h> | ||||
| #include <net/ip_mroute/ip_mroute.h> | ||||
| ' | ||||
|  | ||||
| includes_FreeBSD=' | ||||
| #include <sys/capability.h> | ||||
| #include <sys/param.h> | ||||
| #include <sys/types.h> | ||||
| #include <sys/event.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/sockio.h> | ||||
| #include <sys/sysctl.h> | ||||
| #include <sys/mman.h> | ||||
| #include <sys/mount.h> | ||||
| #include <sys/wait.h> | ||||
| #include <sys/ioctl.h> | ||||
| #include <net/bpf.h> | ||||
| #include <net/if.h> | ||||
| #include <net/if_types.h> | ||||
| #include <net/route.h> | ||||
| #include <netinet/in.h> | ||||
| #include <termios.h> | ||||
| #include <netinet/ip.h> | ||||
| #include <netinet/ip_mroute.h> | ||||
| #include <sys/extattr.h> | ||||
|  | ||||
| #if __FreeBSD__ >= 10 | ||||
| #define IFT_CARP	0xf8	// IFT_CARP is deprecated in FreeBSD 10 | ||||
| #undef SIOCAIFADDR | ||||
| #define SIOCAIFADDR	_IOW(105, 26, struct oifaliasreq)	// ifaliasreq contains if_data | ||||
| #undef SIOCSIFPHYADDR | ||||
| #define SIOCSIFPHYADDR	_IOW(105, 70, struct oifaliasreq)	// ifaliasreq contains if_data | ||||
| #endif | ||||
| ' | ||||
|  | ||||
| includes_Linux=' | ||||
| #define _LARGEFILE_SOURCE | ||||
| #define _LARGEFILE64_SOURCE | ||||
| #ifndef __LP64__ | ||||
| #define _FILE_OFFSET_BITS 64 | ||||
| #endif | ||||
| #define _GNU_SOURCE | ||||
|  | ||||
| // <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of | ||||
| // these structures. We just include them copied from <bits/termios.h>. | ||||
| #if defined(__powerpc__) | ||||
| struct sgttyb { | ||||
|         char    sg_ispeed; | ||||
|         char    sg_ospeed; | ||||
|         char    sg_erase; | ||||
|         char    sg_kill; | ||||
|         short   sg_flags; | ||||
| }; | ||||
|  | ||||
| struct tchars { | ||||
|         char    t_intrc; | ||||
|         char    t_quitc; | ||||
|         char    t_startc; | ||||
|         char    t_stopc; | ||||
|         char    t_eofc; | ||||
|         char    t_brkc; | ||||
| }; | ||||
|  | ||||
| struct ltchars { | ||||
|         char    t_suspc; | ||||
|         char    t_dsuspc; | ||||
|         char    t_rprntc; | ||||
|         char    t_flushc; | ||||
|         char    t_werasc; | ||||
|         char    t_lnextc; | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| #include <bits/sockaddr.h> | ||||
| #include <sys/epoll.h> | ||||
| #include <sys/eventfd.h> | ||||
| #include <sys/inotify.h> | ||||
| #include <sys/ioctl.h> | ||||
| #include <sys/mman.h> | ||||
| #include <sys/mount.h> | ||||
| #include <sys/prctl.h> | ||||
| #include <sys/stat.h> | ||||
| #include <sys/types.h> | ||||
| #include <sys/time.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/xattr.h> | ||||
| #include <linux/if.h> | ||||
| #include <linux/if_alg.h> | ||||
| #include <linux/if_arp.h> | ||||
| #include <linux/if_ether.h> | ||||
| #include <linux/if_tun.h> | ||||
| #include <linux/if_packet.h> | ||||
| #include <linux/if_addr.h> | ||||
| #include <linux/falloc.h> | ||||
| #include <linux/filter.h> | ||||
| #include <linux/fs.h> | ||||
| #include <linux/keyctl.h> | ||||
| #include <linux/magic.h> | ||||
| #include <linux/netfilter/nfnetlink.h> | ||||
| #include <linux/netlink.h> | ||||
| #include <linux/net_namespace.h> | ||||
| #include <linux/perf_event.h> | ||||
| #include <linux/random.h> | ||||
| #include <linux/reboot.h> | ||||
| #include <linux/rtnetlink.h> | ||||
| #include <linux/ptrace.h> | ||||
| #include <linux/sched.h> | ||||
| #include <linux/seccomp.h> | ||||
| #include <linux/sockios.h> | ||||
| #include <linux/wait.h> | ||||
| #include <linux/icmpv6.h> | ||||
| #include <linux/serial.h> | ||||
| #include <linux/can.h> | ||||
| #include <linux/vm_sockets.h> | ||||
| #include <linux/taskstats.h> | ||||
| #include <linux/genetlink.h> | ||||
| #include <linux/stat.h> | ||||
| #include <linux/watchdog.h> | ||||
| #include <linux/hdreg.h> | ||||
| #include <linux/rtc.h> | ||||
| #include <net/route.h> | ||||
| #include <asm/termbits.h> | ||||
|  | ||||
| #ifndef MSG_FASTOPEN | ||||
| #define MSG_FASTOPEN    0x20000000 | ||||
| #endif | ||||
|  | ||||
| #ifndef PTRACE_GETREGS | ||||
| #define PTRACE_GETREGS	0xc | ||||
| #endif | ||||
|  | ||||
| #ifndef PTRACE_SETREGS | ||||
| #define PTRACE_SETREGS	0xd | ||||
| #endif | ||||
|  | ||||
| #ifndef SOL_NETLINK | ||||
| #define SOL_NETLINK	270 | ||||
| #endif | ||||
|  | ||||
| #ifdef SOL_BLUETOOTH | ||||
| // SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h | ||||
| // but it is already in bluetooth_linux.go | ||||
| #undef SOL_BLUETOOTH | ||||
| #endif | ||||
|  | ||||
| // Certain constants are missing from the fs/crypto UAPI | ||||
| #define FS_KEY_DESC_PREFIX              "fscrypt:" | ||||
| #define FS_KEY_DESC_PREFIX_SIZE         8 | ||||
| #define FS_MAX_KEY_SIZE                 64 | ||||
| ' | ||||
|  | ||||
| includes_NetBSD=' | ||||
| #include <sys/types.h> | ||||
| #include <sys/param.h> | ||||
| #include <sys/event.h> | ||||
| #include <sys/mman.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/sockio.h> | ||||
| #include <sys/sysctl.h> | ||||
| #include <sys/termios.h> | ||||
| #include <sys/ttycom.h> | ||||
| #include <sys/wait.h> | ||||
| #include <net/bpf.h> | ||||
| #include <net/if.h> | ||||
| #include <net/if_types.h> | ||||
| #include <net/route.h> | ||||
| #include <netinet/in.h> | ||||
| #include <netinet/in_systm.h> | ||||
| #include <netinet/ip.h> | ||||
| #include <netinet/ip_mroute.h> | ||||
| #include <netinet/if_ether.h> | ||||
|  | ||||
| // Needed since <sys/param.h> refers to it... | ||||
| #define schedppq 1 | ||||
| ' | ||||
|  | ||||
| includes_OpenBSD=' | ||||
| #include <sys/types.h> | ||||
| #include <sys/param.h> | ||||
| #include <sys/event.h> | ||||
| #include <sys/mman.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/sockio.h> | ||||
| #include <sys/sysctl.h> | ||||
| #include <sys/termios.h> | ||||
| #include <sys/ttycom.h> | ||||
| #include <sys/wait.h> | ||||
| #include <net/bpf.h> | ||||
| #include <net/if.h> | ||||
| #include <net/if_types.h> | ||||
| #include <net/if_var.h> | ||||
| #include <net/route.h> | ||||
| #include <netinet/in.h> | ||||
| #include <netinet/in_systm.h> | ||||
| #include <netinet/ip.h> | ||||
| #include <netinet/ip_mroute.h> | ||||
| #include <netinet/if_ether.h> | ||||
| #include <net/if_bridge.h> | ||||
|  | ||||
| // We keep some constants not supported in OpenBSD 5.5 and beyond for | ||||
| // the promise of compatibility. | ||||
| #define EMUL_ENABLED		0x1 | ||||
| #define EMUL_NATIVE		0x2 | ||||
| #define IPV6_FAITH		0x1d | ||||
| #define IPV6_OPTIONS		0x1 | ||||
| #define IPV6_RTHDR_STRICT	0x1 | ||||
| #define IPV6_SOCKOPT_RESERVED1	0x3 | ||||
| #define SIOCGIFGENERIC		0xc020693a | ||||
| #define SIOCSIFGENERIC		0x80206939 | ||||
| #define WALTSIG			0x4 | ||||
| ' | ||||
|  | ||||
| includes_SunOS=' | ||||
| #include <limits.h> | ||||
| #include <sys/types.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/sockio.h> | ||||
| #include <sys/mman.h> | ||||
| #include <sys/wait.h> | ||||
| #include <sys/ioctl.h> | ||||
| #include <sys/mkdev.h> | ||||
| #include <net/bpf.h> | ||||
| #include <net/if.h> | ||||
| #include <net/if_arp.h> | ||||
| #include <net/if_types.h> | ||||
| #include <net/route.h> | ||||
| #include <netinet/in.h> | ||||
| #include <termios.h> | ||||
| #include <netinet/ip.h> | ||||
| #include <netinet/ip_mroute.h> | ||||
| ' | ||||
|  | ||||
|  | ||||
| includes=' | ||||
| #include <sys/types.h> | ||||
| #include <sys/file.h> | ||||
| #include <fcntl.h> | ||||
| #include <dirent.h> | ||||
| #include <sys/socket.h> | ||||
| #include <netinet/in.h> | ||||
| #include <netinet/ip.h> | ||||
| #include <netinet/ip6.h> | ||||
| #include <netinet/tcp.h> | ||||
| #include <errno.h> | ||||
| #include <sys/signal.h> | ||||
| #include <signal.h> | ||||
| #include <sys/resource.h> | ||||
| #include <time.h> | ||||
| ' | ||||
| ccflags="$@" | ||||
|  | ||||
| # Write go tool cgo -godefs input. | ||||
| ( | ||||
| 	echo package unix | ||||
| 	echo | ||||
| 	echo '/*' | ||||
| 	indirect="includes_$(uname)" | ||||
| 	echo "${!indirect} $includes" | ||||
| 	echo '*/' | ||||
| 	echo 'import "C"' | ||||
| 	echo 'import "syscall"' | ||||
| 	echo | ||||
| 	echo 'const (' | ||||
|  | ||||
| 	# The gcc command line prints all the #defines | ||||
| 	# it encounters while processing the input | ||||
| 	echo "${!indirect} $includes" | $CC -x c - -E -dM $ccflags | | ||||
| 	awk ' | ||||
| 		$1 != "#define" || $2 ~ /\(/ || $3 == "" {next} | ||||
|  | ||||
| 		$2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next}  # 386 registers | ||||
| 		$2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next} | ||||
| 		$2 ~ /^(SCM_SRCRT)$/ {next} | ||||
| 		$2 ~ /^(MAP_FAILED)$/ {next} | ||||
| 		$2 ~ /^ELF_.*$/ {next}# <asm/elf.h> contains ELF_ARCH, etc. | ||||
|  | ||||
| 		$2 ~ /^EXTATTR_NAMESPACE_NAMES/ || | ||||
| 		$2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next} | ||||
|  | ||||
| 		$2 !~ /^ETH_/ && | ||||
| 		$2 !~ /^EPROC_/ && | ||||
| 		$2 !~ /^EQUIV_/ && | ||||
| 		$2 !~ /^EXPR_/ && | ||||
| 		$2 ~ /^E[A-Z0-9_]+$/ || | ||||
| 		$2 ~ /^B[0-9_]+$/ || | ||||
| 		$2 ~ /^(OLD|NEW)DEV$/ || | ||||
| 		$2 == "BOTHER" || | ||||
| 		$2 ~ /^CI?BAUD(EX)?$/ || | ||||
| 		$2 == "IBSHIFT" || | ||||
| 		$2 ~ /^V[A-Z0-9]+$/ || | ||||
| 		$2 ~ /^CS[A-Z0-9]/ || | ||||
| 		$2 ~ /^I(SIG|CANON|CRNL|UCLC|EXTEN|MAXBEL|STRIP|UTF8)$/ || | ||||
| 		$2 ~ /^IGN/ || | ||||
| 		$2 ~ /^IX(ON|ANY|OFF)$/ || | ||||
| 		$2 ~ /^IN(LCR|PCK)$/ || | ||||
| 		$2 !~ "X86_CR3_PCID_NOFLUSH" && | ||||
| 		$2 ~ /(^FLU?SH)|(FLU?SH$)/ || | ||||
| 		$2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ || | ||||
| 		$2 == "BRKINT" || | ||||
| 		$2 == "HUPCL" || | ||||
| 		$2 == "PENDIN" || | ||||
| 		$2 == "TOSTOP" || | ||||
| 		$2 == "XCASE" || | ||||
| 		$2 == "ALTWERASE" || | ||||
| 		$2 == "NOKERNINFO" || | ||||
| 		$2 ~ /^PAR/ || | ||||
| 		$2 ~ /^SIG[^_]/ || | ||||
| 		$2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ || | ||||
| 		$2 ~ /^(NL|CR|TAB|BS|VT|FF)DLY$/ || | ||||
| 		$2 ~ /^(NL|CR|TAB|BS|VT|FF)[0-9]$/ || | ||||
| 		$2 ~ /^O?XTABS$/ || | ||||
| 		$2 ~ /^TC[IO](ON|OFF)$/ || | ||||
| 		$2 ~ /^IN_/ || | ||||
| 		$2 ~ /^LOCK_(SH|EX|NB|UN)$/ || | ||||
| 		$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || | ||||
| 		$2 ~ /^TP_STATUS_/ || | ||||
| 		$2 ~ /^FALLOC_/ || | ||||
| 		$2 == "ICMPV6_FILTER" || | ||||
| 		$2 == "SOMAXCONN" || | ||||
| 		$2 == "NAME_MAX" || | ||||
| 		$2 == "IFNAMSIZ" || | ||||
| 		$2 ~ /^CTL_(HW|KERN|MAXNAME|NET|QUERY)$/ || | ||||
| 		$2 ~ /^KERN_(HOSTNAME|OS(RELEASE|TYPE)|VERSION)$/ || | ||||
| 		$2 ~ /^HW_MACHINE$/ || | ||||
| 		$2 ~ /^SYSCTL_VERS/ || | ||||
| 		$2 ~ /^(MS|MNT|UMOUNT)_/ || | ||||
| 		$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ || | ||||
| 		$2 ~ /^(O|F|E?FD|NAME|S|PTRACE|PT)_/ || | ||||
| 		$2 ~ /^LINUX_REBOOT_CMD_/ || | ||||
| 		$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ || | ||||
| 		$2 !~ "NLA_TYPE_MASK" && | ||||
| 		$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ || | ||||
| 		$2 ~ /^SIOC/ || | ||||
| 		$2 ~ /^TIOC/ || | ||||
| 		$2 ~ /^TCGET/ || | ||||
| 		$2 ~ /^TCSET/ || | ||||
| 		$2 ~ /^TC(FLSH|SBRKP?|XONC)$/ || | ||||
| 		$2 !~ "RTF_BITS" && | ||||
| 		$2 ~ /^(IFF|IFT|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ || | ||||
| 		$2 ~ /^BIOC/ || | ||||
| 		$2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ || | ||||
| 		$2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ || | ||||
| 		$2 ~ /^PRIO_(PROCESS|PGRP|USER)/ || | ||||
| 		$2 ~ /^CLONE_[A-Z_]+/ || | ||||
| 		$2 !~ /^(BPF_TIMEVAL)$/ && | ||||
| 		$2 ~ /^(BPF|DLT)_/ || | ||||
| 		$2 ~ /^CLOCK_/ || | ||||
| 		$2 ~ /^CAN_/ || | ||||
| 		$2 ~ /^CAP_/ || | ||||
| 		$2 ~ /^ALG_/ || | ||||
| 		$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE|IOC_(GET|SET)_ENCRYPTION)/ || | ||||
| 		$2 ~ /^GRND_/ || | ||||
| 		$2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ || | ||||
| 		$2 ~ /^KEYCTL_/ || | ||||
| 		$2 ~ /^PERF_EVENT_IOC_/ || | ||||
| 		$2 ~ /^SECCOMP_MODE_/ || | ||||
| 		$2 ~ /^SPLICE_/ || | ||||
| 		$2 !~ /^AUDIT_RECORD_MAGIC/ && | ||||
| 		$2 ~ /^[A-Z0-9_]+_MAGIC2?$/ || | ||||
| 		$2 ~ /^(VM|VMADDR)_/ || | ||||
| 		$2 ~ /^IOCTL_VM_SOCKETS_/ || | ||||
| 		$2 ~ /^(TASKSTATS|TS)_/ || | ||||
| 		$2 ~ /^CGROUPSTATS_/ || | ||||
| 		$2 ~ /^GENL_/ || | ||||
| 		$2 ~ /^STATX_/ || | ||||
| 		$2 ~ /^UTIME_/ || | ||||
| 		$2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ || | ||||
| 		$2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ || | ||||
| 		$2 ~ /^FSOPT_/ || | ||||
| 		$2 ~ /^WDIOC_/ || | ||||
| 		$2 ~ /^NFN/ || | ||||
| 		$2 ~ /^(HDIO|WIN|SMART)_/ || | ||||
| 		$2 !~ "WMESGLEN" && | ||||
| 		$2 ~ /^W[A-Z0-9]+$/ || | ||||
| 		$2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)} | ||||
| 		$2 ~ /^__WCOREFLAG$/ {next} | ||||
| 		$2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)} | ||||
|  | ||||
| 		{next} | ||||
| 	' | sort | ||||
|  | ||||
| 	echo ')' | ||||
| ) >_const.go | ||||
|  | ||||
| # Pull out the error names for later. | ||||
| errors=$( | ||||
| 	echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags | | ||||
| 	awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' | | ||||
| 	sort | ||||
| ) | ||||
|  | ||||
| # Pull out the signal names for later. | ||||
| signals=$( | ||||
| 	echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags | | ||||
| 	awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' | | ||||
| 	egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' | | ||||
| 	sort | ||||
| ) | ||||
|  | ||||
| # Again, writing regexps to a file. | ||||
| echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags | | ||||
| 	awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print "^\t" $2 "[ \t]*=" }' | | ||||
| 	sort >_error.grep | ||||
| echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags | | ||||
| 	awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' | | ||||
| 	egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' | | ||||
| 	sort >_signal.grep | ||||
|  | ||||
| echo '// mkerrors.sh' "$@" | ||||
| echo '// Code generated by the command above; see README.md. DO NOT EDIT.' | ||||
| echo | ||||
| echo "// +build ${GOARCH},${GOOS}" | ||||
| echo | ||||
| go tool cgo -godefs -- "$@" _const.go >_error.out | ||||
| cat _error.out | grep -vf _error.grep | grep -vf _signal.grep | ||||
| echo | ||||
| echo '// Errors' | ||||
| echo 'const (' | ||||
| cat _error.out | grep -f _error.grep | sed 's/=\(.*\)/= syscall.Errno(\1)/' | ||||
| echo ')' | ||||
|  | ||||
| echo | ||||
| echo '// Signals' | ||||
| echo 'const (' | ||||
| cat _error.out | grep -f _signal.grep | sed 's/=\(.*\)/= syscall.Signal(\1)/' | ||||
| echo ')' | ||||
|  | ||||
| # Run C program to print error and syscall strings. | ||||
| ( | ||||
| 	echo -E " | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <errno.h> | ||||
| #include <ctype.h> | ||||
| #include <string.h> | ||||
| #include <signal.h> | ||||
|  | ||||
| #define nelem(x) (sizeof(x)/sizeof((x)[0])) | ||||
|  | ||||
| enum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below | ||||
|  | ||||
| struct tuple { | ||||
| 	int num; | ||||
| 	const char *name; | ||||
| }; | ||||
|  | ||||
| struct tuple errors[] = { | ||||
| " | ||||
| 	for i in $errors | ||||
| 	do | ||||
| 		echo -E '	{'$i', "'$i'" },' | ||||
| 	done | ||||
|  | ||||
| 	echo -E " | ||||
| }; | ||||
|  | ||||
| struct tuple signals[] = { | ||||
| " | ||||
| 	for i in $signals | ||||
| 	do | ||||
| 		echo -E '	{'$i', "'$i'" },' | ||||
| 	done | ||||
|  | ||||
| 	# Use -E because on some systems bash builtin interprets \n itself. | ||||
| 	echo -E ' | ||||
| }; | ||||
|  | ||||
| static int | ||||
| tuplecmp(const void *a, const void *b) | ||||
| { | ||||
| 	return ((struct tuple *)a)->num - ((struct tuple *)b)->num; | ||||
| } | ||||
|  | ||||
| int | ||||
| main(void) | ||||
| { | ||||
| 	int i, e; | ||||
| 	char buf[1024], *p; | ||||
|  | ||||
| 	printf("\n\n// Error table\n"); | ||||
| 	printf("var errorList = [...]struct {\n"); | ||||
| 	printf("\tnum  syscall.Errno\n"); | ||||
| 	printf("\tname string\n"); | ||||
| 	printf("\tdesc string\n"); | ||||
| 	printf("} {\n"); | ||||
| 	qsort(errors, nelem(errors), sizeof errors[0], tuplecmp); | ||||
| 	for(i=0; i<nelem(errors); i++) { | ||||
| 		e = errors[i].num; | ||||
| 		if(i > 0 && errors[i-1].num == e) | ||||
| 			continue; | ||||
| 		strcpy(buf, strerror(e)); | ||||
| 		// lowercase first letter: Bad -> bad, but STREAM -> STREAM. | ||||
| 		if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z) | ||||
| 			buf[0] += a - A; | ||||
| 		printf("\t{ %d, \"%s\", \"%s\" },\n", e, errors[i].name, buf); | ||||
| 	} | ||||
| 	printf("}\n\n"); | ||||
|  | ||||
| 	printf("\n\n// Signal table\n"); | ||||
| 	printf("var signalList = [...]struct {\n"); | ||||
| 	printf("\tnum  syscall.Signal\n"); | ||||
| 	printf("\tname string\n"); | ||||
| 	printf("\tdesc string\n"); | ||||
| 	printf("} {\n"); | ||||
| 	qsort(signals, nelem(signals), sizeof signals[0], tuplecmp); | ||||
| 	for(i=0; i<nelem(signals); i++) { | ||||
| 		e = signals[i].num; | ||||
| 		if(i > 0 && signals[i-1].num == e) | ||||
| 			continue; | ||||
| 		strcpy(buf, strsignal(e)); | ||||
| 		// lowercase first letter: Bad -> bad, but STREAM -> STREAM. | ||||
| 		if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z) | ||||
| 			buf[0] += a - A; | ||||
| 		// cut trailing : number. | ||||
| 		p = strrchr(buf, ":"[0]); | ||||
| 		if(p) | ||||
| 			*p = '\0'; | ||||
| 		printf("\t{ %d, \"%s\", \"%s\" },\n", e, signals[i].name, buf); | ||||
| 	} | ||||
| 	printf("}\n\n"); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| ' | ||||
| ) >_errors.c | ||||
|  | ||||
| $CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out | ||||
							
								
								
									
										341
									
								
								vendor/golang.org/x/sys/unix/mksyscall.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										341
									
								
								vendor/golang.org/x/sys/unix/mksyscall.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,341 +0,0 @@ | ||||
| #!/usr/bin/env perl | ||||
| # 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. | ||||
|  | ||||
| # This program reads a file containing function prototypes | ||||
| # (like syscall_darwin.go) and generates system call bodies. | ||||
| # The prototypes are marked by lines beginning with "//sys" | ||||
| # and read like func declarations if //sys is replaced by func, but: | ||||
| #	* The parameter lists must give a name for each argument. | ||||
| #	  This includes return parameters. | ||||
| #	* The parameter lists must give a type for each argument: | ||||
| #	  the (x, y, z int) shorthand is not allowed. | ||||
| #	* If the return parameter is an error number, it must be named errno. | ||||
|  | ||||
| # A line beginning with //sysnb is like //sys, except that the | ||||
| # goroutine will not be suspended during the execution of the system | ||||
| # call.  This must only be used for system calls which can never | ||||
| # block, as otherwise the system call could cause all goroutines to | ||||
| # hang. | ||||
|  | ||||
| use strict; | ||||
|  | ||||
| my $cmdline = "mksyscall.pl " . join(' ', @ARGV); | ||||
| my $errors = 0; | ||||
| my $_32bit = ""; | ||||
| my $plan9 = 0; | ||||
| my $openbsd = 0; | ||||
| my $netbsd = 0; | ||||
| my $dragonfly = 0; | ||||
| my $arm = 0; # 64-bit value should use (even, odd)-pair | ||||
| my $tags = "";  # build tags | ||||
|  | ||||
| if($ARGV[0] eq "-b32") { | ||||
| 	$_32bit = "big-endian"; | ||||
| 	shift; | ||||
| } elsif($ARGV[0] eq "-l32") { | ||||
| 	$_32bit = "little-endian"; | ||||
| 	shift; | ||||
| } | ||||
| if($ARGV[0] eq "-plan9") { | ||||
| 	$plan9 = 1; | ||||
| 	shift; | ||||
| } | ||||
| if($ARGV[0] eq "-openbsd") { | ||||
| 	$openbsd = 1; | ||||
| 	shift; | ||||
| } | ||||
| if($ARGV[0] eq "-netbsd") { | ||||
| 	$netbsd = 1; | ||||
| 	shift; | ||||
| } | ||||
| if($ARGV[0] eq "-dragonfly") { | ||||
| 	$dragonfly = 1; | ||||
| 	shift; | ||||
| } | ||||
| if($ARGV[0] eq "-arm") { | ||||
| 	$arm = 1; | ||||
| 	shift; | ||||
| } | ||||
| if($ARGV[0] eq "-tags") { | ||||
| 	shift; | ||||
| 	$tags = $ARGV[0]; | ||||
| 	shift; | ||||
| } | ||||
|  | ||||
| if($ARGV[0] =~ /^-/) { | ||||
| 	print STDERR "usage: mksyscall.pl [-b32 | -l32] [-tags x,y] [file ...]\n"; | ||||
| 	exit 1; | ||||
| } | ||||
|  | ||||
| # Check that we are using the new build system if we should | ||||
| if($ENV{'GOOS'} eq "linux" && $ENV{'GOARCH'} ne "sparc64") { | ||||
| 	if($ENV{'GOLANG_SYS_BUILD'} ne "docker") { | ||||
| 		print STDERR "In the new build system, mksyscall should not be called directly.\n"; | ||||
| 		print STDERR "See README.md\n"; | ||||
| 		exit 1; | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
| sub parseparamlist($) { | ||||
| 	my ($list) = @_; | ||||
| 	$list =~ s/^\s*//; | ||||
| 	$list =~ s/\s*$//; | ||||
| 	if($list eq "") { | ||||
| 		return (); | ||||
| 	} | ||||
| 	return split(/\s*,\s*/, $list); | ||||
| } | ||||
|  | ||||
| sub parseparam($) { | ||||
| 	my ($p) = @_; | ||||
| 	if($p !~ /^(\S*) (\S*)$/) { | ||||
| 		print STDERR "$ARGV:$.: malformed parameter: $p\n"; | ||||
| 		$errors = 1; | ||||
| 		return ("xx", "int"); | ||||
| 	} | ||||
| 	return ($1, $2); | ||||
| } | ||||
|  | ||||
| my $text = ""; | ||||
| while(<>) { | ||||
| 	chomp; | ||||
| 	s/\s+/ /g; | ||||
| 	s/^\s+//; | ||||
| 	s/\s+$//; | ||||
| 	my $nonblock = /^\/\/sysnb /; | ||||
| 	next if !/^\/\/sys / && !$nonblock; | ||||
|  | ||||
| 	# Line must be of the form | ||||
| 	#	func Open(path string, mode int, perm int) (fd int, errno error) | ||||
| 	# Split into name, in params, out params. | ||||
| 	if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$/) { | ||||
| 		print STDERR "$ARGV:$.: malformed //sys declaration\n"; | ||||
| 		$errors = 1; | ||||
| 		next; | ||||
| 	} | ||||
| 	my ($func, $in, $out, $sysname) = ($2, $3, $4, $5); | ||||
|  | ||||
| 	# Split argument lists on comma. | ||||
| 	my @in = parseparamlist($in); | ||||
| 	my @out = parseparamlist($out); | ||||
|  | ||||
| 	# Try in vain to keep people from editing this file. | ||||
| 	# The theory is that they jump into the middle of the file | ||||
| 	# without reading the header. | ||||
| 	$text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"; | ||||
|  | ||||
| 	# Go function header. | ||||
| 	my $out_decl = @out ? sprintf(" (%s)", join(', ', @out)) : ""; | ||||
| 	$text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out_decl; | ||||
|  | ||||
| 	# Check if err return available | ||||
| 	my $errvar = ""; | ||||
| 	foreach my $p (@out) { | ||||
| 		my ($name, $type) = parseparam($p); | ||||
| 		if($type eq "error") { | ||||
| 			$errvar = $name; | ||||
| 			last; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	# Prepare arguments to Syscall. | ||||
| 	my @args = (); | ||||
| 	my $n = 0; | ||||
| 	foreach my $p (@in) { | ||||
| 		my ($name, $type) = parseparam($p); | ||||
| 		if($type =~ /^\*/) { | ||||
| 			push @args, "uintptr(unsafe.Pointer($name))"; | ||||
| 		} elsif($type eq "string" && $errvar ne "") { | ||||
| 			$text .= "\tvar _p$n *byte\n"; | ||||
| 			$text .= "\t_p$n, $errvar = BytePtrFromString($name)\n"; | ||||
| 			$text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n"; | ||||
| 			push @args, "uintptr(unsafe.Pointer(_p$n))"; | ||||
| 			$n++; | ||||
| 		} elsif($type eq "string") { | ||||
| 			print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n"; | ||||
| 			$text .= "\tvar _p$n *byte\n"; | ||||
| 			$text .= "\t_p$n, _ = BytePtrFromString($name)\n"; | ||||
| 			push @args, "uintptr(unsafe.Pointer(_p$n))"; | ||||
| 			$n++; | ||||
| 		} elsif($type =~ /^\[\](.*)/) { | ||||
| 			# Convert slice into pointer, length. | ||||
| 			# Have to be careful not to take address of &a[0] if len == 0: | ||||
| 			# pass dummy pointer in that case. | ||||
| 			# Used to pass nil, but some OSes or simulators reject write(fd, nil, 0). | ||||
| 			$text .= "\tvar _p$n unsafe.Pointer\n"; | ||||
| 			$text .= "\tif len($name) > 0 {\n\t\t_p$n = unsafe.Pointer(\&${name}[0])\n\t}"; | ||||
| 			$text .= " else {\n\t\t_p$n = unsafe.Pointer(&_zero)\n\t}"; | ||||
| 			$text .= "\n"; | ||||
| 			push @args, "uintptr(_p$n)", "uintptr(len($name))"; | ||||
| 			$n++; | ||||
| 		} elsif($type eq "int64" && ($openbsd || $netbsd)) { | ||||
| 			push @args, "0"; | ||||
| 			if($_32bit eq "big-endian") { | ||||
| 				push @args, "uintptr($name>>32)", "uintptr($name)"; | ||||
| 			} elsif($_32bit eq "little-endian") { | ||||
| 				push @args, "uintptr($name)", "uintptr($name>>32)"; | ||||
| 			} else { | ||||
| 				push @args, "uintptr($name)"; | ||||
| 			} | ||||
| 		} elsif($type eq "int64" && $dragonfly) { | ||||
| 			if ($func !~ /^extp(read|write)/i) { | ||||
| 				push @args, "0"; | ||||
| 			} | ||||
| 			if($_32bit eq "big-endian") { | ||||
| 				push @args, "uintptr($name>>32)", "uintptr($name)"; | ||||
| 			} elsif($_32bit eq "little-endian") { | ||||
| 				push @args, "uintptr($name)", "uintptr($name>>32)"; | ||||
| 			} else { | ||||
| 				push @args, "uintptr($name)"; | ||||
| 			} | ||||
| 		} elsif($type eq "int64" && $_32bit ne "") { | ||||
| 			if(@args % 2 && $arm) { | ||||
| 				# arm abi specifies 64-bit argument uses | ||||
| 				# (even, odd) pair | ||||
| 				push @args, "0" | ||||
| 			} | ||||
| 			if($_32bit eq "big-endian") { | ||||
| 				push @args, "uintptr($name>>32)", "uintptr($name)"; | ||||
| 			} else { | ||||
| 				push @args, "uintptr($name)", "uintptr($name>>32)"; | ||||
| 			} | ||||
| 		} else { | ||||
| 			push @args, "uintptr($name)"; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	# Determine which form to use; pad args with zeros. | ||||
| 	my $asm = "Syscall"; | ||||
| 	if ($nonblock) { | ||||
| 		if ($errvar eq "" && $ENV{'GOOS'} eq "linux") { | ||||
| 			$asm = "RawSyscallNoError"; | ||||
| 		} else { | ||||
| 			$asm = "RawSyscall"; | ||||
| 		} | ||||
| 	} else { | ||||
| 		if ($errvar eq "" && $ENV{'GOOS'} eq "linux") { | ||||
| 			$asm = "SyscallNoError"; | ||||
| 		} | ||||
| 	} | ||||
| 	if(@args <= 3) { | ||||
| 		while(@args < 3) { | ||||
| 			push @args, "0"; | ||||
| 		} | ||||
| 	} elsif(@args <= 6) { | ||||
| 		$asm .= "6"; | ||||
| 		while(@args < 6) { | ||||
| 			push @args, "0"; | ||||
| 		} | ||||
| 	} elsif(@args <= 9) { | ||||
| 		$asm .= "9"; | ||||
| 		while(@args < 9) { | ||||
| 			push @args, "0"; | ||||
| 		} | ||||
| 	} else { | ||||
| 		print STDERR "$ARGV:$.: too many arguments to system call\n"; | ||||
| 	} | ||||
|  | ||||
| 	# System call number. | ||||
| 	if($sysname eq "") { | ||||
| 		$sysname = "SYS_$func"; | ||||
| 		$sysname =~ s/([a-z])([A-Z])/${1}_$2/g;	# turn FooBar into Foo_Bar | ||||
| 		$sysname =~ y/a-z/A-Z/; | ||||
| 	} | ||||
|  | ||||
| 	# Actual call. | ||||
| 	my $args = join(', ', @args); | ||||
| 	my $call = "$asm($sysname, $args)"; | ||||
|  | ||||
| 	# Assign return values. | ||||
| 	my $body = ""; | ||||
| 	my @ret = ("_", "_", "_"); | ||||
| 	my $do_errno = 0; | ||||
| 	for(my $i=0; $i<@out; $i++) { | ||||
| 		my $p = $out[$i]; | ||||
| 		my ($name, $type) = parseparam($p); | ||||
| 		my $reg = ""; | ||||
| 		if($name eq "err" && !$plan9) { | ||||
| 			$reg = "e1"; | ||||
| 			$ret[2] = $reg; | ||||
| 			$do_errno = 1; | ||||
| 		} elsif($name eq "err" && $plan9) { | ||||
| 			$ret[0] = "r0"; | ||||
| 			$ret[2] = "e1"; | ||||
| 			next; | ||||
| 		} else { | ||||
| 			$reg = sprintf("r%d", $i); | ||||
| 			$ret[$i] = $reg; | ||||
| 		} | ||||
| 		if($type eq "bool") { | ||||
| 			$reg = "$reg != 0"; | ||||
| 		} | ||||
| 		if($type eq "int64" && $_32bit ne "") { | ||||
| 			# 64-bit number in r1:r0 or r0:r1. | ||||
| 			if($i+2 > @out) { | ||||
| 				print STDERR "$ARGV:$.: not enough registers for int64 return\n"; | ||||
| 			} | ||||
| 			if($_32bit eq "big-endian") { | ||||
| 				$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1); | ||||
| 			} else { | ||||
| 				$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i); | ||||
| 			} | ||||
| 			$ret[$i] = sprintf("r%d", $i); | ||||
| 			$ret[$i+1] = sprintf("r%d", $i+1); | ||||
| 		} | ||||
| 		if($reg ne "e1" || $plan9) { | ||||
| 			$body .= "\t$name = $type($reg)\n"; | ||||
| 		} | ||||
| 	} | ||||
| 	if ($ret[0] eq "_" && $ret[1] eq "_" && $ret[2] eq "_") { | ||||
| 		$text .= "\t$call\n"; | ||||
| 	} else { | ||||
| 		if ($errvar eq "" && $ENV{'GOOS'} eq "linux") { | ||||
| 			# raw syscall without error on Linux, see golang.org/issue/22924 | ||||
| 			$text .= "\t$ret[0], $ret[1] := $call\n"; | ||||
| 		} else { | ||||
| 			$text .= "\t$ret[0], $ret[1], $ret[2] := $call\n"; | ||||
| 		} | ||||
| 	} | ||||
| 	$text .= $body; | ||||
|  | ||||
| 	if ($plan9 && $ret[2] eq "e1") { | ||||
| 		$text .= "\tif int32(r0) == -1 {\n"; | ||||
| 		$text .= "\t\terr = e1\n"; | ||||
| 		$text .= "\t}\n"; | ||||
| 	} elsif ($do_errno) { | ||||
| 		$text .= "\tif e1 != 0 {\n"; | ||||
| 		$text .= "\t\terr = errnoErr(e1)\n"; | ||||
| 		$text .= "\t}\n"; | ||||
| 	} | ||||
| 	$text .= "\treturn\n"; | ||||
| 	$text .= "}\n\n"; | ||||
| } | ||||
|  | ||||
| chomp $text; | ||||
| chomp $text; | ||||
|  | ||||
| if($errors) { | ||||
| 	exit 1; | ||||
| } | ||||
|  | ||||
| print <<EOF; | ||||
| // $cmdline | ||||
| // Code generated by the command above; see README.md. DO NOT EDIT. | ||||
|  | ||||
| // +build $tags | ||||
|  | ||||
| package unix | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
| ) | ||||
|  | ||||
| var _ syscall.Errno | ||||
|  | ||||
| $text | ||||
| EOF | ||||
| exit 0; | ||||
							
								
								
									
										289
									
								
								vendor/golang.org/x/sys/unix/mksyscall_solaris.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										289
									
								
								vendor/golang.org/x/sys/unix/mksyscall_solaris.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,289 +0,0 @@ | ||||
| #!/usr/bin/env perl | ||||
| # 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. | ||||
|  | ||||
| # This program reads a file containing function prototypes | ||||
| # (like syscall_solaris.go) and generates system call bodies. | ||||
| # The prototypes are marked by lines beginning with "//sys" | ||||
| # and read like func declarations if //sys is replaced by func, but: | ||||
| #	* The parameter lists must give a name for each argument. | ||||
| #	  This includes return parameters. | ||||
| #	* The parameter lists must give a type for each argument: | ||||
| #	  the (x, y, z int) shorthand is not allowed. | ||||
| #	* If the return parameter is an error number, it must be named err. | ||||
| #	* If go func name needs to be different than its libc name, | ||||
| #	* or the function is not in libc, name could be specified | ||||
| #	* at the end, after "=" sign, like | ||||
| #	  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt | ||||
|  | ||||
| use strict; | ||||
|  | ||||
| my $cmdline = "mksyscall_solaris.pl " . join(' ', @ARGV); | ||||
| my $errors = 0; | ||||
| my $_32bit = ""; | ||||
| my $tags = "";  # build tags | ||||
|  | ||||
| binmode STDOUT; | ||||
|  | ||||
| if($ARGV[0] eq "-b32") { | ||||
| 	$_32bit = "big-endian"; | ||||
| 	shift; | ||||
| } elsif($ARGV[0] eq "-l32") { | ||||
| 	$_32bit = "little-endian"; | ||||
| 	shift; | ||||
| } | ||||
| if($ARGV[0] eq "-tags") { | ||||
| 	shift; | ||||
| 	$tags = $ARGV[0]; | ||||
| 	shift; | ||||
| } | ||||
|  | ||||
| if($ARGV[0] =~ /^-/) { | ||||
| 	print STDERR "usage: mksyscall_solaris.pl [-b32 | -l32] [-tags x,y] [file ...]\n"; | ||||
| 	exit 1; | ||||
| } | ||||
|  | ||||
| sub parseparamlist($) { | ||||
| 	my ($list) = @_; | ||||
| 	$list =~ s/^\s*//; | ||||
| 	$list =~ s/\s*$//; | ||||
| 	if($list eq "") { | ||||
| 		return (); | ||||
| 	} | ||||
| 	return split(/\s*,\s*/, $list); | ||||
| } | ||||
|  | ||||
| sub parseparam($) { | ||||
| 	my ($p) = @_; | ||||
| 	if($p !~ /^(\S*) (\S*)$/) { | ||||
| 		print STDERR "$ARGV:$.: malformed parameter: $p\n"; | ||||
| 		$errors = 1; | ||||
| 		return ("xx", "int"); | ||||
| 	} | ||||
| 	return ($1, $2); | ||||
| } | ||||
|  | ||||
| my $package = ""; | ||||
| my $text = ""; | ||||
| my $dynimports = ""; | ||||
| my $linknames = ""; | ||||
| my @vars = (); | ||||
| while(<>) { | ||||
| 	chomp; | ||||
| 	s/\s+/ /g; | ||||
| 	s/^\s+//; | ||||
| 	s/\s+$//; | ||||
| 	$package = $1 if !$package && /^package (\S+)$/; | ||||
| 	my $nonblock = /^\/\/sysnb /; | ||||
| 	next if !/^\/\/sys / && !$nonblock; | ||||
|  | ||||
| 	# Line must be of the form | ||||
| 	#	func Open(path string, mode int, perm int) (fd int, err error) | ||||
| 	# Split into name, in params, out params. | ||||
| 	if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$/) { | ||||
| 		print STDERR "$ARGV:$.: malformed //sys declaration\n"; | ||||
| 		$errors = 1; | ||||
| 		next; | ||||
| 	} | ||||
| 	my ($nb, $func, $in, $out, $modname, $sysname) = ($1, $2, $3, $4, $5, $6); | ||||
|  | ||||
| 	# Split argument lists on comma. | ||||
| 	my @in = parseparamlist($in); | ||||
| 	my @out = parseparamlist($out); | ||||
|  | ||||
| 	# So file name. | ||||
| 	if($modname eq "") { | ||||
| 		$modname = "libc"; | ||||
| 	} | ||||
|  | ||||
| 	# System call name. | ||||
| 	if($sysname eq "") { | ||||
| 		$sysname = "$func"; | ||||
| 	} | ||||
|  | ||||
| 	# System call pointer variable name. | ||||
| 	my $sysvarname = "proc$sysname"; | ||||
|  | ||||
| 	my $strconvfunc = "BytePtrFromString"; | ||||
| 	my $strconvtype = "*byte"; | ||||
|  | ||||
| 	$sysname =~ y/A-Z/a-z/; # All libc functions are lowercase. | ||||
|  | ||||
| 	# Runtime import of function to allow cross-platform builds. | ||||
| 	$dynimports .= "//go:cgo_import_dynamic libc_${sysname} ${sysname} \"$modname.so\"\n"; | ||||
| 	# Link symbol to proc address variable. | ||||
| 	$linknames .= "//go:linkname ${sysvarname} libc_${sysname}\n"; | ||||
| 	# Library proc address variable. | ||||
| 	push @vars, $sysvarname; | ||||
|  | ||||
| 	# Go function header. | ||||
| 	$out = join(', ', @out); | ||||
| 	if($out ne "") { | ||||
| 		$out = " ($out)"; | ||||
| 	} | ||||
| 	if($text ne "") { | ||||
| 		$text .= "\n" | ||||
| 	} | ||||
| 	$text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out; | ||||
|  | ||||
| 	# Check if err return available | ||||
| 	my $errvar = ""; | ||||
| 	foreach my $p (@out) { | ||||
| 		my ($name, $type) = parseparam($p); | ||||
| 		if($type eq "error") { | ||||
| 			$errvar = $name; | ||||
| 			last; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	# Prepare arguments to Syscall. | ||||
| 	my @args = (); | ||||
| 	my $n = 0; | ||||
| 	foreach my $p (@in) { | ||||
| 		my ($name, $type) = parseparam($p); | ||||
| 		if($type =~ /^\*/) { | ||||
| 			push @args, "uintptr(unsafe.Pointer($name))"; | ||||
| 		} elsif($type eq "string" && $errvar ne "") { | ||||
| 			$text .= "\tvar _p$n $strconvtype\n"; | ||||
| 			$text .= "\t_p$n, $errvar = $strconvfunc($name)\n"; | ||||
| 			$text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n"; | ||||
| 			push @args, "uintptr(unsafe.Pointer(_p$n))"; | ||||
| 			$n++; | ||||
| 		} elsif($type eq "string") { | ||||
| 			print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n"; | ||||
| 			$text .= "\tvar _p$n $strconvtype\n"; | ||||
| 			$text .= "\t_p$n, _ = $strconvfunc($name)\n"; | ||||
| 			push @args, "uintptr(unsafe.Pointer(_p$n))"; | ||||
| 			$n++; | ||||
| 		} elsif($type =~ /^\[\](.*)/) { | ||||
| 			# Convert slice into pointer, length. | ||||
| 			# Have to be careful not to take address of &a[0] if len == 0: | ||||
| 			# pass nil in that case. | ||||
| 			$text .= "\tvar _p$n *$1\n"; | ||||
| 			$text .= "\tif len($name) > 0 {\n\t\t_p$n = \&$name\[0]\n\t}\n"; | ||||
| 			push @args, "uintptr(unsafe.Pointer(_p$n))", "uintptr(len($name))"; | ||||
| 			$n++; | ||||
| 		} elsif($type eq "int64" && $_32bit ne "") { | ||||
| 			if($_32bit eq "big-endian") { | ||||
| 				push @args, "uintptr($name >> 32)", "uintptr($name)"; | ||||
| 			} else { | ||||
| 				push @args, "uintptr($name)", "uintptr($name >> 32)"; | ||||
| 			} | ||||
| 		} elsif($type eq "bool") { | ||||
|  			$text .= "\tvar _p$n uint32\n"; | ||||
| 			$text .= "\tif $name {\n\t\t_p$n = 1\n\t} else {\n\t\t_p$n = 0\n\t}\n"; | ||||
| 			push @args, "uintptr(_p$n)"; | ||||
| 			$n++; | ||||
| 		} else { | ||||
| 			push @args, "uintptr($name)"; | ||||
| 		} | ||||
| 	} | ||||
| 	my $nargs = @args; | ||||
|  | ||||
| 	# Determine which form to use; pad args with zeros. | ||||
| 	my $asm = "sysvicall6"; | ||||
| 	if ($nonblock) { | ||||
| 		$asm = "rawSysvicall6"; | ||||
| 	} | ||||
| 	if(@args <= 6) { | ||||
| 		while(@args < 6) { | ||||
| 			push @args, "0"; | ||||
| 		} | ||||
| 	} else { | ||||
| 		print STDERR "$ARGV:$.: too many arguments to system call\n"; | ||||
| 	} | ||||
|  | ||||
| 	# Actual call. | ||||
| 	my $args = join(', ', @args); | ||||
| 	my $call = "$asm(uintptr(unsafe.Pointer(&$sysvarname)), $nargs, $args)"; | ||||
|  | ||||
| 	# Assign return values. | ||||
| 	my $body = ""; | ||||
| 	my $failexpr = ""; | ||||
| 	my @ret = ("_", "_", "_"); | ||||
| 	my @pout= (); | ||||
| 	my $do_errno = 0; | ||||
| 	for(my $i=0; $i<@out; $i++) { | ||||
| 		my $p = $out[$i]; | ||||
| 		my ($name, $type) = parseparam($p); | ||||
| 		my $reg = ""; | ||||
| 		if($name eq "err") { | ||||
| 			$reg = "e1"; | ||||
| 			$ret[2] = $reg; | ||||
| 			$do_errno = 1; | ||||
| 		} else { | ||||
| 			$reg = sprintf("r%d", $i); | ||||
| 			$ret[$i] = $reg; | ||||
| 		} | ||||
| 		if($type eq "bool") { | ||||
| 			$reg = "$reg != 0"; | ||||
| 		} | ||||
| 		if($type eq "int64" && $_32bit ne "") { | ||||
| 			# 64-bit number in r1:r0 or r0:r1. | ||||
| 			if($i+2 > @out) { | ||||
| 				print STDERR "$ARGV:$.: not enough registers for int64 return\n"; | ||||
| 			} | ||||
| 			if($_32bit eq "big-endian") { | ||||
| 				$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1); | ||||
| 			} else { | ||||
| 				$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i); | ||||
| 			} | ||||
| 			$ret[$i] = sprintf("r%d", $i); | ||||
| 			$ret[$i+1] = sprintf("r%d", $i+1); | ||||
| 		} | ||||
| 		if($reg ne "e1") { | ||||
| 			$body .= "\t$name = $type($reg)\n"; | ||||
| 		} | ||||
| 	} | ||||
| 	if ($ret[0] eq "_" && $ret[1] eq "_" && $ret[2] eq "_") { | ||||
| 		$text .= "\t$call\n"; | ||||
| 	} else { | ||||
| 		$text .= "\t$ret[0], $ret[1], $ret[2] := $call\n"; | ||||
| 	} | ||||
| 	$text .= $body; | ||||
|  | ||||
| 	if ($do_errno) { | ||||
| 		$text .= "\tif e1 != 0 {\n"; | ||||
| 		$text .= "\t\terr = e1\n"; | ||||
| 		$text .= "\t}\n"; | ||||
| 	} | ||||
| 	$text .= "\treturn\n"; | ||||
| 	$text .= "}\n"; | ||||
| } | ||||
|  | ||||
| if($errors) { | ||||
| 	exit 1; | ||||
| } | ||||
|  | ||||
| print <<EOF; | ||||
| // $cmdline | ||||
| // Code generated by the command above; see README.md. DO NOT EDIT. | ||||
|  | ||||
| // +build $tags | ||||
|  | ||||
| package $package | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
| ) | ||||
| EOF | ||||
|  | ||||
| print "import \"golang.org/x/sys/unix\"\n" if $package ne "unix"; | ||||
|  | ||||
| my $vardecls = "\t" . join(",\n\t", @vars); | ||||
| $vardecls .= " syscallFunc"; | ||||
|  | ||||
| chomp($_=<<EOF); | ||||
|  | ||||
| $dynimports | ||||
| $linknames | ||||
| var ( | ||||
| $vardecls | ||||
| ) | ||||
|  | ||||
| $text | ||||
| EOF | ||||
| print $_; | ||||
| exit 0; | ||||
							
								
								
									
										264
									
								
								vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										264
									
								
								vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,264 +0,0 @@ | ||||
| #!/usr/bin/env perl | ||||
|  | ||||
| # Copyright 2011 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. | ||||
|  | ||||
| # | ||||
| # Parse the header files for OpenBSD and generate a Go usable sysctl MIB. | ||||
| # | ||||
| # Build a MIB with each entry being an array containing the level, type and | ||||
| # a hash that will contain additional entries if the current entry is a node. | ||||
| # We then walk this MIB and create a flattened sysctl name to OID hash. | ||||
| # | ||||
|  | ||||
| use strict; | ||||
|  | ||||
| if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") { | ||||
| 	print STDERR "GOARCH or GOOS not defined in environment\n"; | ||||
| 	exit 1; | ||||
| } | ||||
|  | ||||
| my $debug = 0; | ||||
| my %ctls = (); | ||||
|  | ||||
| my @headers = qw ( | ||||
| 	sys/sysctl.h | ||||
| 	sys/socket.h | ||||
| 	sys/tty.h | ||||
| 	sys/malloc.h | ||||
| 	sys/mount.h | ||||
| 	sys/namei.h | ||||
| 	sys/sem.h | ||||
| 	sys/shm.h | ||||
| 	sys/vmmeter.h | ||||
| 	uvm/uvm_param.h | ||||
| 	uvm/uvm_swap_encrypt.h | ||||
| 	ddb/db_var.h | ||||
| 	net/if.h | ||||
| 	net/if_pfsync.h | ||||
| 	net/pipex.h | ||||
| 	netinet/in.h | ||||
| 	netinet/icmp_var.h | ||||
| 	netinet/igmp_var.h | ||||
| 	netinet/ip_ah.h | ||||
| 	netinet/ip_carp.h | ||||
| 	netinet/ip_divert.h | ||||
| 	netinet/ip_esp.h | ||||
| 	netinet/ip_ether.h | ||||
| 	netinet/ip_gre.h | ||||
| 	netinet/ip_ipcomp.h | ||||
| 	netinet/ip_ipip.h | ||||
| 	netinet/pim_var.h | ||||
| 	netinet/tcp_var.h | ||||
| 	netinet/udp_var.h | ||||
| 	netinet6/in6.h | ||||
| 	netinet6/ip6_divert.h | ||||
| 	netinet6/pim6_var.h | ||||
| 	netinet/icmp6.h | ||||
| 	netmpls/mpls.h | ||||
| ); | ||||
|  | ||||
| my @ctls = qw ( | ||||
| 	kern | ||||
| 	vm | ||||
| 	fs | ||||
| 	net | ||||
| 	#debug				# Special handling required | ||||
| 	hw | ||||
| 	#machdep			# Arch specific | ||||
| 	user | ||||
| 	ddb | ||||
| 	#vfs				# Special handling required | ||||
| 	fs.posix | ||||
| 	kern.forkstat | ||||
| 	kern.intrcnt | ||||
| 	kern.malloc | ||||
| 	kern.nchstats | ||||
| 	kern.seminfo | ||||
| 	kern.shminfo | ||||
| 	kern.timecounter | ||||
| 	kern.tty | ||||
| 	kern.watchdog | ||||
| 	net.bpf | ||||
| 	net.ifq | ||||
| 	net.inet | ||||
| 	net.inet.ah | ||||
| 	net.inet.carp | ||||
| 	net.inet.divert | ||||
| 	net.inet.esp | ||||
| 	net.inet.etherip | ||||
| 	net.inet.gre | ||||
| 	net.inet.icmp | ||||
| 	net.inet.igmp | ||||
| 	net.inet.ip | ||||
| 	net.inet.ip.ifq | ||||
| 	net.inet.ipcomp | ||||
| 	net.inet.ipip | ||||
| 	net.inet.mobileip | ||||
| 	net.inet.pfsync | ||||
| 	net.inet.pim | ||||
| 	net.inet.tcp | ||||
| 	net.inet.udp | ||||
| 	net.inet6 | ||||
| 	net.inet6.divert | ||||
| 	net.inet6.ip6 | ||||
| 	net.inet6.icmp6 | ||||
| 	net.inet6.pim6 | ||||
| 	net.inet6.tcp6 | ||||
| 	net.inet6.udp6 | ||||
| 	net.mpls | ||||
| 	net.mpls.ifq | ||||
| 	net.key | ||||
| 	net.pflow | ||||
| 	net.pfsync | ||||
| 	net.pipex | ||||
| 	net.rt | ||||
| 	vm.swapencrypt | ||||
| 	#vfsgenctl			# Special handling required | ||||
| ); | ||||
|  | ||||
| # Node name "fixups" | ||||
| my %ctl_map = ( | ||||
| 	"ipproto" => "net.inet", | ||||
| 	"net.inet.ipproto" => "net.inet", | ||||
| 	"net.inet6.ipv6proto" => "net.inet6", | ||||
| 	"net.inet6.ipv6" => "net.inet6.ip6", | ||||
| 	"net.inet.icmpv6" => "net.inet6.icmp6", | ||||
| 	"net.inet6.divert6" => "net.inet6.divert", | ||||
| 	"net.inet6.tcp6" => "net.inet.tcp", | ||||
| 	"net.inet6.udp6" => "net.inet.udp", | ||||
| 	"mpls" => "net.mpls", | ||||
| 	"swpenc" => "vm.swapencrypt" | ||||
| ); | ||||
|  | ||||
| # Node mappings | ||||
| my %node_map = ( | ||||
| 	"net.inet.ip.ifq" => "net.ifq", | ||||
| 	"net.inet.pfsync" => "net.pfsync", | ||||
| 	"net.mpls.ifq" => "net.ifq" | ||||
| ); | ||||
|  | ||||
| my $ctlname; | ||||
| my %mib = (); | ||||
| my %sysctl = (); | ||||
| my $node; | ||||
|  | ||||
| sub debug() { | ||||
| 	print STDERR "$_[0]\n" if $debug; | ||||
| } | ||||
|  | ||||
| # Walk the MIB and build a sysctl name to OID mapping. | ||||
| sub build_sysctl() { | ||||
| 	my ($node, $name, $oid) = @_; | ||||
| 	my %node = %{$node}; | ||||
| 	my @oid = @{$oid}; | ||||
|  | ||||
| 	foreach my $key (sort keys %node) { | ||||
| 		my @node = @{$node{$key}}; | ||||
| 		my $nodename = $name.($name ne '' ? '.' : '').$key; | ||||
| 		my @nodeoid = (@oid, $node[0]); | ||||
| 		if ($node[1] eq 'CTLTYPE_NODE') { | ||||
| 			if (exists $node_map{$nodename}) { | ||||
| 				$node = \%mib; | ||||
| 				$ctlname = $node_map{$nodename}; | ||||
| 				foreach my $part (split /\./, $ctlname) { | ||||
| 					$node = \%{@{$$node{$part}}[2]}; | ||||
| 				} | ||||
| 			} else { | ||||
| 				$node = $node[2]; | ||||
| 			} | ||||
| 			&build_sysctl($node, $nodename, \@nodeoid); | ||||
| 		} elsif ($node[1] ne '') { | ||||
| 			$sysctl{$nodename} = \@nodeoid; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| foreach my $ctl (@ctls) { | ||||
| 	$ctls{$ctl} = $ctl; | ||||
| } | ||||
|  | ||||
| # Build MIB | ||||
| foreach my $header (@headers) { | ||||
| 	&debug("Processing $header..."); | ||||
| 	open HEADER, "/usr/include/$header" || | ||||
| 	    print STDERR "Failed to open $header\n"; | ||||
| 	while (<HEADER>) { | ||||
| 		if ($_ =~ /^#define\s+(CTL_NAMES)\s+{/ || | ||||
| 		    $_ =~ /^#define\s+(CTL_(.*)_NAMES)\s+{/ || | ||||
| 		    $_ =~ /^#define\s+((.*)CTL_NAMES)\s+{/) { | ||||
| 			if ($1 eq 'CTL_NAMES') { | ||||
| 				# Top level. | ||||
| 				$node = \%mib; | ||||
| 			} else { | ||||
| 				# Node. | ||||
| 				my $nodename = lc($2); | ||||
| 				if ($header =~ /^netinet\//) { | ||||
| 					$ctlname = "net.inet.$nodename"; | ||||
| 				} elsif ($header =~ /^netinet6\//) { | ||||
| 					$ctlname = "net.inet6.$nodename"; | ||||
| 				} elsif ($header =~ /^net\//) { | ||||
| 					$ctlname = "net.$nodename"; | ||||
| 				} else { | ||||
| 					$ctlname = "$nodename"; | ||||
| 					$ctlname =~ s/^(fs|net|kern)_/$1\./; | ||||
| 				} | ||||
| 				if (exists $ctl_map{$ctlname}) { | ||||
| 					$ctlname = $ctl_map{$ctlname}; | ||||
| 				} | ||||
| 				if (not exists $ctls{$ctlname}) { | ||||
| 					&debug("Ignoring $ctlname..."); | ||||
| 					next; | ||||
| 				} | ||||
|  | ||||
| 				# Walk down from the top of the MIB. | ||||
| 				$node = \%mib; | ||||
| 				foreach my $part (split /\./, $ctlname) { | ||||
| 					if (not exists $$node{$part}) { | ||||
| 						&debug("Missing node $part"); | ||||
| 						$$node{$part} = [ 0, '', {} ]; | ||||
| 					} | ||||
| 					$node = \%{@{$$node{$part}}[2]}; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			# Populate current node with entries. | ||||
| 			my $i = -1; | ||||
| 			while (defined($_) && $_ !~ /^}/) { | ||||
| 				$_ = <HEADER>; | ||||
| 				$i++ if $_ =~ /{.*}/; | ||||
| 				next if $_ !~ /{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}/; | ||||
| 				$$node{$1} = [ $i, $2, {} ]; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	close HEADER; | ||||
| } | ||||
|  | ||||
| &build_sysctl(\%mib, "", []); | ||||
|  | ||||
| print <<EOF; | ||||
| // mksysctl_openbsd.pl | ||||
| // Code generated by the command above; DO NOT EDIT. | ||||
|  | ||||
| // +build $ENV{'GOARCH'},$ENV{'GOOS'} | ||||
|  | ||||
| package unix; | ||||
|  | ||||
| type mibentry struct { | ||||
| 	ctlname string | ||||
| 	ctloid []_C_int | ||||
| } | ||||
|  | ||||
| var sysctlMib = []mibentry { | ||||
| EOF | ||||
|  | ||||
| foreach my $name (sort keys %sysctl) { | ||||
| 	my @oid = @{$sysctl{$name}}; | ||||
| 	print "\t{ \"$name\", []_C_int{ ", join(', ', @oid), " } }, \n"; | ||||
| } | ||||
|  | ||||
| print <<EOF; | ||||
| } | ||||
| EOF | ||||
							
								
								
									
										39
									
								
								vendor/golang.org/x/sys/unix/mksysnum_darwin.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										39
									
								
								vendor/golang.org/x/sys/unix/mksysnum_darwin.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,39 +0,0 @@ | ||||
| #!/usr/bin/env perl | ||||
| # 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. | ||||
| # | ||||
| # Generate system call table for Darwin from sys/syscall.h | ||||
|  | ||||
| use strict; | ||||
|  | ||||
| if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") { | ||||
| 	print STDERR "GOARCH or GOOS not defined in environment\n"; | ||||
| 	exit 1; | ||||
| } | ||||
|  | ||||
| my $command = "mksysnum_darwin.pl " . join(' ', @ARGV); | ||||
|  | ||||
| print <<EOF; | ||||
| // $command | ||||
| // Code generated by the command above; see README.md. DO NOT EDIT. | ||||
|  | ||||
| // +build $ENV{'GOARCH'},$ENV{'GOOS'} | ||||
|  | ||||
| package unix | ||||
|  | ||||
| const ( | ||||
| EOF | ||||
|  | ||||
| while(<>){ | ||||
| 	if(/^#define\s+SYS_(\w+)\s+([0-9]+)/){ | ||||
| 		my $name = $1; | ||||
| 		my $num = $2; | ||||
| 		$name =~ y/a-z/A-Z/; | ||||
| 		print "	SYS_$name = $num;" | ||||
| 	} | ||||
| } | ||||
|  | ||||
| print <<EOF; | ||||
| ) | ||||
| EOF | ||||
							
								
								
									
										50
									
								
								vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										50
									
								
								vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,50 +0,0 @@ | ||||
| #!/usr/bin/env perl | ||||
| # 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. | ||||
| # | ||||
| # Generate system call table for DragonFly from master list | ||||
| # (for example, /usr/src/sys/kern/syscalls.master). | ||||
|  | ||||
| use strict; | ||||
|  | ||||
| if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") { | ||||
| 	print STDERR "GOARCH or GOOS not defined in environment\n"; | ||||
| 	exit 1; | ||||
| } | ||||
|  | ||||
| my $command = "mksysnum_dragonfly.pl " . join(' ', @ARGV); | ||||
|  | ||||
| print <<EOF; | ||||
| // $command | ||||
| // Code generated by the command above; see README.md. DO NOT EDIT. | ||||
|  | ||||
| // +build $ENV{'GOARCH'},$ENV{'GOOS'} | ||||
|  | ||||
| package unix | ||||
|  | ||||
| const ( | ||||
| EOF | ||||
|  | ||||
| while(<>){ | ||||
| 	if(/^([0-9]+)\s+STD\s+({ \S+\s+(\w+).*)$/){ | ||||
| 		my $num = $1; | ||||
| 		my $proto = $2; | ||||
| 		my $name = "SYS_$3"; | ||||
| 		$name =~ y/a-z/A-Z/; | ||||
|  | ||||
| 		# There are multiple entries for enosys and nosys, so comment them out. | ||||
| 		if($name =~ /^SYS_E?NOSYS$/){ | ||||
| 			$name = "// $name"; | ||||
| 		} | ||||
| 		if($name eq 'SYS_SYS_EXIT'){ | ||||
| 			$name = 'SYS_EXIT'; | ||||
| 		} | ||||
|  | ||||
| 		print "	$name = $num;  // $proto\n"; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| print <<EOF; | ||||
| ) | ||||
| EOF | ||||
							
								
								
									
										50
									
								
								vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										50
									
								
								vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,50 +0,0 @@ | ||||
| #!/usr/bin/env perl | ||||
| # 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. | ||||
| # | ||||
| # Generate system call table for FreeBSD from master list | ||||
| # (for example, /usr/src/sys/kern/syscalls.master). | ||||
|  | ||||
| use strict; | ||||
|  | ||||
| if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") { | ||||
| 	print STDERR "GOARCH or GOOS not defined in environment\n"; | ||||
| 	exit 1; | ||||
| } | ||||
|  | ||||
| my $command = "mksysnum_freebsd.pl " . join(' ', @ARGV); | ||||
|  | ||||
| print <<EOF; | ||||
| // $command | ||||
| // Code generated by the command above; see README.md. DO NOT EDIT. | ||||
|  | ||||
| // +build $ENV{'GOARCH'},$ENV{'GOOS'} | ||||
|  | ||||
| package unix | ||||
|  | ||||
| const ( | ||||
| EOF | ||||
|  | ||||
| while(<>){ | ||||
| 	if(/^([0-9]+)\s+\S+\s+STD\s+({ \S+\s+(\w+).*)$/){ | ||||
| 		my $num = $1; | ||||
| 		my $proto = $2; | ||||
| 		my $name = "SYS_$3"; | ||||
| 		$name =~ y/a-z/A-Z/; | ||||
|  | ||||
| 		# There are multiple entries for enosys and nosys, so comment them out. | ||||
| 		if($name =~ /^SYS_E?NOSYS$/){ | ||||
| 			$name = "// $name"; | ||||
| 		} | ||||
| 		if($name eq 'SYS_SYS_EXIT'){ | ||||
| 			$name = 'SYS_EXIT'; | ||||
| 		} | ||||
|  | ||||
| 		print "	$name = $num;  // $proto\n"; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| print <<EOF; | ||||
| ) | ||||
| EOF | ||||
							
								
								
									
										58
									
								
								vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										58
									
								
								vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,58 +0,0 @@ | ||||
| #!/usr/bin/env perl | ||||
| # 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. | ||||
| # | ||||
| # Generate system call table for OpenBSD from master list | ||||
| # (for example, /usr/src/sys/kern/syscalls.master). | ||||
|  | ||||
| use strict; | ||||
|  | ||||
| if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") { | ||||
| 	print STDERR "GOARCH or GOOS not defined in environment\n"; | ||||
| 	exit 1; | ||||
| } | ||||
|  | ||||
| my $command = "mksysnum_netbsd.pl " . join(' ', @ARGV); | ||||
|  | ||||
| print <<EOF; | ||||
| // $command | ||||
| // Code generated by the command above; see README.md. DO NOT EDIT. | ||||
|  | ||||
| // +build $ENV{'GOARCH'},$ENV{'GOOS'} | ||||
|  | ||||
| package unix | ||||
|  | ||||
| const ( | ||||
| EOF | ||||
|  | ||||
| my $line = ''; | ||||
| while(<>){ | ||||
| 	if($line =~ /^(.*)\\$/) { | ||||
| 		# Handle continuation | ||||
| 		$line = $1; | ||||
| 		$_ =~ s/^\s+//; | ||||
| 		$line .= $_; | ||||
| 	} else { | ||||
| 		# New line | ||||
| 		$line = $_; | ||||
| 	} | ||||
| 	next if $line =~ /\\$/; | ||||
| 	if($line =~ /^([0-9]+)\s+((STD)|(NOERR))\s+(RUMP\s+)?({\s+\S+\s*\*?\s*\|(\S+)\|(\S*)\|(\w+).*\s+})(\s+(\S+))?$/) { | ||||
| 		my $num = $1; | ||||
| 		my $proto = $6; | ||||
| 		my $compat = $8; | ||||
| 		my $name = "$7_$9"; | ||||
|  | ||||
| 		$name = "$7_$11" if $11 ne ''; | ||||
| 		$name =~ y/a-z/A-Z/; | ||||
|  | ||||
| 		if($compat eq '' || $compat eq '13' || $compat eq '30' || $compat eq '50') { | ||||
| 			print "	$name = $num;  // $proto\n"; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| print <<EOF; | ||||
| ) | ||||
| EOF | ||||
							
								
								
									
										50
									
								
								vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										50
									
								
								vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,50 +0,0 @@ | ||||
| #!/usr/bin/env perl | ||||
| # 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. | ||||
| # | ||||
| # Generate system call table for OpenBSD from master list | ||||
| # (for example, /usr/src/sys/kern/syscalls.master). | ||||
|  | ||||
| use strict; | ||||
|  | ||||
| if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") { | ||||
| 	print STDERR "GOARCH or GOOS not defined in environment\n"; | ||||
| 	exit 1; | ||||
| } | ||||
|  | ||||
| my $command = "mksysnum_openbsd.pl " . join(' ', @ARGV); | ||||
|  | ||||
| print <<EOF; | ||||
| // $command | ||||
| // Code generated by the command above; see README.md. DO NOT EDIT. | ||||
|  | ||||
| // +build $ENV{'GOARCH'},$ENV{'GOOS'} | ||||
|  | ||||
| package unix | ||||
|  | ||||
| const ( | ||||
| EOF | ||||
|  | ||||
| while(<>){ | ||||
| 	if(/^([0-9]+)\s+STD\s+(NOLOCK\s+)?({ \S+\s+\*?(\w+).*)$/){ | ||||
| 		my $num = $1; | ||||
| 		my $proto = $3; | ||||
| 		my $name = $4; | ||||
| 		$name =~ y/a-z/A-Z/; | ||||
|  | ||||
| 		# There are multiple entries for enosys and nosys, so comment them out. | ||||
| 		if($name =~ /^SYS_E?NOSYS$/){ | ||||
| 			$name = "// $name"; | ||||
| 		} | ||||
| 		if($name eq 'SYS_SYS_EXIT'){ | ||||
| 			$name = 'SYS_EXIT'; | ||||
| 		} | ||||
|  | ||||
| 		print "	$name = $num;  // $proto\n"; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| print <<EOF; | ||||
| ) | ||||
| EOF | ||||
		Reference in New Issue
	
	Block a user