duplicate TIOCGPGRP for controller - minus the check for controlling terminal
[unix-history] / usr / src / sys / kern / makesyscalls.sh
index a62c9ff..6d2fc52 100644 (file)
@@ -1,5 +1,7 @@
 #! /bin/sh -
 #! /bin/sh -
-#      @(#)makesyscalls.sh     7.2 (Berkeley) %G%
+#      @(#)makesyscalls.sh     7.5 (Berkeley) %G%
+
+set -e
 
 # name of compat option:
 compat=COMPAT_43
 
 # name of compat option:
 compat=COMPAT_43
@@ -14,6 +16,8 @@ sysdcl="sysent.dcl"
 syscompat="sysent.compat"
 sysent="sysent.switch"
 
 syscompat="sysent.compat"
 sysent="sysent.switch"
 
+trap "rm $sysdcl $syscompat $sysent" 0
+
 case $# in
     0) echo "Usage: $0 input-file" 1>&2
        exit 1
 case $# in
     0) echo "Usage: $0 input-file" 1>&2
        exit 1
@@ -28,6 +32,7 @@ awk < $1 "
                sysnames = \"$sysnames\"
                syshdr = \"$syshdr\"
                compat = \"$compat\"
                sysnames = \"$sysnames\"
                syshdr = \"$syshdr\"
                compat = \"$compat\"
+               infile = \"$1\"
                "'
 
                printf "/*\n * System call switch table.\n *\n" > sysdcl
                "'
 
                printf "/*\n * System call switch table.\n *\n" > sysdcl
@@ -83,7 +88,9 @@ awk < $1 "
                next
        }
        syscall != $1 {
                next
        }
        syscall != $1 {
-               printf "syscall number out of sync at %d; line is:\n", syscall
+               printf "%s: line %d: syscall number out of sync at %d\n", \
+                  infile, NR, syscall
+               printf "line is:\n"
                print
                exit 1
        }
                print
                exit 1
        }
@@ -101,31 +108,53 @@ awk < $1 "
                    $5, syscall, $5) > sysnames
                printf("#define\tSYS_%s\t%d\n", \
                    $5, syscall) > syshdr
                    $5, syscall, $5) > sysnames
                printf("#define\tSYS_%s\t%d\n", \
                    $5, syscall) > syshdr
+               syscall++
+               next
        }
        $2 == "COMPAT" {
                printf("int\to%s();\n", $4) > syscompat
                printf("\tcompat(%d,%s),\t\t/* %d = old %s */\n", \
                    $3, $4, syscall, $5) > sysent
        }
        $2 == "COMPAT" {
                printf("int\to%s();\n", $4) > syscompat
                printf("\tcompat(%d,%s),\t\t/* %d = old %s */\n", \
                    $3, $4, syscall, $5) > sysent
-               printf("\t\"old %s\",\t\t/* %d = old %s */\n", \
+               printf("\t\"old.%s\",\t\t/* %d = old %s */\n", \
                    $5, syscall, $5) > sysnames
                printf("\t\t\t\t/* %d is old %s */\n", \
                    syscall, comment) > syshdr
                    $5, syscall, $5) > sysnames
                printf("\t\t\t\t/* %d is old %s */\n", \
                    syscall, comment) > syshdr
+               syscall++
+               next
+       }
+       $2 == "LIBCOMPAT" {
+               printf("int\to%s();\n", $4) > syscompat
+               printf("\tcompat(%d,%s),\t\t/* %d = old %s */\n", \
+                   $3, $4, syscall, $5) > sysent
+               printf("\t\"old.%s\",\t\t/* %d = old %s */\n", \
+                   $5, syscall, $5) > sysnames
+               printf("#define\tSYS_%s\t%d\t/* compatibility; still used by libc */\n", \
+                   $5, syscall) > syshdr
+               syscall++
+               next
        }
        $2 == "OBSOL" {
                printf("\t0, nosys,\t\t\t/* %d = obsolete %s */\n", \
                    syscall, comment) > sysent
        }
        $2 == "OBSOL" {
                printf("\t0, nosys,\t\t\t/* %d = obsolete %s */\n", \
                    syscall, comment) > sysent
-               printf("\t\"obs %s\",\t\t\t/* %d = obsolete %s */\n", \
+               printf("\t\"obs_%s\",\t\t\t/* %d = obsolete %s */\n", \
                    $4, syscall, comment) > sysnames
                printf("\t\t\t\t/* %d is obsolete %s */\n", \
                    syscall, comment) > syshdr
                    $4, syscall, comment) > sysnames
                printf("\t\t\t\t/* %d is obsolete %s */\n", \
                    syscall, comment) > syshdr
+               syscall++
+               next
        }
        $2 == "UNIMPL" {
                printf("\t0, nosys,\t\t\t/* %d = %s */\n", \
                    syscall, comment) > sysent
                printf("\t\"#%d\",\t\t\t/* %d = %s */\n", \
                    syscall, syscall, comment) > sysnames
        }
        $2 == "UNIMPL" {
                printf("\t0, nosys,\t\t\t/* %d = %s */\n", \
                    syscall, comment) > sysent
                printf("\t\"#%d\",\t\t\t/* %d = %s */\n", \
                    syscall, syscall, comment) > sysnames
+               syscall++
+               next
+       }
+       {
+               printf "%s: line %d: unrecognized keyword %s\n", infile, NR, $2
+               exit 1
        }
        }
-       { syscall++ }
        END {
                printf("\n#else /* %s */\n", compat) > syscompat
                printf("#define compat(n, name) 0, nosys\n") > syscompat
        END {
                printf("\n#else /* %s */\n", compat) > syscompat
                printf("#define compat(n, name) 0, nosys\n") > syscompat
@@ -138,6 +167,5 @@ awk < $1 "
        } '
 
 cat $sysdcl $syscompat $sysent >$syssw
        } '
 
 cat $sysdcl $syscompat $sysent >$syssw
-rm $sysdcl $syscompat $sysent
 
 chmod 444 $sysnames $syshdr $syssw
 
 chmod 444 $sysnames $syshdr $syssw