aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl
blob: e74616a65aefe69191954e0569929ee51c1f1f8e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/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
// MACHINE GENERATED BY THE ABOVE COMMAND; 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 '30' || $compat eq '50') {
            print " $name = $num;  // $proto\n";
        }
    }
}

print <<EOF;
)
EOF