makestrerror.awk revision 1.1.20.1 1 #! /usr/bin/awk -f
2 #
3 # create dos_strerror() from dos_errno.h
4 #
5 # written by Yasha (ITOH Yasufumi)
6 # public domain
7 #
8 # $NetBSD: makestrerror.awk,v 1.1.20.1 1999/12/27 18:34:19 wrstuden Exp $
9
10 /^\/\* dos_errlist begin \*\/$/,/^\/\* dos_errlist end \*\/$/ {
11 if ($0 ~ /^\/\* dos_errlist begin \*\/$/) {
12 # assembly code
13 print "| This file is automatically generated. DO NOT EDIT."
14 print "#include \"dos_asm.h\""
15 print "#include \"dos_errno.h\""
16 print " .text"
17 print " .even"
18 print "GLOBAL(dos_nerr)"
19 print " .long DOS_ELAST+1"
20 print ""
21 print "ENTRY_NOPROFILE(dos_strerror)"
22 print " movel %sp@(4),%d0"
23 print " moveq #80,%d1"
24 print " cmpl %d0,%d1"
25 print " bnes Lnot80"
26 print " moveq #DOS_EEXIST,%d0"
27 print "Lnot80: moveq #DOS_ELAST+1,%d1"
28 print " cmpl %d1,%d0"
29 print " bcss Lnotuk"
30 print " movel %d1,%d0"
31 print "Lnotuk: lslw #1,%d0"
32 print "Lh1:\tmovew\t%pc@(Lerrtbl-Lh1-2:B,%d0:W),%d0\t| 303B 000A"
33 print "Lh2:\tlea\t%pc@(Lerrtbl-Lh2-2:B,%d0:W),%a0\t| 41FB 0006"
34 print " movel %a0,%d0"
35 print " rts"
36 print ""
37 print "Lerrtbl:"
38 nmsg = 0
39 } else if ($0 ~ /^\/\* dos_errlist end \*\/$/) {
40 print "\t.word\tLukmsg-Lerrtbl | default message"
41 print ""
42 # error strings
43 for (i = 0; i < nmsg; i++)
44 print "Lmsg" i ":\t.asciz\t\"" msg[i] "\""
45
46 print "Lukmsg:\t.asciz\t\"Unknown error\""
47 exit
48 } else {
49 if ($3 != nmsg || $4 != "/*") {
50 printf FILENAME ":" NR ": format error"
51 exit(1);
52 }
53 # offset table
54 print "\t.word\tLmsg" nmsg "-Lerrtbl"
55 $1 = ""
56 $2 = ""
57 $3 = ""
58 $4 = ""
59 msg[nmsg] = substr($0, 5, length - 7)
60 nmsg++
61 }
62 }
63