charconvfw/Charconv/ongoing/Group/SNMTOOL.PL
changeset 0 1fb32624e06b
child 16 56cd22a7a1cb
equal deleted inserted replaced
-1:000000000000 0:1fb32624e06b
       
     1 #
       
     2 # Copyright (c) 1997-2000 Nokia Corporation and/or its subsidiary(-ies).
       
     3 # All rights reserved.
       
     4 # This component and the accompanying materials are made available
       
     5 # under the terms of "Eclipse Public License v1.0"
       
     6 # which accompanies this distribution, and is available
       
     7 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 #
       
     9 # Initial Contributors:
       
    10 # Nokia Corporation - initial contribution.
       
    11 #
       
    12 # Contributors:
       
    13 #
       
    14 # Description:      
       
    15 #
       
    16 
       
    17 use strict;
       
    18 use integer;
       
    19 
       
    20 BEGIN
       
    21 	{
       
    22 	my $perlScriptPath=$0;
       
    23 	$perlScriptPath=~s/\//\\/g; # replace any forward-slashes with back-slashes
       
    24 	$perlScriptPath=~s/(\\?)[^\\]+$/$1/; # get rid of this Perl-script's file-name
       
    25 	unshift(@INC, $perlScriptPath); # can't do "use lib $perlScriptPath" here as "use lib" only seems to work with *hard-coded* directory names
       
    26 	}
       
    27 use PARSER;
       
    28 use WRITER;
       
    29 
       
    30 $|=1; # ensures that any progress information sent to the screen is displayed immediately and not buffered
       
    31 if ((@ARGV==0) || ($ARGV[0]=~/\?/i) || ($ARGV[0]=~/-h/i) || ($ARGV[0]=~/\/h/i) || ($ARGV[0]=~/help/i))
       
    32 	{
       
    33 	die("\nVersion 021\n\nCharacter-set standard-names and MIB-enums tool\nCopyright (c) 2000 Symbian Ltd\n\nUsage:\n\n\tsnmtool <input-file> <output-file>\n\n");
       
    34 	}
       
    35 my $inputFileName=shift;
       
    36 my $outputFileName=shift;
       
    37 print "Generating $outputFileName...\n";
       
    38 open(INPUT_FILE, "< $inputFileName") or die("Error: could not open \"$inputFileName\" for reading\n");
       
    39 my %characerSets=();
       
    40 &readInputFile(\*INPUT_FILE, $inputFileName, \%characerSets);
       
    41 close(INPUT_FILE) or die("Error: could not close \"$inputFileName\"\n");
       
    42 open(OUTPUT_FILE, "> $outputFileName") or die("Error: could not open \"$outputFileName\" for writing\n");
       
    43 binmode OUTPUT_FILE;
       
    44 &writeOutputFile(\*OUTPUT_FILE, \%characerSets);
       
    45 close(OUTPUT_FILE) or die("Error: could not close \"$outputFileName\"\n");
       
    46 print "complete\n\n";
       
    47 
       
    48 sub readInputFile
       
    49 	{
       
    50 	my $fileHandle=shift;
       
    51 	my $fileName=shift;
       
    52 	my $characerSets=shift;
       
    53 	my $line;
       
    54 	my $strippedDownLine;
       
    55 	my $identifier="";
       
    56 	for (;;)
       
    57 		{
       
    58 		($line, $strippedDownLine)=&nextNonEmptyStrippedDownLine($fileHandle);
       
    59 		if ($strippedDownLine eq "")
       
    60 			{
       
    61 			last;
       
    62 			}
       
    63 		if ($strippedDownLine=~/^CharacterSet\s+0x([0-9a-f]+)$/i)
       
    64 			{
       
    65 			$identifier=lc($1);
       
    66 			$characerSets->{$identifier}=[[], []];
       
    67 			}
       
    68 		else
       
    69 			{
       
    70 			if ($identifier eq "")
       
    71 				{
       
    72 				close($fileHandle);
       
    73 				die("Error: unexpected line in \"$fileName\":\n    $line\n");
       
    74 				}
       
    75 			if ($strippedDownLine=~/^StandardName\s+"(.*)"$/i)
       
    76 				{
       
    77 				push @{$characerSets->{$identifier}->[0]}, $1;
       
    78 				}
       
    79 			elsif ($strippedDownLine=~/^MibEnum\s+([0-9]+)$/i)
       
    80 				{
       
    81 				push @{$characerSets->{$identifier}->[1]}, $1;
       
    82 				}
       
    83 			else
       
    84 				{
       
    85 				close($fileHandle);
       
    86 				die("Error: unexpected line in \"$fileName\":\n    $line\n");
       
    87 				}
       
    88 			}
       
    89 		}
       
    90 	}
       
    91 
       
    92 sub writeOutputFile
       
    93 	{
       
    94 	my $fileHandle=shift;
       
    95 	my $characerSets=shift;
       
    96 	&writeUids($fileHandle, 0x1000589b, 0, 0);
       
    97 	my $characerSetIdentifier;
       
    98 	my $identifier;
       
    99 	my $data;
       
   100 	while (($identifier, $data)=each(%$characerSets))
       
   101 		{
       
   102 		&write32($fileHandle, hex($identifier));
       
   103 		&writePositiveIntegerCompacted15($fileHandle, scalar(@{$data->[0]}));
       
   104 		&writePositiveIntegerCompacted15($fileHandle, scalar(@{$data->[1]}));
       
   105 		my $standardName;
       
   106 		foreach $standardName (@{$data->[0]})
       
   107 			{
       
   108 			&writePositiveIntegerCompacted15($fileHandle, length($standardName));
       
   109 			&writeString($fileHandle, $standardName);
       
   110 			}
       
   111 		my $mibEnum;
       
   112 		foreach $mibEnum (@{$data->[1]})
       
   113 			{
       
   114 			&writePositiveIntegerCompacted30($fileHandle, $mibEnum);
       
   115 			}
       
   116 		}
       
   117 	}
       
   118