From: Jaroslavas Počepko Date: Sat, 24 Sep 2011 00:38:39 +0000 (+1000) Subject: syscall: mksyscall_windows.pl to produce packages other than syscall (for example... X-Git-Tag: weekly.2011-10-06~107 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=10b23e7fc94c6a89db2739080ba3c5e0fcbcaee9;p=gostls13.git syscall: mksyscall_windows.pl to produce packages other than syscall (for example pkg/exp/wingui/zwinapi.go) R=golang-dev, alex.brainman, rsc CC=golang-dev https://golang.org/cl/4964074 --- diff --git a/src/pkg/exp/wingui/Makefile b/src/pkg/exp/wingui/Makefile index 00f7d234dd..18fd30f3a6 100644 --- a/src/pkg/exp/wingui/Makefile +++ b/src/pkg/exp/wingui/Makefile @@ -19,11 +19,5 @@ include ../../../Make.cmd zwinapi.go: winapi.go $(GOROOT)/src/pkg/syscall/mksyscall_windows.pl $< \ - | sed 's/^package.*syscall$$/package main/' \ - | sed '/^import/a \ - import "syscall"' \ - | sed 's/Syscall/syscall.Syscall/' \ - | sed 's/NewLazyDLL/syscall.NewLazyDLL/' \ - | sed 's/EINVAL/syscall.EINVAL/' \ | gofmt \ > $@ diff --git a/src/pkg/syscall/mksyscall_windows.pl b/src/pkg/syscall/mksyscall_windows.pl index 4b245976e6..fa19fdc323 100755 --- a/src/pkg/syscall/mksyscall_windows.pl +++ b/src/pkg/syscall/mksyscall_windows.pl @@ -64,6 +64,7 @@ sub parseparam($) { return ($1, $2); } +my $package = ""; my $text = ""; my $vars = ""; my $mods = ""; @@ -73,8 +74,12 @@ while(<>) { s/\s+/ /g; s/^\s+//; s/\s+$//; + $package = $1 if !$package && /^package (\S+)$/; next if !/^\/\/sys /; + my $syscalldot = ""; + $syscalldot = "syscall." if $package ne "syscall"; + # Line must be of the form # func Open(path string, mode int, perm int) (fd int, errno int) # Split into name, in params, out params. @@ -96,7 +101,7 @@ while(<>) { my $modvname = "mod$modname"; if($modnames !~ /$modname/) { $modnames .= ".$modname"; - $mods .= "\t$modvname = NewLazyDLL(\"$modname.dll\")\n"; + $mods .= "\t$modvname = ${syscalldot}NewLazyDLL(\"$modname.dll\")\n"; } # System call name. @@ -165,23 +170,23 @@ while(<>) { my $nargs = @args; # Determine which form to use; pad args with zeros. - my $asm = "Syscall"; + my $asm = "${syscalldot}Syscall"; if(@args <= 3) { while(@args < 3) { push @args, "0"; } } elsif(@args <= 6) { - $asm = "Syscall6"; + $asm = "${syscalldot}Syscall6"; while(@args < 6) { push @args, "0"; } } elsif(@args <= 9) { - $asm = "Syscall9"; + $asm = "${syscalldot}Syscall9"; while(@args < 9) { push @args, "0"; } } elsif(@args <= 12) { - $asm = "Syscall12"; + $asm = "${syscalldot}Syscall12"; while(@args < 12) { push @args, "0"; } @@ -247,7 +252,7 @@ while(<>) { $body .= "\t\tif $reg != 0 {\n"; $body .= "\t\t\t$name = $type($reg)\n"; $body .= "\t\t} else {\n"; - $body .= "\t\t\t$name = EINVAL\n"; + $body .= "\t\t\t$name = ${syscalldot}EINVAL\n"; $body .= "\t\t}\n"; $body .= "\t} else {\n"; $body .= "\t\t$name = 0\n"; @@ -279,9 +284,14 @@ print <