183 lines
5.2 KiB
PHP
Executable File
183 lines
5.2 KiB
PHP
Executable File
<?php
|
|
//
|
|
// Created on: 11 Sep 2001
|
|
//
|
|
// Input : software version (e.g: iw05_01.048)
|
|
//
|
|
// Output : 2D array of source and destination filename
|
|
// : Array(
|
|
// Array(src 1,dest 1)
|
|
// Array(src 2,dest 2)
|
|
// .. .. ..
|
|
// Array(src n,dest n)
|
|
// );
|
|
//
|
|
// Supported format:
|
|
// compile/PROC/bsc.o:bschd
|
|
// compile/PROC/startup.hdd.fld.bsc:bschd=iwvstart=root=path
|
|
// iwlib/platform/KERNEL/bootrom.bin:bschd:bsxhd:btshd
|
|
// trxxil/btstrx.004:bschd:bsxhd: ne:trxxil/btstrxne.004:r
|
|
// trxxil/irprxic.bit:bschd:bsxhd:btshd ne:trxxil/irprxicn.bit a52:trxxil/irprxic2.bit:r
|
|
//
|
|
//
|
|
// Remarks :
|
|
// - file format for bssdist.fls can be found at the header of bssdist.fls
|
|
// - Use explode() as a faster split()
|
|
// - special keywords in bssdist.fls: KERNEL, PROC, ALL_CPU_TYPES
|
|
// - support for "bschd" only
|
|
// - does not support "=path" (i.e. it does not modify the path inside iwvstart)
|
|
//
|
|
?>
|
|
<?php
|
|
|
|
|
|
function get_sw_filenames ($version, $build_path, $iwbox_type)
|
|
{
|
|
$index=0;
|
|
$src_prefix = $build_path;
|
|
|
|
$trans_68k = Array("ALL_CPU_TYPES" => "68k");
|
|
$trans_ppc = Array("ALL_CPU_TYPES" => "ppc");
|
|
|
|
$filename = "$build_path/$version/compile/pkg";
|
|
$fileptr = fopen($filename,"r");
|
|
if ($fileptr == false)
|
|
{
|
|
echo "Failed to open file: $filename<BR>\n";
|
|
echo "Please check the BSS software is properly installed<BR>\n";
|
|
return;
|
|
}
|
|
$pkg = fgets($fileptr,3);
|
|
fclose($fileptr);
|
|
|
|
$filename = "$build_path/$version/compile/bssdist.fls";
|
|
$fileptr = fopen($filename,"r");
|
|
if ($fileptr == false)
|
|
{
|
|
echo "Failed to open file: $filename<BR>\n";
|
|
echo "Please check the BSS software is properly installed<BR>\n";
|
|
return;
|
|
}
|
|
|
|
while ( !feof($fileptr) )
|
|
{
|
|
/***********************************************************
|
|
* Read the input file line by line for ":bschd" or ":bsxhd"
|
|
***********************************************************/
|
|
$buffer = ltrim(fgets($fileptr, 1024));
|
|
$exist = ereg(":" . $iwbox_type ,$buffer);
|
|
if ( $exist == false)
|
|
continue;
|
|
|
|
/***********************
|
|
* Extract the comment
|
|
***********************/
|
|
$commentstart = strpos($buffer,"#");
|
|
if ($commentstart === false)
|
|
{
|
|
$theline = rtrim($buffer);
|
|
}
|
|
else
|
|
{
|
|
$theline = rtrim(substr($buffer,0,$commentstart));
|
|
}
|
|
if ($theline == "")
|
|
continue;
|
|
|
|
/**********************************************************
|
|
* Split the line into 2 columns delimited by space or tab
|
|
* Process each column seperately
|
|
**********************************************************/
|
|
$column = split("[ \t]+",$theline);
|
|
$left = $column[0];
|
|
|
|
|
|
/*****************************************
|
|
* Process the left column
|
|
*
|
|
* Remarks:
|
|
* bschd=<path> or bsxhd=<path>
|
|
* root mean /hd0/
|
|
* path is meaningless for hdxfer
|
|
*
|
|
*****************************************/
|
|
$left_field_by_colon = explode(":",$left);
|
|
if ($left_field_by_colon[0] == $left)
|
|
{
|
|
echo "<BR>Error decoding bssdist.fls<BR>\n";
|
|
return;
|
|
}
|
|
|
|
$src_path = "$src_prefix/$version";
|
|
$src_file = $left_field_by_colon[0];
|
|
$dest_path = "$version";
|
|
$dest_file = $left_field_by_colon[0];
|
|
|
|
// For each field seperated by ":"
|
|
// e.g. vxWorks:bschd=vxWorks=root:bsxhd=vxWorks=root
|
|
for ($i=1;isset($left_field_by_colon[$i]); $i++)
|
|
{
|
|
if (ereg($iwbox_type,$left_field_by_colon[$i]) == false)
|
|
continue;
|
|
|
|
$left_sub_field = explode($iwbox_type . "=",$left_field_by_colon[$i]);
|
|
if ($left_sub_field[0] != $left_field_by_colon[$i])
|
|
{
|
|
// "bschd=XXXX" or bschd=XXXX=root , "bsxhd=XXXX" or bsxhd=XXXX=root
|
|
$left_sub_sub_field = explode("=",$left_sub_field[1]);
|
|
$dest_file = "$left_sub_sub_field[0]";
|
|
// "bschd=XXXX=root", "bsxhd=XXXX=root"
|
|
$store_in_hd0 = ereg("=root", $left_sub_field[1]);
|
|
if ($store_in_hd0 != false)
|
|
{
|
|
$output[$index++]
|
|
= Array("$src_path/$src_file", "$dest_file");
|
|
//echo "$src_path/$src_file --> $dest_file<BR>";
|
|
}
|
|
}
|
|
break; // break because we just do ":bschd" or ":bsxhd"
|
|
}
|
|
|
|
|
|
for ($i=1;isset($column[$i]);$i++)
|
|
{
|
|
// ne:file
|
|
$right_field = explode(":",$column[$i]);
|
|
if (!strcmp($right_field[0],$pkg))
|
|
{
|
|
if (ereg(":r$",$column[$i]) == false)
|
|
{
|
|
$src_file = $right_field[1];
|
|
$dest_file = $right_field[1];
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
//
|
|
// processing the right column NOW (seperated by TAB)
|
|
// e.g. ne:trxxil/irprxicn.bit a52:trxxil/irprxic2.bit:r
|
|
//
|
|
if (ereg("ALL_CPU_TYPES",$src_file) || ereg("ALL_CPU_TYPES",$dest_file))
|
|
{
|
|
$output[$index++]
|
|
= Array(strtr("$src_path/$src_file",$trans_68k), strtr("$dest_path/$dest_file",$trans_68k));
|
|
$output[$index++]
|
|
= Array(strtr("$src_path/$src_file",$trans_ppc), strtr("$dest_path/$dest_file",$trans_ppc));
|
|
//echo strtr("$src_path/$src_file --> $dest_path/$dest_file<BR>",$trans_68k);
|
|
//echo strtr("$src_path/$src_file --> $dest_path/$dest_file<BR>",$trans_ppc);
|
|
}
|
|
else
|
|
{
|
|
$output[$index++] = Array("$src_path/$src_file", "$dest_path/$dest_file");
|
|
//echo "$src_path/$src_file --> $dest_path/$dest_file<BR>";
|
|
}
|
|
}
|
|
fclose($fileptr);
|
|
|
|
return ($output);
|
|
}
|
|
|
|
?>
|