#!/usr/bin/perl | |
# | |
# Copyright Statement: | |
# -------------------- | |
# This software is protected by Copyright and the information contained | |
# herein is confidential. The software may not be copied and the information | |
# contained herein may not be used or disclosed except with the written | |
# permission of MediaTek Inc. (C) 2008 | |
# | |
# BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES | |
# THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") | |
# RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON | |
# AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, | |
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF | |
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. | |
# NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE | |
# SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR | |
# SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH | |
# THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO | |
# NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S | |
# SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. | |
# | |
# BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE | |
# LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, | |
# AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, | |
# OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO | |
# MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. | |
# | |
# THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE | |
# WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF | |
# LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND | |
# RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER | |
# THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). | |
# | |
# | |
# To process CustImgNamesExt and put image information to ExtractObj.ini. | |
#****************************************************************************** | |
# Subroutine: Usage | |
#****************************************************************************** | |
sub usage { | |
print "perl processCustPack.pl CustImgNamesExt ExtractObj.ini\n"; | |
exit 1; | |
} | |
$CustImgNamesExt = $ARGV[0]; | |
$NvramLidSize = $ARGV[1]; | |
$NvramTmp = $ARGV[2]; | |
$NvramCustPack = $ARGV[3]; | |
$CustomWapCustPack = $ARGV[4]; | |
$CustpackAudio = $ARGV[5]; | |
$ThemeRes = $ARGV[6]; | |
$outputdir = $ARGV[7]; | |
$CustomPack = $ARGV[8]; | |
$templateCustomPack = $ARGV[9]; | |
$database = $ARGV[10]; | |
$symfile = $ARGV[11]; | |
$InputCustomPackPath = $ARGV[12]; | |
$CustVenusTheme = $ARGV[13]; | |
$NvramCustPackCerts = $ARGV[14]; | |
$NvramCustPackJavaCerts = $ARGV[15]; | |
if (defined $ARGV[16]) { | |
$IfWapSupport = $ARGV[16]; | |
} | |
$theme_file = 0; | |
$lid_name = 0; | |
$lid_file = 0; | |
$wap_num = 0; | |
$wap_data = 0; | |
$wap_file = 0; | |
chomp($cwd = `cd`); | |
if ($cwd =~ /.*\\$/){ | |
chop($cwd); | |
} | |
#$backup = $/; | |
#undef $/; | |
#$reading=<F>; | |
#$/ = $backup; | |
#close(F); | |
# Convert to absolute path | |
#$reading =~ s/=\s+"(\S)/= "$cmd$1/g; | |
if (-e "$templateCustomPack") { | |
if($templateCustomPack =~ /(.+)\\custpack\.ini/i){ | |
$originalCustPackPath = $1; | |
} | |
system ("move /y $templateCustomPack $originalCustPackPath\\~custpack.ini"); | |
} | |
open (File,"<$originalCustPackPath\\~custpack.ini") || die "Cannot open the reference custpack file:$!\n"; | |
$backup = $/; | |
undef $/; | |
$template=<File>; | |
$/ = $backup; | |
close(File); | |
my $isLCMMI = 0; | |
if($CustImgNamesExt =~ /plutommi/i) | |
{ | |
$isLCMMI = 0; | |
} | |
elsif($CustImgNamesExt =~ /lcmmi/i) | |
{ | |
$isLCMMI = 1; | |
} | |
open (W,">$CustomPack") || die "Cannot open $CustomPack:$!\n"; | |
# [Setting] | |
print W "[Setting]\n"; | |
print W "Input_CustPack_ROM_PATH = \"$cwd\\$InputCustomPackPath\\CUSTPACK_ROM\"\n"; | |
print W "OutputBin_PATH = \"$cwd\\$outputdir\\CUSTPACK_ROM\"\n"; | |
print W "Database_PATH = \"$cwd\\$database\"\n"; | |
if (-e $database) { | |
system("copy /y $database $outputdir"); | |
} else { | |
print "Warning! $database does not exist!\n"; | |
} | |
# Get CustPackResPreamble from sym file or Execution Region CUSTPACK_ROM from lis file. | |
open (FILE,"<$symfile") || die "Cannot find SYM file:$!\n"; | |
while (<FILE>) { | |
if ($_ =~ /(.+?)\s*\w+\s*CustPackResPreamble/) { | |
$StartAddress = $1; | |
} | |
if ($_ =~ /(.+?)\s*\w+\s*LangPackResPreamble/) { | |
$LangPack_StartAddress = $1; | |
} | |
} | |
close (FILE); | |
print W "StartAddress = \"$StartAddress\"\n"; | |
print W "CUSTPACK_Version = \"0001\"\n"; | |
#print W "Input_ThirdROM_PATH = \"$cwd\\$InputCustomPackPath\\THIRD_ROM\"\n"; | |
#print W "Output_ThirdROM_PATH = \"$cwd\\$outputdir\\THIRD_ROM\"\n"; | |
#if(0 == $isLCMMI){ | |
# print W "LangPack_StartAddress = \"$LangPack_StartAddress\"\n"; | |
# print W "Input_LANG_PACK_ROM_PATH = \"$cwd\\$InputCustomPackPath\\LANG_PACK_ROM\"\n"; | |
# print W "Output_LANG_PACK_PATH = \"$cwd\\$outputdir\\LANG_PACK_ROM\"\n"; | |
#} | |
#if (-e "$cwd\\$InputCustomPackPath\\THIRD_ROM") { | |
# print W "ThirdROM_Exist = TRUE\n\n"; | |
#} else { | |
# print W "ThirdROM_Exist = FALSE\n\n"; | |
#} | |
print W ";set Disable_WAP = 1 for Low Cost MMI\n"; | |
if ($IfWapSupport == 1) { | |
print W "Disable_WAP = 0\n\n"; | |
} else { | |
print W "Disable_WAP = 1\n\n"; | |
} | |
if($CustImgNamesExt =~ /plutommi/i) | |
{ | |
print W "LCMMI = 0\n\n"; | |
} | |
elsif($CustImgNamesExt =~ /lcmmi/i) | |
{ | |
print W "LCMMI = 1\n\n"; | |
} | |
if ($template =~ /(.+)\[Image\]/isg) { | |
$template = $';#' | |
# print W $1; | |
} | |
# [Image] | |
# Process custom\app\$(strip $(BOARD_VER))\nvram_cust_pack.c to get LID and NVRAM variable names. | |
open (F,"<$CustImgNamesExt") || die "Cannot open CustImgNamesExt $CustImgNamesExt:$!\n"; | |
while(<F>) | |
{ | |
if (m/(\S+)\s+=\s+\"(\S+)\"/) | |
{ | |
$reading .= $1 . " = " . '"' . $cwd . '\\' . $2 . '"' . "\n"; | |
} | |
} | |
close(F); | |
print W "[Image]\n"; | |
print W $reading; | |
# [Font] | |
#if (0 == $isLCMMI){ | |
# my $fontReading; | |
# my $countFont = 0; | |
# open (FONTEXT,"<$CustFontNamesExt") || die "Cannot open CustFontNamesExt $CustFontNamesExt:$!\n"; | |
# while(<FONTEXT>) | |
# { | |
# if (m/(\S+)\s+=\s+\"(\S+)\"/) | |
# { | |
# $fontReading .= $1 . " = " . '"' . $cwd . '\\' . $2 . '"' . "\n"; | |
# $countFont++; | |
# } | |
# } | |
# close(F); | |
# if($countFont > 0){ | |
# print W "[Font]\n"; | |
# print W $fontReading; | |
# } | |
#} | |
# [Theme] | |
# Process plutommi\Customer\CustResource\ThemeRes.c to get MMI_theme names. | |
#open (F,"<$ThemeRes") || die "Cannot open ~ThemeRes.c $ThemeRes:$!\n"; | |
#$backup = $/; | |
#undef $/; | |
#$reading=<F>; | |
#$/ = $backup; | |
#close(F); | |
if ($ThemeRes =~ /.+\\(.+?)\.bin/ig) { | |
print "$ThemeRes\n"; | |
if (-e "$ThemeRes\\$1") { | |
print W "\n[Theme]\n"; | |
print W "THEME_FILE = \"$cwd\\$ThemeRes\\$1\"\n"; | |
} | |
elsif(-e "$ThemeRes") { | |
print W "\n[Theme]\n"; | |
print W "THEME_FILE = \"$cwd\\$ThemeRes\"\n"; | |
} | |
else{ | |
print "Skip write Theme\n"; | |
} | |
} | |
#if ($reading =~ /const MMI_theme \*mtk_MMI_themes\[.*\]\s*=\s*\{\s*(.+\s*.+\s*.+\s*.+\s*)\}/){ | |
# $mmi_theme = $1; | |
# $theme_file++; | |
# print W "THEME_FILE$theme_file = MMI_theme\n"; | |
#} elsif ($reading =~ /const theme_details_struct mtk_MMI_themes\[.*\]=\{\s*(.+?)\};/is) { | |
# $theme_details_struct = $1; | |
# $theme_file++; | |
# print W "THEME_FILE$theme_file = theme_details_struct\n"; | |
#} | |
#const theme_details_struct mtk_MMI_themes[ 3 ]={ | |
#if (defined $mmi_theme){ | |
# while ($mmi_theme =~ /.+&(.+?)[,\s]/){ | |
# $mmi_theme = $'; | |
# $theme_file++; | |
# print W "THEME_FILE$theme_file = \"$outputdir\\$1\.bin\"\n"; | |
# } | |
#} | |
#if (defined $theme_details_struct){ | |
# while ($theme_details_struct =~ /.+&(.+?)[,\s]/){ | |
# $theme_details_struct = $'; | |
# $theme_file++; | |
# print W "THEME_FILE$theme_file = \"$outputdir\\$1\.bin\"\n"; | |
# } | |
#} | |
# [AutoGenAudio] | |
open (Custpackaudio,"<$CustpackAudio") || die "Cannot open CustAdoNamesExt $CustpackAudio:$!\n"; | |
my $readingfile = ''; | |
while(<Custpackaudio>) | |
{ | |
if (m/(\S+)\s+=\s+\"(\S+)\"/) | |
{ | |
$readingfile .= $1 . " = " . '"' . $cwd . '\\' . $2 . '"' . "\n"; | |
} | |
} | |
print $cwd,"\n"; | |
close(Custpackaudio); | |
print W "[AutoGenAudio]\n"; | |
print W $readingfile; | |
#[venus theme] | |
print W "\n"; | |
if(-e $CustVenusTheme){ | |
open (CUSTVENUSTHEME,"<$CustVenusTheme") || die "Cannot open VenusTheme.ini\n"; | |
$backup = $/; | |
undef $/; | |
my $reading = <CUSTVENUSTHEME>; | |
$/ = $backup; | |
close CUSTVENUSTHEME; | |
print W $reading; | |
} | |
open (nvramtmp,"<$NvramTmp") || die "Cannot open ~nvram_tmp.c\n"; | |
$backup = $/; | |
undef $/; | |
my $reading = <nvramtmp>; | |
$orig_reading = $reading; | |
$/ = $backup; | |
close nvramtmp; | |
# [NVRAM] | |
# Process custom\app\$(strip $(BOARD_VER))\nvram_cust_pack.c to get NVRAM and LID variable names. | |
$count = 0; | |
open (NvramLidSize,"<$NvramLidSize") || die "Cannot open ~nvram_lid_size.log, please execute nvram_auto_gen first:$!\n"; | |
while (<NvramLidSize>) | |
{ | |
if (/(\d+)\s*(\d+)\s*(\w.+\w)\s*\bCUSTPACK\b/){ | |
if(!defined $nvram_name{$3}) { | |
$count++; | |
$nvram_name{$3} = $count; | |
} else { | |
next; | |
} | |
} | |
} | |
close(NvramLidSize); | |
open (nvramtmp,"<$NvramTmp") || die "Cannot open ~nvram_tmp.c\n"; | |
$backup = $/; | |
undef $/; | |
my $reading = <nvramtmp>; | |
$orig_reading = $reading; | |
$/ = $backup; | |
close nvramtmp; | |
print W "\n[NVRAM]\n"; | |
print W "\;the order of following LID_NAME and LID_FILE must be same as their appearing in nvram_cust_pack.c\n"; | |
print W "\;plz note that sometimes some of them will disappear because of different compile combinations\n"; | |
# Add LID_NAME | |
while ($reading =~ /\{\s*(NVRAM_[\w\d]+)\s*,\s*([^,]+),\s*([^,]+),\s*([^,]+),\s*[^,]+,\s*[^,]+,\s*([^,]+),[^\}]+\}\s*/) | |
{ | |
$reading =$';#' | |
my %this_app = (); | |
$this_app{APPLICATION} = $1; | |
$this_app{UNIT_SIZE} = $2; | |
$this_app{RECORD_NUM} = $3; | |
$this_app{NVRAM_VALUE} = $4; | |
$this_app{APP_NAME} = $5; | |
next unless ($this_app{APP_NAME} =~ /\"/); | |
$this_app{UNIT_SIZE} =~ s/\s//g; | |
$this_app{RECORD_NUM} =~ s/\s//g; | |
$this_app{APP_NAME} =~ s/^\"(.+)\\0\"$/$1/; | |
if (defined $nvram_name{"$this_app{APPLICATION}"}){ | |
$lid_count{$nvram_name{"$this_app{APPLICATION}"}} = $this_app{APPLICATION}; | |
} | |
} | |
for ($i=1;$i<=$count;$i++){ | |
$lid_name++; | |
print W "LID_NAME$lid_name = \"$lid_count{$i}\"\n"; | |
} | |
# Add LID_FILE | |
open (NvramCustPack,"<$NvramCustPack") || die "Cannot open ~nvram_cust_pack.c\n"; | |
$backup = $/; | |
undef $/; | |
my $reading = <NvramCustPack>; | |
$/ = $backup; | |
close NvramCustPack; | |
if ($reading =~ /const custpack_nvram_header custpack_nvram_ptr\s*=\s*\{.+?\{(.+?)\}/s) { | |
$nvram_variable = $1; | |
} | |
while($nvram_variable =~ /(\w+)[,|\s]/){ | |
$nvram_variable=$';#' | |
$lid_file++; | |
print W "LID_FILE$lid_file = \"$cwd\\$outputdir\\BIN\\$1\.bin\"\n"; | |
} | |
# Process custom\common\custom_wap_cust_pack.c to get custpack_wap_ptr variable names. | |
open (F2,"<$CustomWapCustPack") || die "Cannot open ~custom_wap_cust_pack.c $CustomWapCustPack:$!\n"; | |
$backup = $/; | |
undef $/; | |
$reading=<F2>; | |
$/ = $backup; | |
close(F2); | |
if ($reading =~ /typedef struct\s*\{([\w|\s|;|\*]+)\}\s*wap_custpack_header/) { | |
$wap_custpack_header = $1; | |
$wap_custpack_num_use = $1; | |
} | |
if ($reading =~ /const wap_custpack_header custpack_wap_ptr\s*=\s*\{([\w|\s|,|&]+)\}/) { | |
$custpack_wap_ptr = $1; | |
} | |
if (defined $ARGV[16]) { | |
print W "\n\[WAP\]\n"; | |
while($wap_custpack_num_use =~ /\s*(.+?)\s*const/){ | |
$wap_custpack_num_use = $';#' | |
$wap_num++; | |
} | |
print W "WAP DATA NUM = $wap_num\n"; | |
} | |
while($wap_custpack_header =~ /\s*(.+?)\s*const/){ | |
$wap_custpack_header = $';#' | |
$wap_data++; | |
print W "WAP_DATA$wap_data = \"$1\"\n"; | |
} | |
while($custpack_wap_ptr =~ /&(.+?)[,|\s]/){ | |
$custpack_wap_ptr = $';#' | |
$wap_file++; | |
print W "WAP_FILE$wap_file = \"$cwd\\$outputdir\\BIN\\$1.bin\"\n"; | |
} | |
if(-e $NvramCustPackCerts){ | |
$cafolder="${outputdir}\\root_ca"; | |
if(!-e $cafolder){ | |
$command="md $cafolder"; | |
system("$command"); | |
} | |
open (CERTFILEHANDL,"<$NvramCustPackCerts") || die "Cannot open ~custom_custpack_certs.c $NvramCustPackCerts:$!\n"; | |
$backup = $/; | |
undef $/; | |
$reading=<CERTFILEHANDL>; | |
$/ = $backup; | |
close(CERTFILEHANDL); | |
$reading =~ /custpack_root_ca_header_struct\s+custpack_root_ca\s+=\s*\{(.+?)\}\;/s; | |
@hotlines = split /\n/,$1; | |
$cert_file_num = 0; | |
$namelist = 1; | |
for $line(@hotlines){ | |
if($line =~ /^\s*$/){ | |
next; | |
} | |
if($line =~ /^#line/){ | |
next; | |
} | |
if($line =~ /^\s*\}\s*$/){ | |
next; | |
} | |
if($line =~ /^\s*\{\s*$/){ | |
next; | |
} | |
if($line =~ /^\s*\(*(\d+)\)*,\s*$/){ | |
$cert_file_num = $1; | |
next; | |
} | |
@sections = split /,/,$line; | |
$cert_name; | |
$cert_format; | |
$cert_domain; | |
$cert_readonly; | |
if($sections[0] =~ /^\s*\{+\s*(\S+)\s*$/){ | |
$cert_name = $1; | |
} | |
else{ | |
print "Get cert name error.\n"; | |
} | |
if($sections[2] =~ /\s*\((\d+)\)\s*/){ | |
$cert_format = $1; | |
} | |
else{ | |
print "Get format section error.\n"; | |
} | |
if($sections[3] =~ /\s*\((\d+)\)\s*/){ | |
$cert_domain = $1; | |
} | |
else{ | |
print "Get domain section error.\n"; | |
} | |
if($sections[4] =~ /\s*\((\d+)\)\s*/){ | |
$cert_readonly = $1; | |
} | |
else{ | |
print "Get readonly setion error.\n"; | |
} | |
$cert_content; | |
if($reading =~ /${cert_name}\[\] \=\s*\{(.+?)\}/s){ | |
$cert_content = $1; | |
} | |
$certs{$namelist}=[$cert_format,$cert_domain,$cert_readonly,$cert_content,$cert_name]; | |
$namelist++; | |
} | |
print W "\n\n"; | |
# Certificate | |
print W "\;Certificate\n"; | |
print W "\;The following section is an example\n"; | |
print W "\[Certificate\]\n"; | |
print W "\; File number need to match the number of files listed below\n"; | |
print W "CERT_FILE_NUM=${cert_file_num}\n\n"; | |
print W "\; Domain : 0 for manufacture (default), 1 for operator, 2 for 3rd party\n"; | |
print W "\; Format : 0 for X.509 certificate (default), 1 for WTLS\n"; | |
for (sort by_number keys %certs){ | |
print W "CERT_FILE".$_."_FORMAT = ".$certs{$_}[0]."\n"; | |
print W "CERT_FILE".$_."_DOMAIN = ".$certs{$_}[1]."\n"; | |
print W "CERT_FILE".$_."_READONLY = ".$certs{$_}[2]."\n"; | |
$cert_filename = $outputdir."\\root_ca\\".$certs{$_}[4]."\.der"; | |
open CERTFILE,">$cert_filename" or die "Can not open $cert_filename\n"; | |
binmode CERTFILE; | |
while($certs{$_}[3] =~ /(0x\S\S)/){ | |
$cerl=$1; | |
$cerl=hex $1; | |
$certs{$_}[3] =~ s/(0x\S\S)/ /; | |
print CERTFILE pack("c1", $cerl); | |
} | |
close CERTFILE; | |
print W "CERT_FILE".$_." = $cwd\\".$cert_filename."\n"; | |
} | |
} | |
else{ | |
print "not exits $NvramCustPackCerts\n"; | |
} | |
undef %certs; | |
print W "\n"; | |
if(-e $NvramCustPackJavaCerts){ | |
print "Java certs\n"; | |
$cafolder="${outputdir}\\java_ca"; | |
if(!-e $cafolder){ | |
$command="md $cafolder"; | |
system("$command"); | |
} | |
open (CERTFILEHANDL,"<$NvramCustPackJavaCerts") || die "Cannot open ~custom_custpack_java_certs.c $NvramCustPackJavaCerts:$!\n"; | |
$backup = $/; | |
undef $/; | |
$reading=<CERTFILEHANDL>; | |
$/ = $backup; | |
close(CERTFILEHANDL); | |
$reading =~ /custpack_java_root_ca_header_struct\s+custpack_java_root_ca\s+=\s*\{(.+?)\}\;/s; | |
@hotlines = split /\n/,$1; | |
$cert_file_num = 0; | |
$namelist = 1; | |
for $line(@hotlines){ | |
if($line =~ /^\s*$/){ | |
next; | |
} | |
if($line =~ /^#line/){ | |
next; | |
} | |
if($line =~ /^\s*\}\s*$/){ | |
next; | |
} | |
if($line =~ /^\s*\{\s*$/){ | |
next; | |
} | |
if($line =~ /^\s*\(*(\d+)\)*,\s*$/){ | |
$cert_file_num = $1; | |
next; | |
} | |
@sections = split /,/,$line; | |
$cert_name; | |
$cert_format; | |
$cert_domain; | |
$cert_readonly; | |
if($sections[0] =~ /^\s*\{+\s*(\S+)\s*$/){ | |
$cert_name = $1; | |
} | |
else{ | |
print "Get cert name error.\n"; | |
} | |
if($sections[2] =~ /\s*\((\d+)\)\s*/){ | |
$cert_format = $1; | |
} | |
else{ | |
print "Get format section error.\n"; | |
} | |
if($sections[3] =~ /\s*\((\d+)\)\s*/){ | |
$cert_domain = $1; | |
} | |
else{ | |
print "Get domain section error.\n"; | |
} | |
if($sections[4] =~ /\s*\((\d+)\)\s*/){ | |
$cert_readonly = $1; | |
} | |
else{ | |
print "Get readonly setion error.\n"; | |
} | |
$cert_content; | |
if($reading =~ /${cert_name}\[\] \=\s*\{(.+?)\}/s){ | |
$cert_content = $1; | |
} | |
$certs{$namelist}=[$cert_format,$cert_domain,$cert_readonly,$cert_content,${cert_name}]; | |
$namelist++; | |
} | |
print W "\[JAVA Certificate\]\n"; | |
print W "\; File number need to match the number of files listed below\n"; | |
print W "CERT_FILE_NUM=${cert_file_num}\n"; | |
print W "\; Domain : 0 for manufacture (Default), 1 for operator, 2 for 3rd party\n"; | |
for (sort by_number keys %certs){ | |
print W "CERT_FILE".$_."_FORMAT = ".$certs{$_}[0]."\n"; | |
print W "CERT_FILE".$_."_DOMAIN = ".$certs{$_}[1]."\n"; | |
print W "CERT_FILE".$_."_READONLY = ".$certs{$_}[2]."\n"; | |
$cert_filename = $outputdir."\\java_ca\\".$certs{$_}[4]."\.cer"; | |
open CERTFILE,">$cert_filename" or die "Can not open $cert_filename\n"; | |
binmode CERTFILE; | |
while($certs{$_}[3] =~ /(0x\S\S)/){ | |
$cerl=$1; | |
$cerl=hex $1; | |
$certs{$_}[3] =~ s/(0x\S\S)/ /; | |
print CERTFILE pack("c1", $cerl); | |
} | |
close CERTFILE; | |
print W "CERT_FILE".$_." = $cwd\\".$cert_filename."\n"; | |
} | |
} | |
if (!defined $ARGV[16]) { | |
if ($template =~ /(.+)\;Variable/isg) { | |
print W "\n\;Variable"; | |
} | |
} else { | |
if ($template =~ /(.+)\[Variable\]/isg) { | |
$template = $';#' | |
print W "\n\[Variable\]"; | |
print W $template; | |
} | |
} | |
close(W); | |
sub by_number { | |
if($a < $b){-1} elsif($a > $b){1} else {0}; | |
} |