]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: mksyscall_windows.pl to produce packages other than syscall (for example...
authorJaroslavas Počepko <jp@webmaster.ms>
Sat, 24 Sep 2011 00:38:39 +0000 (10:38 +1000)
committerAlex Brainman <alex.brainman@gmail.com>
Sat, 24 Sep 2011 00:38:39 +0000 (10:38 +1000)
R=golang-dev, alex.brainman, rsc
CC=golang-dev
https://golang.org/cl/4964074

src/pkg/exp/wingui/Makefile
src/pkg/syscall/mksyscall_windows.pl

index 00f7d234ddf4eef9d3c893dd6ade9916f11eaad5..18fd30f3a667cbc003f1a027fc9ed3723d8d7330 100644 (file)
@@ -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 \
                > $@
index 4b245976e696b5e10174aa79b7701cca22452636..fa19fdc323039d37f23bcaef5c047aebdda54f48 100755 (executable)
@@ -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 <<EOF;
 // $cmdline
 // MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
 
-package syscall
+package $package
 
 import "unsafe"
+EOF
+
+print "import \"syscall\"\n" if $package ne "syscall";
+
+print <<EOF;
 
 var (
 $mods