diff -r 000000000000 -r 08ec8eefde2f featuremgmt/featuremgr/tools/datfilehelpers/ModifyFeatContent.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/featuremgmt/featuremgr/tools/datfilehelpers/ModifyFeatContent.pl Fri Jan 22 11:06:30 2010 +0200 @@ -0,0 +1,80 @@ +#!perl -w +# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "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: +# This simple script shows how to modify the content of a feature manager +# data file. +# +# + +use strict; +use FMCreate; + +# +# Hardwire the datafile - this is only an example. +# +my $datfile = "features.dat"; +my $datfile2 = "features2.dat"; +my $datfile3 = "features3.dat"; + +# +# Create an object that represents a feature data file. +# +my $fmc = FMCreate->new(); + +# +# Load the content of the data file into our FMCreate object. +# Note that this will die if the content does not seem to be a feature set +# file. This can happen if the first four bytes aren't 'feat' or if reading +# the file fails at any point. This will also happen if the file is the wrong +# size. +# +$fmc->LoadUp($datfile) or die "Failed to load up data from '$datfile'\n"; + +# +# Get feature flag '0x10000009' +# +my $ffuid = 0x10000009; +my $ff = $fmc->GetFeatureFlagByUID($ffuid); +if(ref($ff) ne "FeatureFlag") +{ + printf "Couldn't get feature flag uid 0x%0x from file $datfile\n"; + die "no feature flag"; +} + +# +# Change the feature flag.. Note that the feature flag object '$ff' is a +# reference to the feature flag in '$fmc' - it's still in there, so when +# we modify it here it will affect what '$fmc' will write. +# +$ff->BlackListed(1); +$fmc->WriteToFile($datfile2) or die "Couldn't write feature data file '$datfile2'\n"; + +# +# Now add a new feature. The three arguments are UID, status flags (not defined +# here) and user data word. +# +my $newfeat = FeatureFlag->new(0x12345678, undef, 0xabcd); +die "Couldn't create new feature flag object.\n" unless(ref($newfeat)); + +# +# Add it to our existing feature data. +# +$fmc->AddFeatureFlag($newfeat) or die "Couldn't add new feature flag..\n"; + +# +# Remove the original feature flag. +# +$fmc->RemoveFeatureFlagByUID($ffuid) or die "Couldn't remove feature flag\n"; + +$fmc->WriteToFile($datfile3);