--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/imglib/filesystem/source/filesysteminterface.cpp Tue Oct 27 16:36:35 2009 +0000
@@ -0,0 +1,125 @@
+/*
+* Copyright (c) 2006-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:
+* This class provides the interface to external tools which can
+* use FileSystem component library. Upon external request this class
+* classifies the request type either FAT16 or FAT32 and invokes
+* the specific functions to generate the FAT image.
+* @internalComponent
+* @released
+*
+*/
+
+#include"errorhandler.h"
+#include"filesysteminterface.h"
+#include"fat16filesystem.h"
+#include"fat32filesystem.h"
+#include"dirregion.h"
+
+
+//static member definition
+
+Ofstream CFileSystemInterFace::iOutputStream;
+
+/**
+API exposed by the FileSystem component to be used by an external component(s).
+This is method to be used by the external component for passing information required
+by the FileSystem component
+
+@internalComponent
+@released
+
+@param aNodeList Directory structure
+@param aFileSystem file system type
+@param aImageFileName image file name
+@param aLogFileName log file name
+@param aPartitionSize partition size in bytes
+*/
+FILESYSTEM_API int CFileSystemInterFace::CreateFilesystem(EntryList* aNodeList ,
+ TFileSystem aFileSystem,
+ char* aImageFileName,
+ char* aLogFileName,
+ ConfigurableFatAttributes* aConfigurableFatAttributes,
+ Long64 aPartitionSize)
+{
+
+
+ CFileSystem* iFileSystem = NULL;
+ try
+ {
+ MessageHandler::StartLogging (aLogFileName);
+ iOutputStream.open(aImageFileName,ios::out|ios::binary);
+ if(iOutputStream.fail() == true )
+ {
+ throw ErrorHandler(FILEOPENERROR,aImageFileName,__FILE__, __LINE__);
+ }
+ switch(aFileSystem)
+ {
+ case EFAT16:
+ iFileSystem = new CFat16FileSystem;
+ break;
+
+ case EFAT32:
+ iFileSystem= new CFat32FileSystem;
+ break;
+ default:
+ return EFSNotSupported;
+ break;
+
+ }
+ iFileSystem->Execute(aPartitionSize,*aNodeList,iOutputStream,aConfigurableFatAttributes);
+ delete iFileSystem;
+ iFileSystem = NULL;
+ iOutputStream.close();
+ MessageHandler::CleanUp();
+ }
+ catch(ErrorHandler &error)
+ {
+ iOutputStream.close();
+ delete iFileSystem;
+ iFileSystem = NULL;
+ MessageHandler::StartLogging (aLogFileName);
+ error.Report();
+ MessageHandler::CleanUp();
+ return EFileSystemError;
+ }
+ /**
+ Irrespective of successful or unsuccessful data drive image generation ROFSBUILD
+ may try to generate images for successive oby file input.
+ During this course unhandled exceptions may cause leaving some memory on heap
+ unused. so the unhandled exceptions handling is used to free the memory allocated
+ on heap.
+ */
+ catch(...)
+ {
+ iOutputStream.close();
+ delete iFileSystem;
+ iFileSystem = NULL;
+ return EFileSystemError;
+ }
+ return 0;
+}
+
+
+/**
+Constructor of Class ConfigurableFatAttributes
+
+@internalComponent
+@released
+*/
+ConfigurableFatAttributes::ConfigurableFatAttributes()
+{
+ iDriveSectorSize = 0;
+ iDriveNoOfFATs = 0;
+}