#!/usr/bin/perl # # # functions required by share_setup and client_setup # # # Define description strings %description = ( "CPUBOARD" => "CPU board", "CPUARCH" => "CPU architecture", "GFXBOARD" => "graphics board", "SUBGR" => "graphics subgroup", "VIDEO" => "video card", "MODE" => "mode", ); # Get the support architecture list from .dl_classes sub get_arch() { open (IN, ".dl_classes") || die "Can't open .dl_classes: $!\n"; $i = 0; line: while () { chomp; next line if /^#/; next line if (!$_); $_ =~s/\s+/:/g; ($data[$i]{CPUBOARD}, $data[$i]{CPUARCH}, $data[$i]{GFXBOARD}, $data[$i]{SUBGR}, $data[$i]{VIDEO}, $data[$i]{MODE}) = split(/:/,$_,6); #Video is the only thing that can be tagged "NULL" in .dl_classes if ($data[$i]{VIDEO} eq "NULL") { $data[$i]{VIDEO} = ""; } $i++; } close IN; return; } # Pick the necessary information for use sub pick_info() { foreach $item ("CPUBOARD", "CPUARCH", "GFXBOARD", "SUBGR", "VIDEO", "MODE") { $j = 0; $i = 0; $there = 0; splice(@temp,0); for ($k = 0 ; $k < scalar@data ; $k++) { $l = 0; while ($l < scalar@temp) { if ($data[$k]{$item} eq $temp[$l]) { $there = 1; } $l++; } if (!$there) { if (defined $MODE) { if ($data[$k]{'MODE'} eq $MODE) { $temp[$j++] = $data[$k]{$item}; } } else { $temp[$j++] = $data[$k]{$item}; } } $there = 0; } $k = 1; if (scalar@temp != 1) { print "Choose the $description{$item}:\n"; foreach $item (@temp) { if ($item eq "") { print "\t$k. Not installed\n"; } else { print "\t$k. $item\n"; } $k++; } ww: print "\nChoose one \("; for ($k = 1 ; $k <= scalar@temp ; $k++) { print "$k "; } print "\): "; chomp($choice = ); if (($choice<1)||($choice>scalar@temp)) { print "Please choose a proper selection\n"; goto ww; } $itemx=$temp[$choice-1]; print ">> $itemx selected.\n"; } else { $itemx=$temp[0]; } var: while ($i) { chomp; next linex if /^#/; next linex if (!$_); $_ =~s/\s+/:/g; ($CPB,$CPA,$GFB,$SGR,$VID,$MD) = split(/:/,$_,6); if ($VID eq "NULL") { $VID = ""; } if ($MD eq $xyz) { #Append to old or create if new if (!defined $MODE) { $CPUBOARD=$CPB; $CPUARCH=$CPA; $GFXBOARD=$GFB . " -mSUBGR=" . $SGR; $VIDEO=$VID; $MODE=$MD; } else { if (index($CPUBOARD,$CPB)<0) { $CPUBOARD.=" -mCPUBOARD=" . $CPB; } if (index($CPUARCH,$CPA)<0) { $CPUARCH.=" -mCPUARCH=" . $CPA; } $temp=$GFB . " -mSUBGR=" . $SGR; if (index($GFXBOARD,$temp)<0) { $GFXBOARD.=" -mGFXBOARD=" . $temp; } if ($VIDEO eq "") { $VIDEO=$VID; } elsif (index($VIDEO,$VID)<0) { $VIDEO.=" -mVIDEO=" . $VID; } } } } } return 1; #Just to do it