| author | Tom Sutcliffe <thomas.sutcliffe@accenture.com> | 
| Thu, 28 Oct 2010 16:54:54 +0100 | |
| changeset 78 | b3ffff030d5c | 
| parent 66 | 2a78c4ff2eab | 
| permissions | -rw-r--r-- | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1 | // fzip.cpp | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 2 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 3 | // Copyright (c) 2008 - 2010 Accenture. All rights reserved. | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 4 | // This component and the accompanying materials are made available | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 5 | // under the terms of the "Eclipse Public License v1.0" | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 6 | // which accompanies this distribution, and is available | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 7 | // at the URL "http://www.eclipse.org/legal/epl-v10.html". | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 8 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 9 | // Initial Contributors: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 10 | // Accenture - Initial contribution | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 11 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 12 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 13 | #include <zipfile.h> | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 14 | #include <ezgzip.h> | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 15 | #include "fzip.h" | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 16 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 17 | _LIT(KGzExtension, ".gz"); | 
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 18 | _LIT(KZipExtension, ".zip"); | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 19 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 20 | CCommandBase* CCmdZip::NewLC() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 21 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 22 | CCmdZip* self = new (ELeave) CCmdZip(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 23 | CleanupStack::PushL(self); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 24 | self->BaseConstructL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 25 | return self; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 26 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 27 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 28 | CCmdZip::~CCmdZip() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 29 | 	{
 | 
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 30 | iFileToZip.Close(); | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 31 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 32 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 33 | CCmdZip::CCmdZip() : CCommandBase(CCommandBase::EManualComplete) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 34 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 35 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 36 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 37 | const TDesC& CCmdZip::Name() const | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 38 | 	{	
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 39 | _LIT(KName, "fzip"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 40 | return KName; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 41 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 42 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 43 | void CCmdZip::DoRunL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 44 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 45 | FsL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 46 | if (iUnzip) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 47 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 48 | if (!iOptions.IsPresent(&iUnzipPath)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 49 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 50 | iUnzipPath = Env().Pwd(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 51 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 52 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 53 | if (iVerbose) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 54 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 55 | // command-line sanity checks | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 56 | if (iFileToZip.Count() > 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 57 | 				{
 | 
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 58 | 				PrintWarning(_L("--file option is not relevant when unzipping."));
 | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 59 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 60 | if (iRecurse) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 61 | 				{
 | 
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 62 | 				PrintWarning(_L("--recurse option is not relevant when unzipping."));
 | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 63 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 64 | } | 
| 31 
d0e1c40de386
Fixed fzip's extracting of nested folders, added --logging-allocator option to leak.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
0diff
changeset | 65 | ExpandArchiveL(); | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 66 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 67 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 68 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 69 | if (iVerbose) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 70 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 71 | // command-line sanity checks | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 72 | if (iUnzipPath.Length() > 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 73 | 				{
 | 
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 74 | 				PrintWarning(_L("--directory option is not relevant when zipping."));	
 | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 75 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 76 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 77 | if (iFileToZip.Count() == 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 78 | 			{
 | 
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 79 | 			LeaveIfErr(KErrArgument, _L("Specify some files to zip up using --file option."));
 | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 80 | } | 
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 81 | 		TRAPL(CreateArchiveL(), _L("Couldn't create %S"), &iArchive);
 | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 82 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 83 | if (iVerbose) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 84 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 85 | 		Printf(_L("Done\r\n"));	
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 86 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 87 | Complete(KErrNone); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 88 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 89 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 90 | void CCmdZip::ArgumentsL(RCommandArgumentList& aArguments) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 91 | 	{
 | 
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 92 | _LIT(KArg1, "zipfile"); | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 93 | aArguments.AppendFileNameL(iArchive, KArg1); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 94 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 95 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 96 | void CCmdZip::OptionsL(RCommandOptionList& aOptions) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 97 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 98 | _LIT(KOptVerbose, "verbose"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 99 | aOptions.AppendBoolL(iVerbose, KOptVerbose); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 100 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 101 | _LIT(KOptUnzip, "unzip"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 102 | aOptions.AppendBoolL(iUnzip, KOptUnzip); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 103 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 104 | _LIT(KOptDirectory, "directory"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 105 | aOptions.AppendFileNameL(iUnzipPath, KOptDirectory); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 106 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 107 | _LIT(KOptRecurse, "recurse"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 108 | aOptions.AppendBoolL(iRecurse, KOptRecurse); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 109 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 110 | _LIT(KOptSource, "file"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 111 | aOptions.AppendFileNameL(iFileToZip, KOptSource); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 112 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 113 | _LIT(KOptCompressionType, "compression-type"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 114 | aOptions.AppendEnumL((TInt&)iCompressionType, KOptCompressionType); | 
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 115 | |
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 116 | _LIT(KOptOverwrite, "overwrite"); | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 117 | aOptions.AppendBoolL(iOverwrite, KOptOverwrite); | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 118 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 119 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 120 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 121 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 122 | // COMPRESSION FUNCTIONS | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 123 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 124 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 125 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 126 | // CCmdZip::CreateArchiveL | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 127 | // determine which zip format to use and go ahead & create the archive | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 128 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 129 | void CCmdZip::CreateArchiveL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 130 | 	{
 | 
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 131 | if (iArchive.Length() == 0) | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 132 | 		{
 | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 133 | iArchive = iFileToZip[0]; | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 134 | iArchive.Append(iCompressionType == EGZip ? KGzExtension() : KZipExtension()); | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 135 | } | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 136 | |
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 137 | if (iArchive.Exists(FsL())) | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 138 | 		{
 | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 139 | if (iOverwrite) | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 140 | 			{
 | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 141 | FsL().Delete(iArchive); | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 142 | } | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 143 | else | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 144 | 			{
 | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 145 | 			LeaveIfErr(KErrAlreadyExists, _L("File %S already exists on disk. Use --overwrite or specify a different file"), &iArchive);
 | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 146 | } | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 147 | } | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 148 | |
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 149 | if (iCompressionType == EGZip) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 150 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 151 | CreateGzArchiveL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 152 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 153 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 154 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 155 | CreateZipArchiveL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 156 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 157 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 158 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 159 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 160 | // CCmdZip::CreateGzArchiveL | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 161 | // create an archive, zipping up all the specified files | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 162 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 163 | void CCmdZip::CreateGzArchiveL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 164 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 165 | if (iRecurse) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 166 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 167 | 		LeaveIfErr(KErrArgument, _L("GNU Zip format does not support recursion"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 168 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 169 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 170 | if (iFileToZip.Count() > 1) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 171 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 172 | 		LeaveIfErr(KErrArgument, _L("GNU Zip format can only handle a single file"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 173 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 174 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 175 | if (iVerbose) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 176 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 177 | 		Printf(_L("Creating '%S'\r\n"), &iArchive);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 178 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 179 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 180 | // open the input file | 
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 181 | RFile input; | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 182 | User::LeaveIfError(input.Open(FsL(), iFileToZip[0], EFileStream | EFileRead | EFileShareAny)); | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 183 | CleanupClosePushL(input); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 184 | |
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 185 | CEZFileToGZip* zip = CEZFileToGZip::NewLC(FsL(), iArchive, input); | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 186 | while (zip->DeflateL()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 187 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 188 | // do nothing | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 189 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 190 | if (iVerbose) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 191 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 192 | 		Printf(_L("Deflating '%S'\r\n"), &iFileToZip[0]);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 193 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 194 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 195 | CleanupStack::PopAndDestroy(2); // zip, input | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 196 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 197 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 198 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 199 | // CCmdZip::CreateZipArchiveL | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 200 | // zip format archive creation | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 201 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 202 | void CCmdZip::CreateZipArchiveL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 203 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 204 | CZipItUp* zipArchive = CZipItUp::NewLC(Fs(), iArchive); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 205 | for (TInt ii = 0 ; ii < iFileToZip.Count() ; ii++) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 206 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 207 | TFileName2& fileName = iFileToZip[ii]; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 208 | fileName.SetTypeL(Fs()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 209 | AddFileL(*zipArchive, fileName); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 210 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 211 | zipArchive->CreateZipL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 212 | if (iVerbose) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 213 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 214 | 		Printf(_L("Created '%S'\r\n"), &iArchive);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 215 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 216 | CleanupStack::PopAndDestroy(); // zipArchive | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 217 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 218 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 219 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 220 | // CCmdZip::AddFileL | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 221 | // examines a file for wildcards, directories/recursion etc | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 222 | // if it finds an actual file, it'll add it to the zip archive | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 223 | // recursive function | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 224 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 225 | void CCmdZip::AddFileL(CZipItUp& aZipArchive, const TFileName2& aFile) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 226 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 227 | if (aFile.IsDir()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 228 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 229 | CDir* dir; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 230 | 		LeaveIfErr(Fs().GetDir(aFile, KEntryAttMatchMask, EDirsLast, dir), _L("Unable to read directory '%S'"), &aFile);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 231 | CleanupStack::PushL(dir); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 232 | for (TInt ii = 0 ; ii < dir->Count() ; ii++) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 233 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 234 | const TEntry& entry = (*dir)[ii]; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 235 | TFileName2* newFile = new(ELeave) TFileName2(entry.iName); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 236 | CleanupStack::PushL(newFile); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 237 | newFile->MakeAbsoluteL(aFile.DriveAndPath()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 238 | newFile->SetTypeL(Fs()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 239 | if (newFile->IsDir()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 240 | 				{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 241 | if (iRecurse) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 242 | 					{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 243 | AddFileL(aZipArchive, *newFile); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 244 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 245 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 246 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 247 | 				{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 248 | AddFileL(aZipArchive, *newFile); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 249 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 250 | CleanupStack::PopAndDestroy(newFile); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 251 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 252 | CleanupStack::PopAndDestroy(dir); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 253 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 254 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 255 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 256 | if (iVerbose) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 257 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 258 | 			Printf(_L("Adding '%S'\r\n"), &aFile);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 259 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 260 | aZipArchive.AddFileL(aFile); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 261 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 262 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 263 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 264 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 265 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 266 | // DECOMPRESSION FUNCTIONS | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 267 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 268 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 269 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 270 | // CCmdZip::ExpandArchiveL | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 271 | // determine which zip format to use and go ahead & expand the archive | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 272 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 273 | void CCmdZip::ExpandArchiveL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 274 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 275 | if (iCompressionType == EGZip) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 276 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 277 | ExpandGzArchiveL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 278 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 279 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 280 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 281 | ExpandZipArchiveL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 282 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 283 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 284 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 285 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 286 | // CCmdZip::ExpandGzArchiveL | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 287 | // unzip an existing gzip compressed file | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 288 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 289 | void CCmdZip::ExpandGzArchiveL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 290 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 291 | // open the destination file, determine where it goes | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 292 | RFile newFile; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 293 | TFileName2 dest(iUnzipPath); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 294 | if (iVerbose) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 295 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 296 | 		Printf(_L("Opening\t\t\'%S\'\r\n"), &iArchive);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 297 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 298 | if (iArchive.Ext().CompareF(KGzExtension) != 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 299 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 300 | 		LeaveIfErr(KErrArgument, _L("Compressed file must have '.gz' extension."));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 301 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 302 | dest.AppendComponentL(iArchive.Name()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 303 | TInt err = Fs().MkDirAll(dest); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 304 | if ((err != KErrNone) && (err != KErrAlreadyExists)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 305 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 306 | 		LeaveIfErr(err, _L("Couldn't create path '%S'"), &dest);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 307 | } | 
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 308 | if (iOverwrite) | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 309 | 		{
 | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 310 | err = newFile.Replace(FsL(), dest, EFileStream | EFileRead | EFileWrite | EFileShareAny); | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 311 | } | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 312 | else | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 313 | 		{
 | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 314 | err = newFile.Create(FsL(), dest, EFileStream | EFileRead | EFileWrite | EFileShareAny); | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 315 | } | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 316 | 	LeaveIfErr(err, _L("Couldn't create file %S"), &dest);
 | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 317 | CleanupClosePushL(newFile); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 318 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 319 | // inflate the compressed file | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 320 | CEZGZipToFile* zip = CEZGZipToFile::NewLC(Fs(), iArchive, newFile); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 321 | while (zip->InflateL()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 322 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 323 | // do nothing | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 324 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 325 | if (iVerbose) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 326 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 327 | 		Printf(_L("Inflating '%S'\r\n"), &dest);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 328 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 329 | CleanupStack::PopAndDestroy(2); // zip, newFile | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 330 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 331 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 332 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 333 | // CCmdZip::ExpandZipArchiveL | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 334 | // Unzip an existing archive iterating through each member file contained within the archive | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 335 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 336 | void CCmdZip::ExpandZipArchiveL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 337 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 338 | if (iVerbose) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 339 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 340 | 		Printf(_L("Opening\t\t\'%S\'\r\n"), &iArchive);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 341 | } | 
| 31 
d0e1c40de386
Fixed fzip's extracting of nested folders, added --logging-allocator option to leak.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
0diff
changeset | 342 | CZipFile* zip = NULL; | 
| 
d0e1c40de386
Fixed fzip's extracting of nested folders, added --logging-allocator option to leak.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
0diff
changeset | 343 | 	TRAPL(zip = CZipFile::NewL(Fs(), iArchive), _L("Couldn't create CZipFile for %S"), &iArchive);
 | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 344 | CleanupStack::PushL(zip); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 345 | CZipFileMemberIterator* zipIterator = zip->GetMembersL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 346 | CleanupStack::PushL(zipIterator); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 347 | CZipFileMember* zipMember = zipIterator->NextL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 348 | while (zipMember) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 349 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 350 | CleanupStack::PushL(zipMember); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 351 | ExtractZipFileL(*zip, *zipMember); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 352 | CleanupStack::PopAndDestroy(zipMember); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 353 | zipMember = zipIterator->NextL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 354 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 355 | CleanupStack::PopAndDestroy(2); // zipIterator, zip | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 356 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 357 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 358 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 359 | // CCmdZip::ExtractZipFileL | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 360 | // extracts a single file from within the zip archive | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 361 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 362 | void CCmdZip::ExtractZipFileL(CZipFile& aZip, const CZipFileMember& aMember) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 363 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 364 | // prep. the destination file. | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 365 | // note if iUnzipPath is not specified, it'll stuff the extracted file in the current directory from which fzip.exe runs | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 366 | RFile newFile; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 367 | TFileName2 dest(iUnzipPath); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 368 | dest.AppendComponentL(*aMember.Name()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 369 | TInt err = Fs().MkDirAll(dest); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 370 | if ((err != KErrNone) && (err != KErrAlreadyExists)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 371 | 		{
 | 
| 31 
d0e1c40de386
Fixed fzip's extracting of nested folders, added --logging-allocator option to leak.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
0diff
changeset | 372 | 		LeaveIfErr(err, _L("Couldn't create directory for file %S"), &dest);
 | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 373 | } | 
| 31 
d0e1c40de386
Fixed fzip's extracting of nested folders, added --logging-allocator option to leak.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
0diff
changeset | 374 | 	if (aMember.Name()->Right(1) == _L("\\")) return; // It's a directory entry, nothing more to be done
 | 
| 
d0e1c40de386
Fixed fzip's extracting of nested folders, added --logging-allocator option to leak.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
0diff
changeset | 375 | |
| 
d0e1c40de386
Fixed fzip's extracting of nested folders, added --logging-allocator option to leak.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
0diff
changeset | 376 | // prep. the stream | 
| 78 
b3ffff030d5c
Pulled in from FCL: input, base64, fshell thread pool
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
66diff
changeset | 377 | RZipFileMemberReaderStream* readStream = NULL; | 
| 
b3ffff030d5c
Pulled in from FCL: input, base64, fshell thread pool
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
66diff
changeset | 378 | err = aZip.GetInputStreamL(&aMember, readStream); | 
| 
b3ffff030d5c
Pulled in from FCL: input, base64, fshell thread pool
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
66diff
changeset | 379 | if (err == CZipFile::KCompressionMethodNotSupported) | 
| 
b3ffff030d5c
Pulled in from FCL: input, base64, fshell thread pool
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
66diff
changeset | 380 | 		{
 | 
| 
b3ffff030d5c
Pulled in from FCL: input, base64, fshell thread pool
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
66diff
changeset | 381 | 		LeaveIfErr(KErrNotSupported, _L("Zip compression method not supported"));
 | 
| 
b3ffff030d5c
Pulled in from FCL: input, base64, fshell thread pool
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
66diff
changeset | 382 | } | 
| 
b3ffff030d5c
Pulled in from FCL: input, base64, fshell thread pool
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
66diff
changeset | 383 | else | 
| 
b3ffff030d5c
Pulled in from FCL: input, base64, fshell thread pool
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
66diff
changeset | 384 | 		{
 | 
| 
b3ffff030d5c
Pulled in from FCL: input, base64, fshell thread pool
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
66diff
changeset | 385 | 		LeaveIfErr(err, _L("Unable to get input stream"));
 | 
| 
b3ffff030d5c
Pulled in from FCL: input, base64, fshell thread pool
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
66diff
changeset | 386 | } | 
| 31 
d0e1c40de386
Fixed fzip's extracting of nested folders, added --logging-allocator option to leak.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
0diff
changeset | 387 | CleanupStack::PushL(readStream); | 
| 
d0e1c40de386
Fixed fzip's extracting of nested folders, added --logging-allocator option to leak.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
0diff
changeset | 388 | |
| 66 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 389 | if (iOverwrite) | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 390 | 		{
 | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 391 | err = newFile.Replace(Fs(), dest, EFileShareExclusive); | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 392 | } | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 393 | else | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 394 | 		{
 | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 395 | err = newFile.Create(Fs(), dest, EFileShareExclusive); | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 396 | } | 
| 
2a78c4ff2eab
Migrated ciftest and various fixes from FCL to MCL.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
31diff
changeset | 397 | 	LeaveIfErr(err, _L("Couldn't create file %S"), &dest);
 | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 398 | CleanupClosePushL(newFile); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 399 | if (iVerbose) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 400 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 401 | 		Printf(_L("Inflating '%S'\r\n\tcrc: 0x%x\r\n\tcompressed size: %d\r\n\tuncompressed size: %d\r\n"), &dest, aMember.CRC32(), aMember.CompressedSize(), aMember.UncompressedSize());
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 402 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 403 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 404 | // stream from the zip archive member into the destination file | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 405 | TInt bytesRead = 0; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 406 | TInt length = KDefaultZipBufferLength; // 32Kb | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 407 | if (aMember.UncompressedSize() < KDefaultZipBufferLength) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 408 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 409 | length = aMember.UncompressedSize(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 410 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 411 | HBufC8* data = HBufC8::NewLC(length); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 412 | TPtr8 ptr = data->Des(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 413 | do | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 414 | 		{
 | 
| 31 
d0e1c40de386
Fixed fzip's extracting of nested folders, added --logging-allocator option to leak.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
0diff
changeset | 415 | 		LeaveIfErr(readStream->Read(ptr, length), _L("Error reading from zip stream"));
 | 
| 
d0e1c40de386
Fixed fzip's extracting of nested folders, added --logging-allocator option to leak.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: 
0diff
changeset | 416 | 		LeaveIfErr(newFile.Write(ptr), _L("Error writing to file %S"), &dest);
 | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 417 | bytesRead += length; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 418 | if ((aMember.UncompressedSize() - bytesRead) < KDefaultZipBufferLength) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 419 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 420 | length = aMember.UncompressedSize() - bytesRead; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 421 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 422 | } while (length > 0); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 423 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 424 | // cleanup | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 425 | CleanupStack::PopAndDestroy(3); // data, newfile, readstream | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 426 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 427 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 428 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 429 | EXE_BOILER_PLATE(CCmdZip) |