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