1*0Sstevel@tonic-gate#!/usr/bin/perl 2*0Sstevel@tonic-gate# 3*0Sstevel@tonic-gate# CDDL HEADER START 4*0Sstevel@tonic-gate# 5*0Sstevel@tonic-gate# The contents of this file are subject to the terms of the 6*0Sstevel@tonic-gate# Common Development and Distribution License, Version 1.0 only 7*0Sstevel@tonic-gate# (the "License"). You may not use this file except in compliance 8*0Sstevel@tonic-gate# with the License. 9*0Sstevel@tonic-gate# 10*0Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 11*0Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing. 12*0Sstevel@tonic-gate# See the License for the specific language governing permissions 13*0Sstevel@tonic-gate# and limitations under the License. 14*0Sstevel@tonic-gate# 15*0Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each 16*0Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 17*0Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the 18*0Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying 19*0Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner] 20*0Sstevel@tonic-gate# 21*0Sstevel@tonic-gate# CDDL HEADER END 22*0Sstevel@tonic-gate# 23*0Sstevel@tonic-gate# 24*0Sstevel@tonic-gate# Copyright (c) 2000 by Sun Microsystems, Inc. 25*0Sstevel@tonic-gate# All rights reserved. 26*0Sstevel@tonic-gate# 27*0Sstevel@tonic-gate 28*0Sstevel@tonic-gate#pragma ident "%Z%%M% %I% %E% SMI" 29*0Sstevel@tonic-gate 30*0Sstevel@tonic-gatesub trim { 31*0Sstevel@tonic-gate my ($line) = @_; 32*0Sstevel@tonic-gate $line =~ s#/\*|\*/##g; 33*0Sstevel@tonic-gate $line =~ s#^\s+|\s+$##g; 34*0Sstevel@tonic-gate return $line; 35*0Sstevel@tonic-gate} 36*0Sstevel@tonic-gate 37*0Sstevel@tonic-gatemy $filter = 0; 38*0Sstevel@tonic-gatemy %prefix; 39*0Sstevel@tonic-gatewhile ($#ARGV >= 0) { 40*0Sstevel@tonic-gate $prefix{$ARGV[0]} = 0; 41*0Sstevel@tonic-gate shift @ARGV; 42*0Sstevel@tonic-gate $filter = 1; 43*0Sstevel@tonic-gate} 44*0Sstevel@tonic-gate 45*0Sstevel@tonic-gatemy $base; 46*0Sstevel@tonic-gatemy $bnd; 47*0Sstevel@tonic-gatemy @text; 48*0Sstevel@tonic-gatemy @sets; 49*0Sstevel@tonic-gatewhile (<STDIN>) { 50*0Sstevel@tonic-gate my $n = m@^#define\s(E\w\w\w)\w+\s+(\d+)(.*)@; 51*0Sstevel@tonic-gate next unless ($n > 0); 52*0Sstevel@tonic-gate next unless ($filter == 0 || defined $prefix{$1}); 53*0Sstevel@tonic-gate my $txt = trim($3); 54*0Sstevel@tonic-gate if (length($txt) == 0) { 55*0Sstevel@tonic-gate my $l = <STDIN>; 56*0Sstevel@tonic-gate $txt = trim($l); 57*0Sstevel@tonic-gate } 58*0Sstevel@tonic-gate 59*0Sstevel@tonic-gate $base = $2 if (!defined $base); 60*0Sstevel@tonic-gate if (defined $bnd && $2 != $bnd + 1) { 61*0Sstevel@tonic-gate push(@sets, { base => $base, bnd => $bnd }); 62*0Sstevel@tonic-gate $base = $2; 63*0Sstevel@tonic-gate } 64*0Sstevel@tonic-gate $bnd = $2; 65*0Sstevel@tonic-gate push(@text, $txt); 66*0Sstevel@tonic-gate} 67*0Sstevel@tonic-gate 68*0Sstevel@tonic-gatepush(@sets, { base => $base, bnd => $bnd }); 69*0Sstevel@tonic-gate 70*0Sstevel@tonic-gateprintf "#include <sys/sbd_ioctl.h>\n"; 71*0Sstevel@tonic-gate 72*0Sstevel@tonic-gatemy $i = 0; 73*0Sstevel@tonic-gatemy $s = 0; 74*0Sstevel@tonic-gatedo { 75*0Sstevel@tonic-gate my $set = $sets[$s]; 76*0Sstevel@tonic-gate 77*0Sstevel@tonic-gate printf "static char *sbd_t%d[] = {\n", $set->{base}; 78*0Sstevel@tonic-gate my $n = $set->{bnd} - $set->{base} + 1; 79*0Sstevel@tonic-gate while ($n--) { 80*0Sstevel@tonic-gate printf "\t\"%s\",\n", $text[$i++]; 81*0Sstevel@tonic-gate } 82*0Sstevel@tonic-gate printf "};\n"; 83*0Sstevel@tonic-gate} while (++$s <= $#sets); 84*0Sstevel@tonic-gate 85*0Sstevel@tonic-gateprintf "sbd_etab_t sbd_etab[] = {\n"; 86*0Sstevel@tonic-gate$s = 0; 87*0Sstevel@tonic-gatedo { 88*0Sstevel@tonic-gate my $set = $sets[$s]; 89*0Sstevel@tonic-gate printf "\t{ %d, %d, sbd_t%d },\n", 90*0Sstevel@tonic-gate $set->{base}, $set->{bnd}, $set->{base}; 91*0Sstevel@tonic-gate} while (++$s <= $#sets); 92*0Sstevel@tonic-gateprintf "};\n"; 93*0Sstevel@tonic-gateprintf "int sbd_etab_len = %d;\n", $s; 94