#!perl
# Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
# All rights reserved.
# This component and the accompanying materials are made available
# under the terms of the License "Eclipse Public License v1.0"
# which accompanies this distribution, and is available
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
#
# Initial Contributors:
# Nokia Corporation - initial contribution.
#
# Contributors:
#
# Description:
#
#
use strict;
use FindBin;
use lib "$FindBin::Bin";
use Getopt::Long;
use IniData;
use EnvDb;
use CommandController;
#
# Globals.
#
my $verbose = 0;
my $iniData = IniData->New();
my $commandController = CommandController->New($iniData, 'BinInfo');
my $envDb;
#
# Main.
#
ProcessCommandLine();
#
# Subs.
#
sub ProcessCommandLine {
Getopt::Long::Configure ("bundling");
my $help;
GetOptions('h' => \$help, 'v+' => \$verbose);
if ($help) {
Usage(0);
}
unless (scalar (@ARGV) == 1) {
print "Error: Invalid arguments\n";
Usage(1);
}
$envDb = EnvDb->Open($iniData, $verbose);
if ($ARGV[0] =~ /[\*\?]/) {
my $glob = shift @ARGV;
foreach my $entry (@{Utils::ReadGlob($glob)}) {
Utils::AbsoluteFileName(\$entry);
print "\nFile: $entry\n";
BinInfo($entry);
}
}
elsif (-f $ARGV[0]) {
my $binary = shift @ARGV;
Utils::AbsoluteFileName(\$binary);
BinInfo($binary);
}
else {
my $comp = shift @ARGV;
ListBins($comp);
}
}
sub Usage {
my $exitCode = shift;
Utils::PrintDeathMessage($exitCode, "\nUsage: bininfo [options] <binary_file> | <component>
options:
-h help
-v verbose output (-vv very verbose)\n");
}
sub BinInfo {
my $binary = shift;
my $info = $envDb->BinaryInfo($binary);
$iniData->TableFormatter->PrintTable($info);
}
sub ListBins {
my $comp = shift;
unless ($envDb->Version($comp)) {
print "Error: \"$comp\" is not a file and is not a component that is currently installed\n";
Usage(1);
}
my $info = $envDb->ListBins($comp);
$iniData->TableFormatter->PrintTable($info, 1);
}
__END__
=head1 NAME
BinInfo - Displays information about a currently installed binary file.
=head1 SYNOPSIS
bininfo [options] <binary_file> | <component>
options:
-h help
-v verbose output (-vv very verbose)
=head1 DESCRIPTION
If given a file name, prints the name of the component that owns the binary, the currently installed version and its status. For example:
D:\>bininfo \epoc32\release\wins\udeb\brdcst.dll
Component: brdcst
Version: 001
Status: pending release
If given a component name, displays a list of all the binary files owned by that component and their status. For example:
D:\>bininfo brdcst
File Status
\EPOC32\INCLUDE\brdcst.h clean
\EPOC32\RELEASE\THUMB\UREL\BRDCST.DLL clean
\EPOC32\RELEASE\THUMB\UREL\BRDCST.DLL.MAP clean
\EPOC32\RELEASE\THUMB\UREL\BRDCST.LIB clean
\EPOC32\RELEASE\THUMB\UREL\BRDSRV.EXE clean
\EPOC32\RELEASE\THUMB\UREL\BRDSRV.EXE.MAP clean
\EPOC32\RELEASE\THUMB\UREL\BRDSRV.LIB clean
\EPOC32\RELEASE\WINS\UDEB\BRDCST.DLL clean
\EPOC32\RELEASE\WINS\UDEB\BRDCST.LIB clean
\EPOC32\RELEASE\WINS\UDEB\BRDCST.PDB clean
\EPOC32\RELEASE\WINS\UDEB\BRDSRV.LIB clean
\EPOC32\RELEASE\WINS\UDEB\Z\SYSTEM\PROGRAMS\BRDSRV.DLL clean
\EPOC32\RELEASE\WINS\UDEB\Z\SYSTEM\PROGRAMS\BRDSRV.PDB clean
\EPOC32\rom\include\brdcst.iby clean
=head1 KNOWN BUGS
None.
=head1 COPYRIGHT
Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved.
This component and the accompanying materials are made available
under the terms of the License "Eclipse Public License v1.0"
which accompanies this distribution, and is available
at the URL "http://www.eclipse.org/legal/epl-v10.html".
Initial Contributors:
Nokia Corporation - initial contribution.
Contributors:
Description:
=cut