From f785e3345147058d839ed7e8be38a5fce1999e24 Mon Sep 17 00:00:00 2001 From: n_hibma Date: Sun, 22 Aug 1999 16:21:29 +0000 Subject: 1) Add HEADER section. Similar to CODE. 2) deindent the two sections (CODE and HEADER), based on the indent found on the first line of the section; to make the output more readable. --- sys/kern/makedevops.pl | 99 +++++++++++++++++++++++++++++--------------------- 1 file changed, 58 insertions(+), 41 deletions(-) (limited to 'sys/kern') diff --git a/sys/kern/makedevops.pl b/sys/kern/makedevops.pl index 3d4b730..6c6ec30 100644 --- a/sys/kern/makedevops.pl +++ b/sys/kern/makedevops.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl # # Copyright (c) 1992, 1993 -# The Regents of the University of California. All rights reserved. +# The Regents of the University of California. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -13,8 +13,8 @@ # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: -# This product includes software developed by the University of -# California, Berkeley and its contributors. +# This product includes software developed by the University of +# California, Berkeley and its contributors. # 4. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. @@ -31,11 +31,11 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# From @(#)vnode_if.sh 8.1 (Berkeley) 6/10/93 +# From @(#)vnode_if.sh 8.1 (Berkeley) 6/10/93 # From @(#)makedevops.sh 1.1 1998/06/14 13:53:12 dfr Exp $ # From @(#)makedevops.sh ?.? 1998/10/05 # -# $Id: makedevops.pl,v 1.8 1999/05/10 17:45:49 n_hibma Exp $ +# $Id: makedevops.pl,v 1.9 1999/08/18 08:39:14 n_hibma Exp $ # # Script to produce device front-end sugar. @@ -98,8 +98,8 @@ where -c produce only .c files -l set line width for output files [80] -d switch on debugging " - unless ($cfile or $hfile) - and $#filenames != -1; + unless ($cfile or $hfile) + and $#filenames != -1; # FIXME should be able to do this more easily # @@ -220,16 +220,33 @@ foreach $src ( @filenames ) { if $cfile; } elsif ( $line =~ m/^CODE\s*{$/i ) { - $code = ""; - $line = ; + $code = ""; + $line = ; + $line =~ m/^(\s*)/; + $indent = $1; # find the indent used while ( $line !~ m/^}/ ) { - $code .= $line; - $line = ; + $line =~ s/^$indent//g; # remove the indent + $code .= $line; + $line = ; $lineno++ - } - if ( $cfile ) { - print CFILE $code; - } + } + if ( $cfile ) { + print CFILE "\n".$code."\n"; + } + } elsif ( $line =~ m/^HEADER\s*{$/i ) { + $header = ""; + $line = ; + $line =~ m/^(\s*)/; + $indent = $1; # find the indent used + while ( $line !~ m/^}/ ) { + $line =~ s/^$indent//g; # remove the indent + $header .= $line; + $line = ; + $lineno++ + } + if ( $hfile ) { + print CFILE $header; + } } elsif ( $line =~ m/^(STATIC|)METHOD/i ) { # Get the return type function name and delete that from # the line. What is left is the possibly first function argument @@ -241,7 +258,7 @@ foreach $src ( @filenames ) { last LINE; } $line =~ s/^(STATIC|)METHOD\s+([^{]+?)\s*{\s*//i; - $static = $1; + $static = $1; @ret = split m/\s+/, $2; $name = pop @ret; # last element is name of method $ret = join(" ", @ret); # return type @@ -275,22 +292,22 @@ foreach $src ( @filenames ) { while ( $line !~ m/}/ and $line .= ) { $lineno++ - } - - $default = ""; - if ( $line !~ s/};?(.*)// ) { # remove first '}' and trailing garbage - # The '}' was not there (the rest is optional), so complain - warn "$src:$lineno: Premature end of file"; - $error = 1; - last LINE; - } - $extra = $1; - if ( $extra =~ /\s*DEFAULT\s*([a-zA-Z_][a-zA-Z_0-9]*)\s*;/ ) { - $default = $1; - } else { - warn "$src:$lineno: Ignored '$1'" # warn about garbage at end of line - if $debug and $1; - } + } + + $default = ""; + if ( $line !~ s/};?(.*)// ) { # remove first '}' and trailing garbage + # The '}' was not there (the rest is optional), so complain + warn "$src:$lineno: Premature end of file"; + $error = 1; + last LINE; + } + $extra = $1; + if ( $extra =~ /\s*DEFAULT\s*([a-zA-Z_][a-zA-Z_0-9]*)\s*;/ ) { + $default = $1; + } else { + warn "$src:$lineno: Ignored '$1'" # warn about garbage at end of line + if $debug and $1; + } # Create a list of variables without the types prepended # @@ -354,15 +371,15 @@ foreach $src ( @filenames ) { ',', ' ' x length("$ret $umname(")) . "\n"; } print CFILE "{\n"; - if ($static) { - print CFILE &format_line("\t$mname\_t *m = ($mname\_t *) DRVOPMETH(driver, $mname);", - $line_width-8, ' = ', ' =', "\t\t") - . "\n"; - } else { - print CFILE &format_line("\t$mname\_t *m = ($mname\_t *) DEVOPMETH(dev, $mname);", - $line_width-8, ' = ', ' =', "\t\t") - . "\n"; - } + if ($static) { + print CFILE &format_line("\t$mname\_t *m = ($mname\_t *) DRVOPMETH(driver, $mname);", + $line_width-8, ' = ', ' =', "\t\t") + . "\n"; + } else { + print CFILE &format_line("\t$mname\_t *m = ($mname\_t *) DEVOPMETH(dev, $mname);", + $line_width-8, ' = ', ' =', "\t\t") + . "\n"; + } print CFILE "\t".($ret eq 'void'? '':'return ') . "m($varnames);\n"; print CFILE "}\n\n"; } -- cgit v1.1