Leaked source code of windows server 2003
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.
|
|
#-----------------------------------------------------------------// # Script: cklang.pm # # (c) 2000 Microsoft Corporation. All rights reserved. # # Purpose: This script validate the language/class from # the Command Argument/Parameter. # # Version: <1.00> 06/16/2000 : Suemiao Rossognol #-----------------------------------------------------------------// ###-----Set current script Name/Version.----------------//
package cklang;
$VERSION = '1.00';
###-----Require section and extern modual.---------------//
require 5.003;
use strict; use lib $ENV{ "RazzleToolPath" }; use lib $ENV{ "RazzleToolPath" }. "\\PostBuildScripts"; no strict 'vars'; no strict 'subs'; use GetParams; use ParseTable; my %hashCodes=();
###-----CkLang function.----------------------------------// sub CkLang { my ( $pLang, $pClass ) = @_;
$pClass = uc( $pClass ); $pLang = uc( $pLang );
$pLang = "USA" if( $ENV{_COVERAGE_BUILD} && $pLang eq "COV" );
###(1)Validate Language by Codes.txt file.-----------//
# scalar (%hashCodes) or print STDERR "scalar (\%hashcodes)\n";
scalar (%hashCodes) or parse_table_file($ENV{"RazzleToolPath"}."\\Codes.txt", \%hashCodes );
if ( !exists( $hashCodes{ $pLang } ) ){ return(0); }
###(2)Stop here if calss is not defined.------------//
if( !$pClass ){ return (1);}
###(3)Sort ( @fe; jpn; ~cht )->( ~cht; @fe; jpn )
@theClasses = (); &ReOrder( $pClass, \@theClasses );
###(4)Validate class.------------------------------// foreach $curClass( @theClasses ) { ###Case: ~jpn.---------------------------------// if( $curClass =~ /^\~.*$/ ) { if( $pLang ne substr( $curClass, 1, length($curClass)-1 ) ) { next; } return(0); } ###Case: jpn.----------------------------------// if( $curClass !~ /^\@.*/ ) { if( $pLang ne $curClass ) { next; } return(1); }
###-----(3)Case: @FE.--------------------------// if ( $curClass ne $hashCodes{ $pLang }->{ "Class" }) { next; } return(1); } return(0); }
#-------------------------------------------------------------// #Function ReOrder: ( @fe; jpn; ~cht )->( ~cht; @fe; jpn ) #-------------------------------------------------------------//
sub ReOrder { my( $pStr, $rClass ) = @_;
my @theClasses = split( /\;/,$pStr );
$cnt = 0; $flag=0; $k=0; foreach ( @theClasses ) { if( $_ =~ /^\~/ ) { $rClass->[$k++]= $_; $flag |= ( 1 << $cnt ); } ++$cnt; } $cnt =0; foreach ( @theClasses ) { if( ( $flag >> $cnt++) & 1){ next; } $rClass->[$k++]= $_; }
}
#--------------------------------------------------------------// #Function Usage #--------------------------------------------------------------// sub Usage { print <<USAGE;
Validates the given language and class by checking aganist the listed inforamtion in tools\codes.txt.
Usage: $0 -l lang [ -c class ]
-l Language. -c Class, with the following combination format, seperated by ;
XXX considered as language \@XX considered as class of languages ~XXX considered as excluded language. /? Displays usage
Examples: $0 -l:jpn -c:jpn ->>>> returns 0 (valid) $0 -l:jpn -c:\@fe;\@eu ->>>> returns 0 (valid) $0 -l:jpn -c:~chs;jpn;\@eu ->>>> returns 0 (valid) $0 -l:jpn -c:~jpn;\@fe ->>>> returns 1 (invalid)
USAGE exit(1); } ###-----Cmd entry point for script.-------------------------------// if (eval("\$0 =~ /" . __PACKAGE__ . "\\.pm\$/i")) {
# <run perl.exe GetParams.pm /? to get the complete usage for GetParams.pm> &GetParams ('-n', 'l:','-o', 'c:', '-p', 'lang class', @ARGV);
$rtno = &cklang::CkLang( uc($lang), uc($class) ); exit( !$rtno ); }
sub GetParams { #Call pm getparams with specified arguments &GetParams::getparams(@_);
#Call the usage if specified by /? if ($HELP) { &Usage(); } }
#-------------------------------------------------------------// =head1 NAME B<cklang> - Check Language
=head1 SYNOPSIS
perl cklang.pm -l jpn [-c jpn]
=head1 DESCRIPTION
Check language jpn with class jpn
=head1 INSTANCES
=head2 <myinstances>
<Description of myinstances>
=head1 METHODS
=head2 <mymathods>
<Description of mymathods>
=head1 SEE ALSO
package ParseTable;
=head1 AUTHOR <Suemiao Rossignol <[email protected]>>
=cut 1;
|