#!/usr/local/bin/perl # # Laptop survey formatter # # Copyright (c) 1996 by Tatsumi Hosokawa # print '=' x 75, "\n"; print ' ' x 25, "Laptop Survey / FreeBSD\n"; print '=' x 75, "\n\n"; if (shift(@ARGV) =~ /j/) { $jmode = 1; } else { $jmode = 0; } while () { if (/^\)ITEM$/) { $name = $item{1}; $addr = $item{2}; $mcn = $item{3}; $cpu = $item{4}; $ram = $item{5}; $hdd = $item{6}; $bios = $item{7}; $fbsd = $item{8}; $fbsdv = $item{9}; $pccv = $item{10}; $apm = $item{11}; $apmv = $item{12}; $config= $item{13}; $pcic = $item{14}; $crd = $item{15}; $ngcrd = $item{16}; $misc = $item{17}; $miscj = $item{18}; if ($addr) { $name = sprintf("%s (%s)", $name, $addr); } &printitem("Name", $name); if ($mcn && $cpu && $ram && $hdd) { $spec = sprintf("%s (CPU %s, HDD %s, RAM %s)", $mcn, $cpu, $hdd, $ram); &printitem("Machine", $spec); } else { die "Incomplete Machine Spec."; } if ($fbsd) { if ($fbsdv) { $fbsdok = sprintf("%s (%s)", $fbsd, $fbsdv); } else { $fbsdok = $fbsd; } &printitem("FreeBSD", $fbsdok); } if ($pccv) { &printitem("Pccard Pkg", $pccv); } if ($apm) { if ($apmv) { $apmok = sprintf("%s (%s)", $apm, $apmv); } else { $apmok = $apm; } &printitem("APM BIOS", $apmok); } if ($config) { &printitem("Config Opt", $config); } if ($pcic) { &printitem("PCIC", $pcic); } if ($crd) { &printitem("Cards", $crd); } if ($ngcrd) { &printitem("NG-Cards", $ngcrd); } if ($misc && (!$miscj || !$jmode)) { &printitem("Misc Info", $misc); } if ($jmode && $miscj) { &printitem("Misc Info", $miscj); } } elsif (/^\(ITEM$/) { print '=' x 75, "\n"; for ($i = 0; $i < 20; $i++) { $item{$i} = 0; } $crdcnt = 0; $ngcrdcnt = 0; } elsif (/^\(NAME$/) { $mode = 1; } elsif (/^\(ADDR$/) { $mode = 2; } elsif (/^\(MCN$/) { $mode = 3; } elsif (/^\(CPU$/) { $mode = 4; } elsif (/^\(RAM$/) { $mode = 5; } elsif (/^\(HDD$/) { $mode = 6; } elsif (/^\(BIOS$/) { $mode = 7; } elsif (/^\(FBSD$/) { $mode = 8; } elsif (/^\(FBSDV$/) { $mode = 9; } elsif (/^\(PCCV$/) { $mode = 10; } elsif (/^\(APM$/) { $mode = 11; } elsif (/^\(APMV$/) { $mode = 12; } elsif (/^\(CONFIG$/) { $mode = 13; } elsif (/^\(PCIC$/) { $mode = 14; } elsif (/^\(CRD$/) { $mode = 15; } elsif (/^\(NGCRD$/) { $mode = 16; } elsif (/^\(MISC$/) { $mode = 17; } elsif (/^\(MISCJ$/) { $mode = 18; } elsif (/^\(TYPE$/) { $crdmode = 1; } elsif (/^\(CONF$/) { $crdmode = 2; } if (/^-/) { if ($mode == 15 || $mode == 16) { if (!$item{$mode}) { $item{$mode} = ""; } s/^-\s*//; chop; s/^(\s|\\n)*//; s/(\s|\\n)*$//; if ($crdmode == 1) { $item{$mode} .= sprintf("- %s\\n", $_); } elsif ($crdmode == 2) { s/\\n/\\n\\011/g; $item{$mode} .= ("\\011" . $_ . "\\n"); } } else { s/^-\s*//; chop; s/\s+$//; $item{$mode} = $_; } } } print '=' x 75, "\n"; sub printitem { local($name, $item) = @_; local($colon); if (!($item =~ /\\n/)) { $item =~ s/\011//g; $colon = ":"; piloop: while (1) { if (length($item) >= 60) { $pritem = substr($item, 0, 60 - 1); $pritem =~ s/\S+$//; substr($item, 0, length($pritem)) = ''; $item =~ s/^\s*//; } else { $pritem = $item; printf("%-10s%s %s\n", $name, $colon, $pritem); last piloop; } printf("%-10s%s %s\n", $name, $colon, $pritem); $name = ""; $colon = " "; } } else { printf("%-10s:\n", $name); $item =~ s/^(\\n)*//; $item =~ s/(\\n)*$//; $item =~ s/\\n/\n /g; $item =~ s/\\011/\011/g; print " ", $item, "\n"; } }