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 \
> $@
return ($1, $2);
}
+my $package = "";
my $text = "";
my $vars = "";
my $mods = "";
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.
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.
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";
}
$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";
// $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