summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2005-10-26 18:50:08 +0300
committerH.Merijn Brand <h.m.brand@xs4all.nl>2005-10-26 12:37:47 +0000
commitc7a4d1c0391ba3d9736e90c66ae273d85847f9b0 (patch)
tree041acf92013ca87779ddc321763721535e45ad58
parent65ff66fc0a6ee149618151ba533f4aac04969309 (diff)
downloadperl-c7a4d1c0391ba3d9736e90c66ae273d85847f9b0.tar.gz
Symbian: better Series 80 support
Message-ID: <B356D8F434D20B40A8CEDAEC305A1F24E7A6AA@esebe105.NOE.Nokia.com> p4raw-id: //depot/perl@25856
-rw-r--r--MANIFEST1
-rw-r--r--symbian/PerlApp.cpp187
-rw-r--r--symbian/PerlApp.h66
-rw-r--r--symbian/PerlAppS80.rss19
-rw-r--r--symbian/config.pl24
-rw-r--r--symbian/hexdump.pl41
-rw-r--r--symbian/makesis.pl6
-rw-r--r--symbian/sisify.pl6
8 files changed, 245 insertions, 105 deletions
diff --git a/MANIFEST b/MANIFEST
index 1c279af9ee..95c06fd247 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -2644,6 +2644,7 @@ symbian/config.sh Configuration data for Symbian
symbian/cwd.pl Helper code for config.pl
symbian/demo_pl "Archive" of demo code
symbian/find_writeable_data.pl Development utility
+symbian/hexdump.pl Helper for sisify.pl updating
symbian/install.cfg Installation instructions
symbian/makesis.pl Installation file creator
symbian/PerlAppAif.rss Symbian sample app code
diff --git a/symbian/PerlApp.cpp b/symbian/PerlApp.cpp
index f5fa29ee07..819f13f4cc 100644
--- a/symbian/PerlApp.cpp
+++ b/symbian/PerlApp.cpp
@@ -19,6 +19,9 @@
# include <eikon.hrh>
# include <cknflash.h>
# include <ckndgopn.h>
+# include <ckndgfob.h>
+# include <eiklabel.h>
+# include <cknconf.h>
#endif /* #ifdef __SERIES80__ */
#include <apparc.h>
@@ -32,21 +35,25 @@
#include <coemain.h>
-#ifndef PerlMin
+#ifndef PerlAppMinimal
#include "PerlApp.hrh"
#include "PerlApp.rsg"
-#endif //#ifndef PerlMin
+#ifdef __SERIES80__
+#include "Eikon.rsg"
+#endif /* #ifdef __SERIES80__ */
+
+#endif //#ifndef PerlAppMinimal
#include "EXTERN.h"
#include "perl.h"
#include "PerlBase.h"
const TUid KPerlAppUid = {
-#ifdef PerlMinUid
- PerlMinUid
+#ifdef PerlAppMinimalUid
+ PerlAppMinimalUid
#else
0x102015F6
#endif
@@ -61,13 +68,13 @@ _LIT(KDefaultScript, "default.pl");
# define _LIT_NO_L(n, s) static const TLitC<sizeof(s)/2> n={sizeof(s)/2-1,s}
#endif // #ifndef _LIT_NO_L
-#ifdef PerlMinName
-_LIT_NO_L(KAppName, PerlMinName);
+#ifdef PerlAppMinimalName
+_LIT_NO_L(KAppName, PerlAppMinimalName);
#else
_LIT(KAppName, "PerlApp");
#endif
-#ifndef PerlMin
+#ifndef PerlAppMinimal
_LIT_NO_L(KFlavor, PERL_SYMBIANSDK_FLAVOR);
_LIT(KAboutFormat,
@@ -83,7 +90,7 @@ typedef TBuf<256> TMessageBuffer;
typedef TBuf8<256> TPeekBuffer;
typedef TBuf8<256> TFileName8;
-#endif // #ifndef PerlMin
+#endif // #ifndef PerlAppMinimal
// Usage: DEBUG_PRINTF((_L("%S"), &aStr))
#if 1
@@ -131,7 +138,7 @@ CPerlAppUi::~CPerlAppUi()
iDoorObserver->NotifyExit(MApaEmbeddedDocObserver::EEmpty);
}
-#ifndef PerlMin
+#ifndef PerlAppMinimal
#ifdef __SERIES60__
@@ -152,9 +159,7 @@ static TBool OkCancelDialogL(TDesC& aMessage)
return DlgOk(dlg);
#endif /* #ifdef __SERIES60__ */
#ifdef __SERIES80__
- return CCknFlashingDialog::RunDlgLD(_L("OK/Cancel"), aMessage, NULL,
- CCknFlashingDialog::EShort,
- NULL);
+ return CCknConfirmationDialog::RunDlgWithDefaultIconLD(aMessage, R_EIK_BUTTONS_CANCEL_OK);
#endif /* #ifdef __SERIES80__ */
}
@@ -168,35 +173,18 @@ static TBool YesNoDialogL(TDesC& aMessage)
return DlgOk(dlg);
#endif /* #ifdef __SERIES60__ */
#ifdef __SERIES80__
- return CCknFlashingDialog::RunDlgLD(_L("Yes/No"), aMessage, NULL,
- CCknFlashingDialog::EShort,
- NULL);
+ return CCknConfirmationDialog::RunDlgWithDefaultIconLD(aMessage, R_EIK_BUTTONS_NO_YES);
#endif /* #ifdef __SERIES80__ */
}
-static TInt InformationNoteL(TDesC& aMessage)
+static void InformationNoteL(TDesC& aMessage)
{
#ifdef __SERIES60__
CAknInformationNote* note = new (ELeave) CAknInformationNote;
- return note->ExecuteLD(aMessage);
+ note->ExecuteLD(aMessage);
#endif /* #ifdef __SERIES60__ */
#ifdef __SERIES80__
- return CCknFlashingDialog::RunDlgLD(_L("Info"), aMessage, NULL,
- CCknFlashingDialog::ENormal,
- NULL);
-#endif /* #ifdef __SERIES80__ */
-}
-
-static TInt ConfirmationNoteL(TDesC& aMessage)
-{
-#ifdef __SERIES60__
- CAknConfirmationNote* note = new (ELeave) CAknConfirmationNote;
- return note->ExecuteLD(aMessage);
-#endif /* #ifdef __SERIES60__ */
-#ifdef __SERIES80__
- return CCknFlashingDialog::RunDlgLD(_L("Confirmation"), aMessage, NULL,
- CCknFlashingDialog::ENormal,
- NULL);
+ CEikonEnv::Static()->InfoMsg(aMessage);
#endif /* #ifdef __SERIES80__ */
}
@@ -212,7 +200,32 @@ static TInt WarningNoteL(TDesC& aMessage)
#endif /* #ifdef __SERIES80__ */
}
-static TInt TextQueryDialogL(const TDesC& aPrompt, TDes& aData, const TInt aMaxLength)
+#ifdef __SERIES80__
+
+CPerlAppTextQueryDialog::CPerlAppTextQueryDialog(HBufC*& aBuffer) :
+ iData(aBuffer)
+{
+}
+
+TBool CPerlAppTextQueryDialog::OkToExitL(TInt /* aKeycode */)
+{
+ iData = static_cast<CEikEdwin*>(Control(EPerlAppTextQueryInputField))->GetTextInHBufL();
+ return ETrue;
+}
+
+void CPerlAppTextQueryDialog::PreLayoutDynInitL()
+{
+ SetTitleL(iTitle);
+ CEikLabel* promptLabel = ControlCaption(EPerlAppTextQueryInputField);
+ promptLabel->SetTextL(iPrompt);
+}
+
+/* TODO: OfferKeyEventL() so that newline can be seen as 'OK'.
+ * Or a hotkey for the button? */
+
+#endif /* #ifdef __SERIES80__ */
+
+static TInt TextQueryDialogL(const TDesC& aTitle, const TDesC& aPrompt, TDes& aData, const TInt aMaxLength)
{
#ifdef __SERIES60__
CAknTextQueryDialog* dlg =
@@ -222,9 +235,42 @@ static TInt TextQueryDialogL(const TDesC& aPrompt, TDes& aData, const TInt aMaxL
return dlg->ExecuteLD(R_TEXT_QUERY_DIALOG);
#endif /* #ifdef __SERIES60__ */
#ifdef __SERIES80__
- /* TODO */
- return ETrue;
-#endif
+ HBufC* data = NULL;
+ CPerlAppTextQueryDialog* dlg =
+ new (ELeave) CPerlAppTextQueryDialog(data);
+ dlg->iTitle.Set(aTitle);
+ dlg->iPrompt.Set(aPrompt);
+ dlg->iMaxLength = aMaxLength;
+ if (dlg->ExecuteLD(R_PERL_ONELINER_DIALOG)) {
+ aData.Copy(*data);
+ return ETrue;
+ }
+ return EFalse;
+#endif /* #ifdef __SERIES80__ */
+}
+
+static TBool FileQueryDialogL(TDes& aFilename)
+{
+#ifdef __SERIES60__
+ return AknCommonDialogs::RunSelectLD(aFilename,
+ R_MEMORY_SELECTION_DIALOG);
+#endif /* #ifdef __SERIES60__ */
+#ifdef __SERIES80__
+ if (CCknOpenFileDialog::RunDlgLD(aFilename,
+ CCknFileListDialogBase::EShowAllDrives
+ |CCknFileListDialogBase::EShowSystemFilesAndFolders
+ |CCknFileListDialogBase::EShowBothFilesAndFolders
+ )) {
+ TEntry aEntry; // Be paranoid and check that the file is there.
+ RFs aFs;
+ aFs.Connect();
+ if (aFs.Entry(aFilename, aEntry) == KErrNone)
+ return ETrue;
+ else
+ CEikonEnv::Static()->InfoMsg(_L("File not found"));
+ }
+ return EFalse;
+#endif /* #ifdef __SERIES80__ */
}
// The isXXX() come from the Perl headers.
@@ -280,7 +326,7 @@ static void CopyFromInboxL(RFs aFs, const TFileName& aSrc, const TFileName& aDst
TInt err = BaflUtils::CopyFile(aFs, aSrc, aDst);
if (err == KErrNone) {
message.Format(_L("Installed %S"), &aDst);
- ConfirmationNoteL(message);
+ InformationNoteL(message);
}
else {
message.Format(_L("Failure %d installing %S"), err, &aDst);
@@ -408,7 +454,6 @@ static TBool RunStuffL(const TFileName& aScriptName, TPeekBuffer aPeekBuffer)
message.Format(_L("Run %S?"), &aScriptName);
if (YesNoDialogL(message))
DoRunScriptL(aScriptName);
-
return ETrue;
}
@@ -458,23 +503,23 @@ void CPerlAppUi::InstallOrRunL(const TFileName& aFileName)
Exit();
}
-#endif // #ifndef PerlMin
+#endif // #ifndef PerlAppMinimal
static void DoRunScriptL(TFileName aScriptName)
{
CPerlBase* perl = CPerlBase::NewInterpreterLC();
TRAPD(error, perl->RunScriptL(aScriptName));
-#ifndef PerlMin
+#ifndef PerlAppMinimal
if (error != KErrNone) {
TMessageBuffer message;
message.Format(_L("Error %d"), error);
YesNoDialogL(message);
}
-#endif // #ifndef PerlMin
+#endif // #ifndef PerlAppMinimal
CleanupStack::PopAndDestroy(perl);
}
-#ifndef PerlMin
+#ifndef PerlAppMinimal
void CPerlAppUi::OpenFileL(const TDesC& aFileName)
{
@@ -482,7 +527,7 @@ void CPerlAppUi::OpenFileL(const TDesC& aFileName)
return;
}
-#endif // #ifndef PerlMin
+#endif // #ifndef PerlAppMinimal
TBool CPerlAppUi::ProcessCommandParametersL(TApaCommand aCommand, TFileName& /* aDocumentName */, const TDesC8& /* aTail */)
{
@@ -501,23 +546,23 @@ TBool CPerlAppUi::ProcessCommandParametersL(TApaCommand aCommand, TFileName& /*
return aCommand == EApaCommandOpen ? ETrue : EFalse;
}
-#ifndef PerlMin
+#ifndef PerlAppMinimal
void CPerlAppUi::SetFs(const RFs& aFs)
{
iFs = (RFs*) &aFs;
}
-#endif // #ifndef PerlMin
+#endif // #ifndef PerlAppMinimal
static void DoHandleCommandL(TInt aCommand) {
-#ifndef PerlMin
+#ifndef PerlAppMinimal
TMessageBuffer message;
-#endif // #ifndef PerlMin
+#endif // #ifndef PerlAppMinimal
switch(aCommand)
{
-#ifndef PerlMin
+#ifndef PerlAppMinimal
case EPerlAppCommandAbout:
{
message.Format(KAboutFormat,
@@ -547,37 +592,23 @@ static void DoHandleCommandL(TInt aCommand) {
case EPerlAppCommandRunFile:
{
TFileName aScriptUtf16;
-#ifdef __SERIES60__
- if (AknCommonDialogs::RunSelectDlgLD(aScriptUtf16,
- R_MEMORY_SELECTION_DIALOG))
- DoRunScriptL(aScriptUtf16);
-#endif /* #ifdef __SERIES60__ */
-#ifdef __SERIES80__
aScriptUtf16.Copy(_L("C:\\"));
- if (CCknOpenFileDialog::RunDlgLD(aScriptUtf16,
- CCknOpenFileDialog::EShowSystemFilesAndFolders |
- CCknOpenFileDialog::EShowHiddenFilesAndFolders |
- CCknOpenFileDialog::EShowAllDrives |
- CCknOpenFileDialog::EShowExtendedView |
- CCknOpenFileDialog::EShowNoFilesText) {
- /* TODO: despite all the above flags still does not seem
- * to allow navigating outside the default directory. */
- TEntry aEntry;
- RFs aFs;
- aFs.Connect();
- if (aFs.Entry(aScriptUtf16, aEntry) == KErrNone)
- DoRunScriptL(aScriptUtf16);
- /* else show error message? */
- }
-#endif /* #ifdef __SERIES80__ */
+ if (FileQueryDialogL(aScriptUtf16))
+ DoRunScriptL(aScriptUtf16);
}
break;
case EPerlAppCommandOneLiner:
{
+#ifdef __SERIES60__
_LIT(prompt, "Oneliner:");
+#endif /* #ifdef __SERIES60__ */
+#ifdef __SERIES80__
+ _LIT(prompt, "Code:"); // The title has "Oneliner" already.
+#endif /* #ifdef __SERIES80__ */
CPerlAppUi* cAppUi =
STATIC_CAST(CPerlAppUi*, CEikonEnv::Static()->EikAppUi());
- if (TextQueryDialogL(prompt,
+ if (TextQueryDialogL(_L("Oneliner"),
+ prompt,
cAppUi->iOneLiner,
KPerlAppOneLinerSize)) {
const TUint KPerlAppUtf8Multi = 3;
@@ -620,13 +651,13 @@ static void DoHandleCommandL(TInt aCommand) {
PERL_SYMBIANSDK_MAJOR,
PERL_SYMBIANSDK_MINOR
);
- InformationNoteL(message);
+ InformationNoteL(m1);
+ User::After((TTimeIntervalMicroSeconds32) (1000*1000));
m2.Format(KCopyrightFormat);
- message.Format(_L("%S %S"), &m1, &m2);
- InformationNoteL(message);
+ InformationNoteL(m2);
}
break;
-#endif // #ifndef PerlMin
+#endif // #ifndef PerlAppMinimal
default:
Panic(EPerlAppCommandUnknown);
}
@@ -716,7 +747,7 @@ CEikAppUi* CPerlAppDocument::CreateAppUiL()
}
-#ifndef PerlMin
+#ifndef PerlAppMinimal
CFileStore* CPerlAppDocument::OpenFileL(TBool aDoOpen, const TDesC& aFileName, RFs& aFs)
{
@@ -728,7 +759,7 @@ CFileStore* CPerlAppDocument::OpenFileL(TBool aDoOpen, const TDesC& aFileName, R
return NULL;
}
-#endif // #ifndef PerlMin
+#endif // #ifndef PerlAppMinimal
EXPORT_C CApaApplication* NewApplication()
{
diff --git a/symbian/PerlApp.h b/symbian/PerlApp.h
index 04cc0c7db5..8782fa0db5 100644
--- a/symbian/PerlApp.h
+++ b/symbian/PerlApp.h
@@ -17,32 +17,37 @@
# include <eikdoc.h>
# include <eikbctrl.h>
# include <eikgted.h>
+# include <eikdialg.h>
#endif /* #ifdef __SERIES60__ */
#include <coecntrl.h>
#include <f32file.h>
/* The source code can be compiled into "PerlApp" which is the simple
- * launchpad application/demonstrator, or into "PerlMin", which is the
- * minimal Perl launchpad application. Define the cpp symbols
- * PerlMin (a boolean), PerlMinUid (the Symbian application uid in
- * the 0x... format), and PerlMinName (a C wide string, with the L prefix)
- * to compile as "PerlMin". */
-
-#define PerlMinSample
-
-#ifdef PerlMinSample
-# define PerlMin
-# define PerlMinUid 0x102015F6
-# define PerlMinName L"PerlMin"
+ * launchpad application/demonstrator, or into "PerlAppMinimal", which
+ * is the minimal Perl launchpad application. Define the cpp symbols
+ * CreatePerlAppMinimal (a boolean), PerlAppMinimalUid (the Symbian
+ * application uid in the 0x... format), and PerlAppMinimalName (a C
+ * wide string, with the L prefix) to compile as "PerlAppMinimal". */
+
+// #define CreatePerlAppMinimal
+
+#ifdef CreatePerlAppMinimal
+# define PerlAppMinimal
+# ifndef PerlAppMinimalUid // PerlApp is ...F6, PerlRecog is ...F7
+# define PerlAppMinimalUid 0x102015F8
+# endif
+# ifndef PerlAppMinimalName
+# define PerlAppMinimalName L"PerlAppMinimal"
+# endif
#endif
-#ifdef PerlMin
-# ifndef PerlMinUid
-# error PerlMin defined but PerlMinUid undefined
+#ifdef PerlAppMinimal
+# ifndef PerlAppMinimalUid
+# error PerlAppMinimal defined but PerlAppMinimalUid undefined
# endif
-# ifndef PerlMinName
-# error PerlMin defined but PerlMinName undefined
+# ifndef PerlAppMinimalName
+# error PerlAppMinimal defined but PerlAppMinimalName undefined
# endif
#endif
@@ -66,9 +71,9 @@ class CPerlAppDocument : public CMyDocument
{
public:
CPerlAppDocument(CEikApplication& aApp):CMyDocument(aApp) {;}
-#ifndef PerlMin
+#ifndef PerlAppMinimal
CFileStore* OpenFileL(TBool aDoOpen, const TDesC& aFilename, RFs& aFs);
-#endif // #ifndef PerlMin
+#endif // #ifndef PerlAppMinimal
private: // from CEikDocument
CEikAppUi* CreateAppUiL();
};
@@ -92,11 +97,11 @@ class CPerlAppUi : public CMyAppUi
~CPerlAppUi();
TBool ProcessCommandParametersL(TApaCommand aCommand, TFileName& aDocumentName, const TDesC8& aTail);
void HandleCommandL(TInt aCommand);
-#ifndef PerlMin
+#ifndef PerlAppMinimal
void OpenFileL(const TDesC& aFileName);
void InstallOrRunL(const TFileName& aFileName);
void SetFs(const RFs& aFs);
-#endif // #ifndef PerlMin
+#endif // #ifndef PerlAppMinimal
TBuf<KPerlAppOneLinerSize> iOneLiner; // Perl source code to evaluate.
CPerlAppView* iAppView;
private:
@@ -117,4 +122,23 @@ class CPerlAppView : public CMyAppView
void ConstructL(const TRect& aRect);
};
+#ifdef __SERIES80__
+
+class CPerlAppTextQueryDialog : public CEikDialog
+{
+ public:
+ CPerlAppTextQueryDialog(HBufC*& aBuffer);
+ /* TODO: OfferKeyEventL() so that newline can be seen as 'OK'. */
+ HBufC*& iData;
+ TPtrC iTitle; // used in S80 but not in S60
+ TPtrC iPrompt; // used in S60 and S80
+ TInt iMaxLength;
+ protected:
+ void PreLayoutDynInitL();
+ private:
+ TBool OkToExitL(TInt aKeycode);
+};
+
+#endif /* #ifdef __SERIES80__ */
+
#endif // __PerlApp_h__
diff --git a/symbian/PerlAppS80.rss b/symbian/PerlAppS80.rss
index 28c862f049..4f892cb618 100644
--- a/symbian/PerlAppS80.rss
+++ b/symbian/PerlAppS80.rss
@@ -72,3 +72,22 @@ RESOURCE MENU_PANE r_Perl_menu
};
}
+
+RESOURCE DIALOG r_Perl_oneliner_dialog
+{
+ title = "Title";
+ buttons = R_EIK_BUTTONS_CANCEL_OK;
+ flags = EEikDialogFlagWait;
+ items = {
+ DLG_LINE {
+ type = EEikCtEdwin;
+ prompt = "Prompt";
+ id = EPerlAppTextQueryInputField;
+ control = EDWIN {
+ width = 10;
+ maxlength = 128;
+ };
+ }
+ };
+}
+
diff --git a/symbian/config.pl b/symbian/config.pl
index b45e84dd1f..77538b2786 100644
--- a/symbian/config.pl
+++ b/symbian/config.pl
@@ -384,6 +384,7 @@ __EOF__
push @LIB, <<__EOF__;
LIBRARY eikctl.lib
LIBRARY eikcoctl.lib
+LIBRARY eikdlg.lib
LIBRARY ckndlg.lib
__EOF__
}
@@ -464,6 +465,8 @@ build_${WIN}: abld.bat ${WIN}_perl.mf ${WIN}_miniperl.mf ${WIN}_${VERSION}.mf pe
build_vc6: abld.bat ${WIN}_perl.mf ${WIN}_miniperl.mf ${WIN}_${VERSION}.mf vc6.mf perldll_wins
+build_vc7: abld.bat ${WIN}_perl.mf ${WIN}_miniperl.mf ${WIN}_${VERSION}.mf vc7.mf perldll_wins
+
build_cw: abld.bat ${WIN}_perl.mf ${WIN}_miniperl.mf ${WIN}_${VERSION}.mf cw.mf perldll_winscw
build_arm: abld.bat perl_arm miniperl_arm arm_${VERSION}.mf perldll_arm
@@ -511,10 +514,12 @@ rerename_makedef:
abld.bat abld: bld.inf
bldmake bldfiles
-makefiles: win.mf arm.mf vc6.mf cw.mf
+makefiles: win.mf arm.mf vc6 vc7.mf cw.mf
vc6: win.mf vc6.mf build_vc6
+vc7: win.mf vc7.mf build_vc7
+
cw: win.mf cw.mf build_cw
${WIN}_miniperl.mf: abld.bat symbian\\config.pl
@@ -555,6 +560,10 @@ vc6.mf: abld.bat symbian\\config.pl
abld makefile vc6
echo > vc6.mf
+vc7.mf: abld.bat symbian\\config.pl
+ abld makefile vc7
+ echo > vc7.mf
+
cw.mf: abld.bat symbian\\config.pl
abld makefile cw_ide
echo > cw.mf
@@ -674,12 +683,19 @@ perl${VERSION}dist.zip perldist.zip: \$(ALLSIS) \$(SDKZIP) \$(ETC)
perlapp: sdkinstall perlapp_${WIN} perlapp_arm
+perlapp_arm_minimal sisify_hex perlappmin.hex perlrscmin.hex: sdkinstall config.h
+ cd symbian; make perlapp_arm USERDEFS=-DCreatePerlAppMinimal
+ perl symbian\\hexdump.pl
+
perlapp_win perlapp_${WIN}: config.h
cd symbian; make perlapp_${WIN}
perlapp_arm: config.h
cd symbian; make perlapp_arm
+perlapp_arm_clean:
+ cd symbian; make clean
+
perlapp_demo_extract:
cd symbian; make perlapp_demo_extract
@@ -730,7 +746,8 @@ clean: clean_${WIN} clean_arm rerename_makedef
-del /f symbian\\abld.bat symbian\\*.sis symbian\\*.zip
-del /f symbian\\perl5*.pkg symbian\\miniperl.pkg
-del /f symbian\\PerlApp.rss
- -del arm_*.mf ${WIN}_*.mf vc6*.mf cw*.mf
+ -del arm_*.mf ${WIN}_*.mf vc*.mf cw*.mf
+ -del perlappmin.hex perlrscmin.hex
-perl symbian\\xsbuild.pl \$(XSBOPT) --clean \$(EXT)
-rmdir /s /q perl${VERSION}_Data
-cd symbian; make clean
@@ -780,6 +797,7 @@ perlapp_arm: ..\\config.h PerlApp.h PerlApp.cpp
win.mf:
bldmake bldfiles
abld makefile vc6
+ abld makefile vc7
abld makefile cw_ide
perlapp_demo_extract:
@@ -794,6 +812,8 @@ clean:
-perl demo_pl cleanup
-del /f perlapp.sis
-del /f b.pl
+ abld clean $WIN
+ abld clean thumb
distclean: clean
-del /f *.cwlink *.resources *.pref
diff --git a/symbian/hexdump.pl b/symbian/hexdump.pl
new file mode 100644
index 0000000000..37adff3577
--- /dev/null
+++ b/symbian/hexdump.pl
@@ -0,0 +1,41 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+die "$0: EPOCROOT unset\n" unless exists $ENV{EPOCROOT};
+die "$0: EPOCROOT directory does exists\n" unless -d $ENV{EPOCROOT};
+
+my $EPOC32 = "$ENV{EPOCROOT}epoc32";
+my $EXE = "$EPOC32\\release\\thumb\\urel\\perlapp.app";
+my $RSC = "$EPOC32\\data\\z\\system\\apps\\perlapp\\perlapp.rsc";
+
+use Fcntl qw(O_RDONLY);
+
+my %new = ($EXE => 'perlappmin.hex',
+ $RSC => 'perlrscmin.hex');
+
+for my $fn ($EXE, $RSC) {
+ if (sysopen(my $fh, $fn, O_RDONLY)) {
+ my $buffer;
+ my $size = -s $fn;
+ my $read;
+ my $newfn = $new{$fn};
+ unlink($newfn);
+ if (($read = sysread($fh, $buffer, $size)) == $size) {
+ if (open(my $newfh, ">$newfn")) {
+ binmode($newfh);
+ print $newfh unpack("H*", $buffer);
+ close($newfh);
+ print "Created $newfn\n";
+ } else {
+ die qq[$0: open ">$newfn" failed: $!\n];
+ }
+ } else {
+ die qq[$0: sysread $size returned $read\n];
+ }
+ close($fh);
+ } else {
+ die qq[$0: sysopen "$fn": $!\n];
+ }
+}
+
diff --git a/symbian/makesis.pl b/symbian/makesis.pl
index d5703100a1..8072249785 100644
--- a/symbian/makesis.pl
+++ b/symbian/makesis.pl
@@ -129,9 +129,9 @@ for my $target (@target) {
"perl${VERSION}dll" => $UID + 0,
"perl${VERSION}ext" => $UID + 1,
"perl${VERSION}lib" => $UID + 2,
-
- # app = + 3
- # rec = + 4
+ "perlapp" => $UID + 3,
+ "perlrecog" => $UID + 4,
+ "perlappmin" => $UID + 5,
);
die "$0: target has no UID\n" unless defined $UID{$target};
diff --git a/symbian/sisify.pl b/symbian/sisify.pl
index ae0b0e6f77..9f8172fdbf 100644
--- a/symbian/sisify.pl
+++ b/symbian/sisify.pl
@@ -232,7 +232,7 @@ for my $i (sort @c) {
}
sub hex2data {
- pack("H*", shift); # unpack("H*", $data) for the hex creation.
+ pack("H*", shift); # symbian\hexdump.pl to create the hexdumps.
}
my $APPHEX;
@@ -342,6 +342,7 @@ sub init_hex {
# by compiling the PerlApp.cpp with PerlMinSample defined in PerlApp.h.
# The following executable has been compiled using the Series 60 SDK 2.6
# for Visual C.
+ # Use symbian\hexdump.pl to create the perlappmin.hex for this hexdump.
if ($Variant eq 'S60') {
$APPHEX = <<__APP__;
79000010ce390010f61520108581107645504f430020000056176fa5000000000100bf00803e2bde56e1e0000300000180110000000000000010000000001000002000000000000001000000000000100000000007000000f8110000010000003c0f00007c00000000000000fc110000fc140000000000005e01000000b500f0f7f902bc084700000148006870470000280c001000b5011c024800f0b3fc01bc00470000480c001030b585b00490002100f004fd6846049900f046fb684600f01bf9011c049cb4256d006019016004980022002300f002fab6256d0065190020286000f003fa012100f006fa05b030bc01bc0047f0b5071c0e1c1e4878611e48b8611e48f8611e48b8641e48f8641e483860b42464003d192968002910d0786800f018fb2968002905d008688268081c032100f0a3f9b4246400391900200860b62464003d192868002803d000f060fc00202860b96a002905d008688268081c032100f08bf9381c311c00f0adfcf0bc01bc0047c40e0010280f0010180f0010f80e0010040f00105c0c001084b010b595b01790189119921a9301200021002200f07efc041c14a901a800f037fc002808d10090201c17a90222002300f076fc00f032fc00f036fc15b010bc08bc04b018470000f0b5474680b4324ca544071c8846022952d100f0bbfa011c0a687ea8126a00f043f98026f6006e44301c00f07dfa2949301c7eaa002300f07dfac425ed006d44281c00f07ffa244c6c440021224868440160201c042100f07bfa301c00f07efa011c201c2a1c00f07ffa002824d1301c00f074fa011c8420000168448022520000f0f4fb8521090169446846fc22520000f0f2fb84200001684400680f49694409680f4a6a4412680e4b6b441b68fff783ff381c00f070fa00204446002c00d10120094b9d4408bc9846f0bc02bc0847b4f5ffff2c0c0010480a000044080000480800004c0800004c0a000000b50120fff7e6fe01bc004700b5021c80204000814202d00348814206d1101c00f044fa05e00000c10b0000081cfff7e7ff01bc0047000010b500f007f8041c00f0aafb201c10bc02bc084730b5051c302000f0a7fb041c002c05d000f0f2f80748606007482060201c00f0a1fb201c291c00f009f8201c30bc02bc08470000d40c0010e40c001030b5041c0d1c00f0dff8201c291c00f0e1f82068016a201c00f08af830bc01bc0047000000b5044a4260044a026000f0d7f801bc00470000d40c0010e40c001030b584b0041c00f0d1f8051c6846211c00f0d2f82868b8300268281c694600f069f804b030bc01bc0047000030b5051c242000f053fb041c002c04d0291c00f085fb03482060201c30bc02bc08470000940d001070b5b820400000f03ffb061c002e18d000f0c4f90d48b0640d48f0640d4d75610d4cb4610d4bf3610d4ab2640d49f1640d4830600d483060301c6030802100f02ffb301c70bc02bc084700002c0e0010380e0010c40e0010280f0010180f0010f80e0010040f00104c0e00105c0c001010b58b20800000f019fb041c002c03d000f092f902482060201c10bc02bc0847f00d0010002070470047704708477047104770471847704720477047284770473047704738477047404770474847704750477047584770476047704770477047014b1b681847c0463c0f0010014b1b681847c046440f0010014b1b681847c046480f0010014b1b681847c046400f001040b4024e3668b44640bc6047900f0010014b1b681847c04610100010014b1b681847c0462c100010014b1b681847c0461c100010014b1b681847c046a00f0010014b1b681847c04608100010014b1b681847c04618100010014b1b681847c04614100010014b1b681847c046e80f0010014b1b681847c046dc0f0010014b1b681847c046d40f0010014b1b681847c04600100010014b1b681847c046fc0f0010014b1b681847c046980f0010014b1b681847c0468c0f0010014b1b681847c046e40f0010014b1b681847c04628100010014b1b681847c046f40f0010014b1b681847c04604100010014b1b681847c046c40f0010014b1b681847c046d80f0010014b1b681847c046bc0f0010014b1b681847c046a80f0010014b1b681847c046ac0f0010014b1b681847c046cc0f0010014b1b681847c046b80f0010014b1b681847c046b40f0010014b1b681847c046a40f0010014b1b681847c0460c100010014b1b681847c046e00f0010014b1b681847c0469c0f0010014b1b681847c046940f0010014b1b681847c046ec0f0010014b1b681847c046f00f0010014b1b681847c046d00f0010014b1b681847c046b00f0010014b1b681847c046c00f0010014b1b681847c046f80f0010014b1b681847c046c80f0010014b1b681847c04630100010014b1b681847c04634100010014b1b681847c04620100010014b1b681847c04624100010014b1b681847c0463c100010014b1b681847c04638100010014b1b681847c0465410001040b4024e3668b44640bc60474c100010014b1b681847c04650100010014b1b681847c04640100010014b1b681847c04648100010014b1b681847c04644100010014b1b681847c04668100010014b1b681847c046d8100010014b1b681847c04658100010014b1b681847c0468c100010014b1b681847c04624110010014b1b681847c04620110010014b1b681847c04638110010014b1b681847c046e8100010014b1b681847c04698100010014b1b681847c046a8100010014b1b681847c04608110010014b1b681847c046d4100010014b1b681847c046c8100010014b1b681847c04678100010014b1b681847c046ac100010014b1b681847c04614110010014b1b681847c046ec100010014b1b681847c046f0100010014b1b681847c04674100010014b1b681847c046c4100010014b1b681847c04660100010014b1b681847c046e0100010014b1b681847c04694100010014b1b681847c0465c100010014b1b681847c046f4100010014b1b681847c046bc100010014b1b681847c0467c100010014b1b681847c04688100010014b1b681847c046cc100010014b1b681847c04600110010014b1b681847c0460c110010014b1b681847c046f8100010014b1b681847c04690100010014b1b681847c046b8100010014b1b681847c046b4100010014b1b681847c046dc100010014b1b681847c046e4100010014b1b681847c04610110010014b1b681847c0462c11001040b4024e3668b44640bc6047b0100010014b1b681847c04604110010014b1b681847c04670100010014b1b681847c0469c100010014b1b681847c0466410001040b4024e3668b44640bc6047fc100010014b1b681847c04684100010014b1b681847c04680100010014b1b681847c046c0100010014b1b681847c04628110010014b1b681847c0466c10001040b4024e3668b44640bc6047d0100010014b1b681847c046a0100010014b1b681847c04630110010014b1b681847c0463411001040b4024e3668b44640bc6047a4100010014b1b681847c0461c110010014b1b681847c04618110010014b1b681847c04644110010014b1b681847c04664110010014b1b681847c04654110010014b1b681847c04658110010014b1b681847c04648110010014b1b681847c0465c110010014b1b681847c0463c110010014b1b681847c0464c110010014b1b681847c04640110010014b1b681847c04650110010014b1b681847c04660110010014b1b681847c04668110010014b1b681847c0466c110010014b1b681847c0467011001040b4024e3668b44640bc604774110010014b1b681847c0464c0f0010014b1b681847c046840f0010014b1b681847c046880f0010014b1b681847c046640f0010014b1b681847c046740f0010014b1b681847c046540f0010014b1b681847c0465c0f001040b4024e3668b44640bc6047500f0010014b1b681847c046800f0010014b1b681847c0467c0f0010014b1b681847c046700f0010014b1b681847c0466c0f001040b4024e3668b44640bc6047680f0010014b1b681847c046580f0010014b1b681847c046600f0010014b1b681847c046780f00107047000000b5fff72fff01bc0047000000b5fff72fff01bc0047000000b5fff723ff01bc0047000010b581b0039c14380094fff7b1fe01b010bc01bc0047000000b51438fff7d6ff01bc004700b51438fff7aafe01bc004700b51838fff7fcfe02bc084700b51c38fff7f0fe02bc084700b51c38fff7e4fe02bc084700b50438fff774fd02bc084700b50438fff768fd02bc084700b54838fff7a0ff01bc004700b54c38fff7a0ff01bc0047ffffffff00000000ffffffff00000000280c0010480c0010c40e0010280f0010180f0010f80e0010040f00105c0c00102c0c0010d40c0010e40c0010d40c0010e40c0010940d00102c0e0010380e0010c40e0010280f0010180f0010f80e0010040f00104c0e00105c0c0010580d0010f00d0010f61520100a000000640065006600610075006c0074002e0070006c0000000000070000005000650072006c004d0069006e000000000000000000000079000010650a0010710a00101507001021070010fd050010090600107d0a001015060010890a00102d070010210600102d0600102d00001039070010590100104507001051020010510700105d07001069070010950a001075070010810700108d07001099070010a50a0010b10a0010fcffffff00000000910b0010850b00100000000000000000f1020010d1040010dd040010e9040010f5040010010500100d0500101905001025050010310500103d0500104905001055050010610500106d0500107905001085050010910500109d050010a9050010b5050010c1050010cd050010d90500100d030010e5050010f105001000000000000000000d0b0010bd0a0010a5070010190a0010c90a0010b107001031040010bd070010c9070010d5070010e1070010ed070010190a00100000000000000000190b0010f9070010050800103d040010110800101d080010290800103508001041080010090b00104d08001059080010490400105504001065080010710800107d08001061030010d50a001089080010950800100000000000000000250b0010bd0a0010a50700100d000010c90a0010b107001031040010bd070010c9070010d5070010e1070010ed070010390300100000000000000000190a00100000000000000000190a0010390600104506001000000000000000004d0a0010650a0010710a00101507001021070010fd050010090600107d0a001015060010890a00102d070010210600102d06001021090010390700102d090010450700103d090010510700105d07001069070010950a001075070010810700108d07001099070010a50a0010b10a0010ecffffff00000000490b0010bd080010c9080010d5080010e1080010f1080010fd080010310b001009090010550b001015090010b8ffffff000000009d0b0010b4ffffff00000000a90b00103906001045060010e4ffffff00000000790b00106d0b0010e8ffffff00000000610b0010510600105d06001003000000060000001b000000470000003f000000ee020000f502000022030000230300002503000028030000b5040000b6040000d2040000e6040000f304000044050000480500000008000005080000030000000c0000001c0000001d000000210000002800000042000000480000004a000000520000005400000055000000570000005a0000005f0000006000000064000000650000008a0000008b0000008f0000009300000099000000a0000000ad000000b1000000b9000000bb000000c5000000c8000000d0000000d6000000dd000000df000000e2000000e8000000ec000000ff0000000001000014010000150100002401000025010000380100003a010000120000002700000033000000b7000000e3000000e600000011000000140000001e0000001f0000002000000028000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004c00000050000000510000005200000054000000560000006400000074000000790000007a0000007c0000008200000085000000860000008c0000008e0000008f00000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c6000000c8000000cc000000ce000000d5000000d6000000de000000e0000000e2000000fd000000080100002201000028010000020000000300000029030000380300003c0300005a0300007c0400008c0400000205000003050000e00500002e0600004b060000040000008905000000000000d103000000030000780200000400000003000000060000001b000000470000008d020000100000003f000000ee020000f502000022030000230300002503000028030000b5040000b6040000d2040000e6040000f304000044050000480500000008000005080000a10200002d000000030000000c0000001c0000001d000000210000002800000042000000480000004a000000520000005400000055000000570000005a0000005f0000006000000064000000650000008a0000008b0000008f0000009300000099000000a0000000ad000000b1000000b9000000bb000000c5000000c8000000d0000000d6000000dd000000df000000e2000000e8000000ec000000ff0000000001000014010000150100002401000025010000380100003a010000b402000006000000120000002700000033000000b7000000e3000000e6000000c80200003900000011000000140000001e0000001f0000002000000028000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004c00000050000000510000005200000054000000560000006400000074000000790000007a0000007c0000008200000085000000860000008c0000008e0000008f00000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c6000000c8000000cc000000ce000000d5000000d6000000de000000e0000000e2000000fd000000080100002201000028010000de0200000d000000020000000300000029030000380300003c0300005a0300007c0400008c0400000205000003050000e00500002e0600004b060000f20200000200000004000000890500004150504152435b31303030336133645d2e444c4c0041564b4f4e5b31303030353663365d2e444c4c00434f4e455b31303030336134315d2e444c4c0045465352565b31303030333965345d2e444c4c0045494b434f52455b31303030343839325d2e444c4c0045555345525b31303030333965355d2e444c4c005045524c3539332e444c4c000000c00200005c01000000000000c002000014302830f830fc300031043108310c312c32c432c832043308335c33ac33b033b433b833bc33c033c433c833cc33f0333834443450345c346c347834843490349c34a834b434c034cc34d834e434f034fc340835143520352c353835443550355c356835743580358c359835a435b035bc35c835d435e035ec35f835043610361c362836343640364c365836643670367c3688369836a436b036bc36c836d436e036ec36f836043710371c372837343740374c375837643770377c3788379437a037ac37b837c437d037dc37e837f43700380c381838243830383c384838543860386c387838843890389c38ac38b838c438d038dc38ec38f838043910391c3928393839443950395c396c397839843990399c39a839b439c039cc39d839e439f039fc39083a143a203a2c3a3c3a483a543a603a6c3a783a843a903aa03aac3ab83ac43ad03ae03aec3af83a043bc43bc83bcc3bd03bd43bd83bdc3be03be43be83bec3bf03bf43bf83bfc3b003c043c083c0c3c103c143c183c1c3c203c243c643c683c6c3c703c743c783c7c3c803c843c883c8c3c903c943c983c9c3ca03ca43ca83cac3cb03cb43cb83cbc3cc03cc43cc83ccc3cd03cdc3ce03cec3cf03cf43cf83cfc3c003d043d083d0c3d103d143d183d1c3d203d243d283d2c3d303d343d383d3c3d403d443d483d4c3d503d543d603d643d683d6c3d703d743d783d7c3d803d843d883d8c3d903d9c3da03da43da83dac3db03db43db83dbc3dc03dc43dc83dcc3dd03dd43dd83ddc3de03de43de83dec3df83dfc3d003e043e083e0c3e103e143e183e1c3e203e243e283e343e403e443e483e543e583e5c3e603e643e683e6c3e703e743e783e7c3e803e843e883e8c3e903e943e983e9c3ea03ea43ea83eac3eb03eb43eb83ebc3ec03ecc3ed03ed43ed83edc3ee03ee43ee83eec3ef03ef43e003f0c3f103f143f203f243f303f343f383f
@@ -353,6 +354,7 @@ __APP__
# by compiling the PerlApp.cpp.
# The following resource has been compiled using the Series 60 SDK 2.6
# for Visual C.
+ # Use symbian\hexdump.pl to create the perlrscmin.hex for this hexdump.
if ($Variant eq 'S60') {
$RSCHEX = <<__RSC__;
6b4a1f10000000005fde04001ca360de01b80010000400000001f0e54d0000000004f0e54d00000000000000001a00cc0800000000010005f0e54d000000000000ffffffff0000000000000000000f0500000400000000000000000000050541626f7574170000ffffffff00000000010400000000000000000000040454696d65170000ffffffff00000000020400000000000000000000030352756e170000ffffffff0000000003040000000000000000000008084f6e656c696e6572170000ffffffff000000000404000000000000000000000909436f707972696768740e0000ffffffff00000000000000000120000000000000001400cc0801006816000100000000000100000000ffffffff00ffffffff0000000000000000ffff000000000000000120000000000000002400cc0801006816000100000000000100000000ffffffff00ffffffff0000000000000000ffff000000000000004122000000000000001400cc08010069160000050000000001000000000000000001000000040007000800ff020100ffffffff00000000000000000000ffff000000000000004122000000000000001400cc08010074160007000000000054160000ffffffff000000000000ffff00000000000000000000000015001d001d0035004d00ef0026015d01a301d201d701
@@ -364,6 +366,7 @@ __RSC__
# by compiling the PerlApp.cpp with PerlMinSample defined in PerlApp.h.
# The following executable has been compiled using the Series 80 SDK 2.0
# for Visual C.
+ # Use symbian\hexdump.pl to create the perlappmin.hex for this hexdump.
if ($Variant eq 'S80') {
$APPHEX = <<__APP__;
79000010ce390010f61520108581107645504f43002000009f6ac520000000000100bb00401aaa8157e1e00003000001980e0000000000000010000000001000002000000000000001000000000000100000000007000000100f000001000000900c00007c00000000000000140f0000dc110000000000005e01000000b500f0cff902bc0847000001480068704700009c0a001000b5011c024800f075fc01bc00470000bc0a001030b585b00490002100f0e6fa6846049900f0e8fa684600f013f9011c049c9e256d006019016004980022002300f0daf9a0256d0065190020286000f0dbf9012100f0def905b030bc01bc0047f0b5071c0e1c1b4878611b48b8611b4838609e2464003d192968002910d0786800f0c0fa2968002905d008688268081c032100f081f99e246400391900200860a02464003d192868002803d000f028fc00202860796a002905d008688268081c032100f069f9381c311c00f0a1faf0bc01bc0047480c00107c0c0010d00a001084b010b595b01790189119921a9301200021002200f046fc041c14a901a800f005fc002808d10090201c17a90222002300f03efc00f000fc00f004fc15b010bc08bc04b018470000f0b5474680b4324ca544071c8846022952d100f06ffa011c0a687ea8126a00f027f98026f6006e44301c00f025fa2949301c7eaa002300f025fac425ed006d44281c00f027fa244c6c440021224868440160201c042100f023fa301c00f026fa011c201c2a1c00f027fa002824d1301c00f01cfa011c8420000168448022520000f0c2fb8521090169446846fc22520000f0c0fb84200001684400680f49694409680f4a6a4412680e4b6b441b68fff783ff381c00f024fa00204446002c00d10120094b9d4408bc9846f0bc02bc0847b4f5ffffa00a0010480a000044080000480800004c0800004c0a000000b50120fff7f2fe01bc004700b5081cfff7f6ff01bc004710b5021c80204000814203d1101c00f0f5f905e09e24640010190068fff7eaff10bc01bc0047000010b500f007f8041c00f074fb201c10bc02bc084730b5051c2c2000f071fb041c002c03d000f092fb06482060201c00f06dfb201c291c00f007f8201c30bc02bc084700003c0b001030b5041c0d1c00f0bdf8201c291c00f0bff82068016a201c00f06ef830bc01bc0047000000b5034a026000f0b7f801bc004700003c0b001030b584b0041c00f0b3f8051c6846211c00f0b4f82868b8300268281c694600f051f804b030bc01bc0047000030b5051c242000f025fb041c002c04d0291c00f08ff903482060201c30bc02bc08470000b00b001010b5a220400000f011fb041c002c0cd000f082f9074860610748a06107482060201c3430802100f00dfb201c10bc02bc08470000480c00107c0c0010d00a001010b58b20800000f003fb041c002c03d000f068f902482060201c10bc02bc08470c0c0010002070470047704708477047104770471847704720477047284770473047704738477047404770474847704750477047584770476047704770477047014b1b681847c046900c0010014b1b681847c046980c0010014b1b681847c0469c0c0010014b1b681847c046940c001040b4024e3668b44640bc6047a40c0010014b1b681847c046100d0010014b1b681847c046280d0010014b1b681847c046b40c0010014b1b681847c046080d0010014b1b681847c046180d0010014b1b681847c046140d0010014b1b681847c046f00c0010014b1b681847c046e40c0010014b1b681847c046dc0c0010014b1b681847c046000d0010014b1b681847c046fc0c0010014b1b681847c046ac0c0010014b1b681847c046a00c0010014b1b681847c046ec0c0010014b1b681847c046240d0010014b1b681847c046040d0010014b1b681847c046e00c0010014b1b681847c046bc0c0010014b1b681847c046d40c0010014b1b681847c046c80c0010014b1b681847c046c40c0010014b1b681847c046b80c0010014b1b681847c0460c0d0010014b1b681847c046e80c0010014b1b681847c046b00c0010014b1b681847c046a80c0010014b1b681847c046f40c0010014b1b681847c046d80c0010014b1b681847c046c00c0010014b1b681847c046cc0c0010014b1b681847c046f80c0010014b1b681847c046d00c0010014b1b681847c0461c0d0010014b1b681847c046200d0010014b1b681847c046400d001040b4024e3668b44640bc6047380d0010014b1b681847c0463c0d0010014b1b681847c0462c0d0010014b1b681847c046340d0010014b1b681847c046300d0010014b1b681847c046540e0010014b1b681847c0466c0d0010014b1b681847c046e80d0010014b1b681847c046300e0010014b1b681847c0465c0d0010014b1b681847c0468c0d0010014b1b681847c046340e0010014b1b681847c0463c0e0010014b1b681847c046380e0010014b1b681847c046480e0010014b1b681847c046500e0010014b1b681847c046f40d0010014b1b681847c046fc0d0010014b1b681847c046440e0010014b1b681847c046b40d0010014b1b681847c046980d0010014b1b681847c046a80d0010014b1b681847c046e40d0010014b1b681847c046d00d0010014b1b681847c046780d001040b4024e3668b44640bc6047a00d0010014b1b681847c046ac0d0010014b1b681847c046240e0010014b1b681847c046000e0010014b1b681847c046040e0010014b1b681847c046d80d0010014b1b681847c046740d0010014b1b681847c046d40d0010014b1b681847c046c80d0010014b1b681847c046640d0010014b1b681847c046f00d0010014b1b681847c046940d0010014b1b681847c046600d0010014b1b681847c046080e0010014b1b681847c046c00d0010014b1b681847c0467c0d0010014b1b681847c046880d0010014b1b681847c046dc0d0010014b1b681847c046140e0010014b1b681847c0461c0e0010014b1b681847c0460c0e0010014b1b681847c046900d0010014b1b681847c046bc0d0010014b1b681847c046b80d0010014b1b681847c046ec0d0010014b1b681847c046f80d001040b4024e3668b44640bc6047cc0d0010014b1b681847c046200e0010014b1b681847c0464c0e001040b4024e3668b44640bc6047a40d0010014b1b681847c046e00d001040b4024e3668b44640bc6047b00d0010014b1b681847c046180e0010014b1b681847c046700d0010014b1b681847c0469c0d0010014b1b681847c046680d001040b4024e3668b44640bc6047100e0010014b1b681847c046840d0010014b1b681847c046800d0010014b1b681847c046c40d0010014b1b681847c046400e0010014b1b681847c0462c0e0010014b1b681847c046280e0010014b1b681847c046600e0010014b1b681847c046800e0010014b1b681847c046700e0010014b1b681847c046740e0010014b1b681847c046640e0010014b1b681847c046780e0010014b1b681847c046580e0010014b1b681847c046680e0010014b1b681847c0465c0e0010014b1b681847c0466c0e0010014b1b681847c0467c0e0010014b1b681847c046840e0010014b1b681847c046880e001040b4024e3668b44640bc60478c0e0010014b1b681847c046540d0010014b1b681847c046500d0010014b1b681847c0464c0d0010014b1b681847c046480d0010014b1b681847c046440d0010014b1b681847c046580d00107047000000b5fff77bff01bc0047000000b5fff76fff01bc0047000010b581b0039c14380094fff725ff01b010bc01bc0047000000b51438fff716ff01bc004700b51438fff71eff01bc004700b51838fff702ff02bc0847ffffffff00000000ffffffff000000009c0a0010bc0a0010480c00107c0c0010d00a0010a00a00103c0b00103c0b0010b00b0010480c00107c0c0010d00a00100c0c0010f61520100a000000640065006600610075006c0074002e0070006c0000000000070000005000650072006c004d0069006e000000000000000000000079000010710600107d06001089060010950600106505001071050010a10600107d050010ad060010b906001089050010950500102d000010c50600104101001045020010d1060010dd060010e9060010f506001005070010110700101d070010290700100000000000000000d902001075040010810400108d04001099040010a5040010b1040010bd040010c9040010c5090010d5040010d1090010e1040010dd090010e9090010ed040010f904001005050010110500101d0500102905001035050010410500104d050010ed020010f5090010590500100000000000000000050a0010a1070010ad070010ed030010b9070010c5070010d1070010dd070010e9070010010a0010f507001001080010f9030010050400100d08001019080010250800104103001031080010410800104d0800100000000000000000110a001035070010410700100d0000104d07001059070010e103001065070010710700107d070010890700109507001019030010ecffffff00000000350a0010910800109d080010a9080010b5080010c5080010d10800101d0a0010dd080010410a0010e9080010e8ffffff000000004d0a0010a1050010ad05001003000000060000001b00000047000000030000000c0000001c0000001d0000002100000028000000420000004a0000005200000054000000550000005a0000006000000064000000650000008a0000008b0000008f0000009300000099000000a0000000b1000000bb000000c5000000c8000000d0000000d6000000dd000000df000000e2000000e8000000ff000000000100001401000015010000120000002700000033000000b7000000e3000000e6000000260100005601000065010000800200000a040000af04000011000000140000001e0000001f00000020000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004e0000005000000051000000520000005400000055000000560000006400000074000000790000007a0000007b0000007c0000007d0000007f0000008200000083000000860000008c0000008e0000008f0000009000000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000d6000000d9000000db000000de000000e0000000e2000000e5000000fb000000fd000000fe0000002f010000020000000300000029030000380300003c0300005a0300007c0400008c0400000205000003050000e00500002e06000004000000890500000000000081030000c80200003c0200000400000003000000060000001b000000470000005102000023000000030000000c0000001c0000001d0000002100000028000000420000004a0000005200000054000000550000005a0000006000000064000000650000008a0000008b0000008f0000009300000099000000a0000000b1000000bb000000c5000000c8000000d0000000d6000000dd000000df000000e2000000e8000000ff0000000001000014010000150100006402000006000000120000002700000033000000b7000000e3000000e60000007802000006000000260100005601000065010000800200000a040000af0400008f0200003f00000011000000140000001e0000001f00000020000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004e0000005000000051000000520000005400000055000000560000006400000074000000790000007a0000007b0000007c0000007d0000007f0000008200000083000000860000008c0000008e0000008f0000009000000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000d6000000d9000000db000000de000000e0000000e2000000e5000000fb000000fd000000fe0000002f010000a50200000c000000020000000300000029030000380300003c0300005a0300007c0400008c0400000205000003050000e00500002e060000b90200000200000004000000890500004150504152435b31303030336133645d2e444c4c00434f4e455b31303030336134315d2e444c4c0045465352565b31303030333965345d2e444c4c0045494b434f43544c5b31303030343839655d2e444c4c0045494b434f52455b31303030343839325d2e444c4c0045555345525b31303030333965355d2e444c4c005045524c3539332e444c4c0000000004020000fe000000000000000402000014302830ec30f030f4301432b032e8323c33743378337c33a033e833f43300340c341c342834343440344c345834643470347c3488349434a034ac34b834c434d034dc34e834f43400350c351835243530353c354835543560356c357835843590359c35a835b435c035d035dc35e835f43500360c361836243630363c364836543660366c367836843690369c36a836b436c036cc36d836e436f03600370c371837243730373c374837543760376c377837843790379c37a837b437c037cc37d837e437f037fc370838143820382c383c38483854386438703880388c389838a438b038c038cc38d838e438f038fc380839143920392c393839443950395c396839743980398c399839a439b439c039cc39d839e439f039fc39683a6c3a703a743a783a7c3a803a843a883a8c3a903a943a983ad83adc3ae03ae43ae83aec3af03af43af83afc3a003b043b083b0c3b103b143b183b1c3b203b243b283b2c3b303b343b383b443b483b4c3b503b543b583b5c3b603b643b683b6c3b703b743b783b7c3b803b843b883b8c3b903b943b983b9c3ba03ba43ba83bac3bb83bbc3bc03bc43bc83bcc3bd03bd43bd83bdc3be03be43be83bec3bf03bf43bf83bfc3b003c043c083c143c183c1c3c203c243c283c2c3c303c343c383c3c3c403c443c503c543c583c5c3c603c643c683c6c3c703c743c783c843c883c8c3c__APP__
@@ -374,6 +377,7 @@ __RSC__
# by compiling the PerlApp.cpp.
# The following resource has been compiled using the Series 80 SDK 2.0
# for Visual C.
+ # Use symbian\hexdump.pl to create the perlrscmin.hex for this hexdump.
if ($Variant eq 'S80') {
$RSCHEX = <<__RSC__;
6b4a1f10000000005fde04001ca360de01b800380400000001f0e54d0000000005f0e54d000000000000000004f0e54d000000000010010000005000000000000400000204030352756e0900ffffffff00030408084f6e656c696e65720900ffffffff000504050541626f75740900ffffffff0000010404457869740500ffffffff0007010006f0e54d07074f7074696f6e73110000000000ffffffff0000000000000000000f0500000400000000000000000000050541626f7574170000ffffffff00000000010400000000000000000000040454696d65170000ffffffff00000000020400000000000000000000030352756e170000ffffffff0000000003040000000000000000000008084f6e656c696e6572170000ffffffff000000000404000000000000000000000909436f707972696768740e0000ffffffff000000000000000014001c001c0034008200a5004701__RSC__