diff -r 000000000000 -r 818e61de6cd1 crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianUtils/Environment/EnvEntryBase.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianUtils/Environment/EnvEntryBase.cs Thu Feb 11 15:50:58 2010 +0200 @@ -0,0 +1,168 @@ +/* +* Copyright (c) 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: +* +*/ +using System; +using System.Collections; +using System.IO; +using System.Text; + +namespace SymbianUtils.Environment +{ + public abstract class EnvEntryBase + { + #region Static factory function + internal static EnvEntryBase New( DriveInfo aDriveInfo ) + { + bool valid; + // + EnvEntryBase ret = new EnvEntry( aDriveInfo, out valid ); + if ( valid == false ) + { + ret = new EnvEntryNull(); + } + return ret; + } + #endregion + + #region Constructors + protected EnvEntryBase( DriveInfo aDriveInfo ) + { + iDriveInfo = aDriveInfo; + } + #endregion + + #region API + public string CombineWithFile( string aFileName ) + { + string ret = aFileName; + // + if ( iDriveInfo != null ) + { + string drive = DriveName; + + if ( aFileName.Length > 2 ) + { + bool isDrive = aFileName[ 1 ] == ':'; + if ( isDrive ) + { + // Remove drive before combining with environment drive + aFileName = aFileName.Substring( 2 ); + } + + // Strip trailing backslash from drive name if already part + // of file name prefix + if ( aFileName.StartsWith( "\\" ) && drive.EndsWith( "\\" ) ) + { + drive = drive.Substring( 0, drive.Length - 1 ); + } + } + + ret = drive + aFileName; + } + // + return ret; + } + #endregion + + #region Properties + public bool IsValid + { + get + { + bool ret = ( iDriveInfo != null ) && ( string.IsNullOrEmpty( iVersionStringSymbian ) == false ); + return ret; + } + } + + public DriveInfo DriveInfo + { + get { return iDriveInfo; } + } + + public string DriveName + { + get + { + string ret = string.Empty; + if ( iDriveInfo != null ) + { + ret = iDriveInfo.Name; + } + return ret; + } + } + + public string VolumeName + { + get + { + string ret = string.Empty; + if ( iDriveInfo != null ) + { + ret = string.Format( "[ {0} ]", iDriveInfo.VolumeLabel ); + } + return ret; + } + } + + public string VersionStringSymbian + { + get { return iVersionStringSymbian; } + protected set { iVersionStringSymbian = value; } + } + + public string VersionStringS60 + { + get { return iVersionStringS60; } + protected set { iVersionStringS60 = value; } + } + + public bool IsS60Environment + { + get { return string.IsNullOrEmpty( iVersionStringS60 ) == false; } + } + #endregion + + #region From System.Object + public override string ToString() + { + StringBuilder ret = new StringBuilder(); + ret.Append( DriveName ); + ret.Append( " " ); + ret.Append( VolumeName ); + ret.Append( " " ); + + // Try to use S60 version string if we have it... + if ( VersionStringS60.Length > 0 ) + { + ret.Append( VersionStringS60 ); + } + else + { + ret.Append( VersionStringSymbian ); + } + // + return ret.ToString(); + } + #endregion + + #region Data members + private readonly DriveInfo iDriveInfo; + private string iVersionStringSymbian = string.Empty; + private string iVersionStringS60 = string.Empty; + #endregion + } +}