Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

225 lines
4.7 KiB

#!perl -w
#
# A tool to create boot floppy images.
#
# Author: Milong Sabandith (milongs)
#
##############################################################################
use lib $ENV{RAZZLETOOLPATH} . "\\PostBuildScripts";
use lib $ENV{RAZZLETOOLPATH};
use PbuildEnv;
use ParseArgs;
use cksku;
use ReadSetupFiles;
use Logmsg;
sub Usage { print<<USAGE; exit(1) }
Create Boot Floppy Images.
Usage: $0 share
Example:
$0 d:\i386
USAGE
$ErrorCode = 0;
$listlength = 27;
@skulist = (
"win3.x",
"win95",
"win98",
"win98/se",
"win98/98se",
"winme",
"Win NT 3.51 Wks",
"Win NT 4.0 Wks",
"BackOffice SBS 4.x",
"Win 2k Retail Pro FPP/CPP",
"Win 2k OEM Pro FPP/CPP",
"Win 2k Select Pro",
"Win 2k MSDN Pro",
"Win 2k Eval Pro",
"SBS 2000",
"Whistler Retail Pro FPP/CPP",
"Whistler OEM Pro FPP/CPP",
"Whistler Select Pro",
"Whistler MSDN Pro",
"Whistler Eval Pro",
"Whistler Retail Pers FPP/CPP",
"Whistler OEM Pers FPP/CPP",
"Whistler Select Pers",
"Whistler MSDN Pers",
"Whistler Eval Pers",
"Bobcat SBS Whistler",
"BackOffice SBS Whistler"
);
@replist = (
"win3x#3.1#950#none#any",
"win9x#4.0#950#none#any",
"win9x#4.1#1998#none#any",
"win9x#4.1#1998#none#any",
"win9x#4.1#1998#none#any",
"win9x#4.9#3000#none#any",
"ntw#3.51#1057#none#any",
"ntw#4.0#1381#none#any",
"nts#4.0#1381#sbs#any",
"pro#5.0#2195#none#retail",
"pro#5.0#2195#none#oem",
"pro#5.0#2195#none#select",
"pro#5.0#2195#none#msdn",
"pro#5.0#2195#none#eval",
"srv#5.0#2195#sbs#retail",
"pro#5.1#2480#none#retail",
"pro#5.1#2480#none#oem",
"pro#5.1#2480#none#select",
"pro#5.1#2480#none#msdn",
"pro#5.1#2480#none#eval",
"per#5.1#2480#per#retail",
"per#5.1#2480#per#oem",
"per#5.1#2480#per#select",
"per#5.1#2480#per#msdn",
"per#5.1#2480#per#eval",
"srv#5.1#2480#sbs#retail",
"srv#5.1#2480#sbs#retail"
);
sub GetFromInf {
local( $filename, $section, $name, $num) = @_;
$retvalue = "";
open( INFFILE, "<".$filename) or die "can't open $filename: $!";
LINEG: while( <INFFILE>) {
chomp $_;
$line = lc $_;
if ($line =~ /^\[/)
{
$InSection = 0;
}
if ($line =~ /^\[$section/)
{
$InSection = 1;
next LINEG;
}
if (! $InSection)
{
next LINEG;
}
@linefields = split('=', $line);
# empty line
if ( $#linefields == -1) {
next LINEG;
}
$nameg = $linefields[0];
#print "nameg = " . $#linefields . $nameg . "\n";
if( length( $nameg) < 1)
{
next LINEG;
}
$nameg =~ s/ *$//g;
if ( not ($nameg =~ /$name/)) {
next LINEG;
}
@linefields2 = split(',', $linefields[1]);
$retvalue = $linefields2[$num];
# Remove spaces
$retvalue =~ s/ *$//g;
$retvalue =~ s/^ *//g;
if( length( $retvalue) > 0) {
last LINEG;
}
} # while (there is still data in this inputfile)
close( INFFILE);
return $retvalue;
}
sub insku{
local($testsku) = @_;
$count = 0;
while ($count < $listlength) {
#printf( "%s %s\n", $testsku, $skulist[$count]);
if ($testsku =~ /^$skulist[$count]$/ ) {
return $count+1;
}
$count = $count+1;
}
return 0;
}
sub myprocess {
local($inputfile) = @_;
open(OLD, "<" . $inputfile) or die "can't open inputfile: $!";
open(NEW, ">" . $inputfile."dat") or die "can't open outputfile: $!";
# $count = 0;
#while( <@skulist>) {
#$count = $count+1;
#printf( "count %d, %s\n", $count, $_);
#}
#$listlength = $count;
$count = 0;
while( $count < $listlength) {
$skulist[$count] = lc $skulist[$count];
printf( "count %d, %s\n", $count, $skulist[$count]);
$count = $count+1;
}
printf( "length = %d\n", $listlength);
LINE1: while( <OLD> ) {
chomp $_;
$line = lc $_;
if ($line =~ /^\[/)
{
(printf NEW $line."\n");
next LINE1;
}
@linefields = split('=', $line);
# empty line
if ( $#linefields == -1) {
next LINE1;
}
$sku = $linefields[0];
$error = $linefields[1];
$result = $linefields[2];
$count = insku( $sku);
if ($count) {
#(printf "%s %s=%s,%s", $sku, $replist[$count-1], $error, $result."\n");
(printf NEW "%s=%s,%s\n", $replist[$count-1], $error, $result);
}
else {
(printf "* %s=%s,%s", $sku, $error, $result."\n");
(printf NEW "* %s=%s,%s\n", $sku, $error, $result);
}
} # while (there is still data in this inputfile)
close(OLD);
close(NEW);
}
foreach $share (@ARGV) {
#print "arg is $file\n";
#@filelist = <$file>;
#@filelist = `dir /b /a-d $file`;
foreach (@ARGV) {
chomp $share;
myprocess( $share);
}
exit($ErrorCode);
}