--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/zeroconf/zeroconfsharing/cfileparser.cpp Wed Jul 21 14:28:48 2010 +0530
@@ -0,0 +1,203 @@
+/*
+* Copyright (c) 2001-2008 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:
+*
+*/
+
+#include "cfileparser.h"
+
+#include <S32FILE.H>
+#include <VERSIT.H>
+
+
+CFileParser::CFileParser()
+ {
+
+ }
+
+CFileParser::~CFileParser()
+ {
+ iFileServ.Close();
+
+ }
+
+CFileParser* CFileParser::NewLC()
+ {
+ CFileParser* self = new (ELeave) CFileParser();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+CFileParser* CFileParser::NewL()
+ {
+ CFileParser* self = CFileParser::NewLC();
+ CleanupStack::Pop(); // self;
+ return self;
+ }
+
+void CFileParser::ConstructL()
+ {
+ iFileServ.Connect();
+ iStart = false;
+ SetMediaType(CFileParser::ENone); //no specific folder
+
+ }
+
+void CFileParser::SetMediaType(TMediaType aType)
+ {
+ iCurMediaType = aType;
+ }
+
+CFileParser::TMediaType CFileParser::GetMediaType()
+ {
+ return iCurMediaType;
+ }
+
+/*
+ * aFileName - is the file to be parsed
+ * this contain the text in the form
+ * [photos]
+ * --
+ * --
+ * [/photos]
+ * [music]
+ * --
+ * --[/music]
+ * [videos]
+ * ---
+ * --
+ * [/videos]
+ * ParseFile function takes such a file & parses the sections
+ * and writes the photo filename to aPhotoFile,
+ * music file names to aMusicFile &
+ * video file names to aVideoFile
+ *
+ */
+
+
+void CFileParser::ParseFile( const TDesC& aFileName,const TDesC& aPhotoFile,const TDesC& aMusicFile,const TDesC& aVideoFile )
+ {
+ TFileText lineReader;
+ TFileName name;
+ RBuf8 fileName;
+ RFile photoFile, musicFile, videoFile;
+
+ //declare the start & end tags
+ _LIT(KPhotoStart,"[photos]");
+ _LIT(KMusicStart,"[music]");
+ _LIT(KVideoStart,"[videos]");
+ _LIT(KPhotoEnd,"[/photos]");
+ _LIT(KMusicEnd,"[/music]");
+ _LIT(KVideoEnd,"[/videos]");
+
+ _LIT(KStartTag,"[%s]");
+ _LIT(KEndTag,"[/%s]");
+
+ TBuf<KMaxFileName> buf;
+ name.Copy(aFileName);
+ RFileReadStream readStream;
+ readStream.PushL();
+
+ User::LeaveIfError(readStream.Open(iFileServ, name, EFileRead));
+ CLineReader* myReader = CLineReader::NewL(readStream);
+ TInt aPos = 0;
+ TInt aErr = 0;
+
+ photoFile.Replace(iFileServ,aPhotoFile,EFileWrite);
+ musicFile.Replace(iFileServ,aMusicFile,EFileWrite);
+ videoFile.Replace(iFileServ,aVideoFile,EFileWrite);
+
+ while(aErr!=KErrEof)
+ {
+ myReader->ReadLineL(aPos, aErr);
+ // Do your parsing here ..
+ fileName.CreateL(KMaxFileName);
+ buf.Copy(myReader->iBufPtr);
+ //compare buf with the start & end tags
+ //if it is the start or end tag, dont write to the file
+ if( buf.Compare(KPhotoStart)== 0){ //photo tag start
+ SetMediaType(CFileParser::EPhotos);
+ iStart = true;
+ }
+ else if( buf.Compare(KPhotoEnd)== 0){ //photo tag end
+ SetMediaType(CFileParser::ENone);
+ }
+ else if( buf.Compare(KMusicStart)== 0 ){ //music tag start
+ SetMediaType(CFileParser::EMusic);
+ iStart = true;
+ }
+ else if( buf.Compare(KMusicEnd)== 0){
+ SetMediaType(CFileParser::ENone); //music tag end
+ }
+ else if( buf.Compare(KVideoStart)== 0 ){
+ SetMediaType(CFileParser::EVideos);
+ iStart = true;//video tag start
+ }
+ else if( buf.Compare(KVideoEnd)== 0 ){
+ SetMediaType(CFileParser::ENone); //video tag end
+ }
+ else
+ {
+ fileName.Copy(buf);
+ switch( GetMediaType() )
+ {
+ case EPhotos:
+ {
+ if(!iStart){
+ photoFile.Write(_L8("\n"));
+ }
+ else {
+ iStart = false;
+ }
+ photoFile.Write(fileName);
+ }
+ break;
+ case EMusic:
+ {
+ if(!iStart){
+ musicFile.Write(_L8("\n"));
+ }
+ else {
+ iStart = false;
+ }
+ musicFile.Write(fileName);
+ }
+ break;
+ case EVideos:
+ {
+ if(!iStart){
+ videoFile.Write(_L8("\n"));
+ }
+ else {
+ iStart = false;
+ }
+ videoFile.Write(fileName);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ }
+ //close all file handles
+ photoFile.Close();
+ musicFile.Close();
+ videoFile.Close();
+ //close the filename rbuf
+ fileName.Close();
+ CleanupStack::PopAndDestroy();
+ delete myReader;
+ }