summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDagfinn Ilmari Mannsåker <ilmari@ilmari.org>2020-03-04 00:28:00 +0000
committerDagfinn Ilmari Mannsåker <ilmari@ilmari.org>2020-07-20 23:28:12 +0100
commit822c8b4dc3fe62cd97d78e693e5871fcc65782fd (patch)
tree58172809ebe7ee4365ca85886b38fbcf6862b86e
parent6e764e36cf6a7c109e74ca4ccafbba27a0b422cd (diff)
downloadperl-822c8b4dc3fe62cd97d78e693e5871fcc65782fd.tar.gz
Remove Symbian port
Also eliminate USE_HEAP_INSTEAD_OF_STACK and SETSOCKOPT_OPTION_VALUE_T, since Symbian was the only user of those.
-rw-r--r--EXTERN.h4
-rw-r--r--INTERN.h3
-rw-r--r--MANIFEST52
-rwxr-xr-xPorting/checkcfgvar.pl1
-rwxr-xr-xPorting/corelist.pl3
-rw-r--r--README.cygwin2
-rw-r--r--README.symbian434
-rw-r--r--XSUB.h3
-rw-r--r--doio.c2
-rw-r--r--embed.fnc2
-rw-r--r--embed.h2
-rw-r--r--ext/DynaLoader/DynaLoader_pm.PL8
-rw-r--r--ext/DynaLoader/dl_symbian.xs245
-rw-r--r--ext/Errno/Errno_pm.PL18
-rw-r--r--perl.c11
-rw-r--r--perl.h33
-rw-r--r--perlio.c2
-rw-r--r--pod/perl.pod1
-rw-r--r--pod/perldiag.pod4
-rw-r--r--pod/perlport.pod7
-rw-r--r--pp_ctl.c12
-rw-r--r--pp_sys.c24
-rw-r--r--proto.h2
-rw-r--r--sv.c9
-rw-r--r--symbian/PerlApp.cpp546
-rw-r--r--symbian/PerlApp.h81
-rw-r--r--symbian/PerlApp.hrh19
-rw-r--r--symbian/PerlAppAif.rss21
-rw-r--r--symbian/PerlBase.cpp425
-rw-r--r--symbian/PerlBase.h127
-rw-r--r--symbian/PerlBase.pod204
-rw-r--r--symbian/PerlRecog.cpp57
-rw-r--r--symbian/PerlRecog.mmp9
-rw-r--r--symbian/PerlUi.cpp273
-rw-r--r--symbian/PerlUi.h120
-rw-r--r--symbian/PerlUi.hrh14
-rw-r--r--symbian/PerlUiS60.rss144
-rw-r--r--symbian/PerlUiS80.rss95
-rw-r--r--symbian/PerlUiS90.rss95
-rw-r--r--symbian/PerlUiUIQ.rss124
-rw-r--r--symbian/PerlUtil.cpp117
-rw-r--r--symbian/PerlUtil.h36
-rw-r--r--symbian/PerlUtil.pod42
-rw-r--r--symbian/README20
-rw-r--r--symbian/TODO198
-rw-r--r--symbian/bld.inf4
-rw-r--r--symbian/config.pl994
-rw-r--r--symbian/config.sh961
-rw-r--r--symbian/cwd.pl6
-rw-r--r--symbian/demo_pl128
-rw-r--r--symbian/ext/Moped/Msg/Msg.mmp1
-rw-r--r--symbian/ext/Moped/Msg/Msg.pkg16
-rw-r--r--symbian/ext/Moped/Msg/Msg.pm9
-rw-r--r--symbian/ext/Moped/Msg/Msg.xs51
-rw-r--r--symbian/ext/Moped/Msg/README49
-rw-r--r--symbian/ext/Moped/Msg/bld.inf4
-rw-r--r--symbian/ext/Moped/Msg/location.pl8
-rw-r--r--symbian/find_writeable_data.pl73
-rw-r--r--symbian/hexdump.pl41
-rw-r--r--symbian/install.cfg119
-rw-r--r--symbian/makesis.pl203
-rw-r--r--symbian/port.pl6
-rw-r--r--symbian/sanity.pl36
-rw-r--r--symbian/sdk.pl216
-rw-r--r--symbian/sisify.pl410
-rw-r--r--symbian/symbian_dll.cpp24
-rw-r--r--symbian/symbian_proto.h73
-rw-r--r--symbian/symbian_stubs.c112
-rw-r--r--symbian/symbian_stubs.h22
-rw-r--r--symbian/symbian_utils.cpp422
-rw-r--r--symbian/symbianish.h218
-rw-r--r--symbian/uid.pl1
-rw-r--r--symbian/version.pl22
-rw-r--r--symbian/xsbuild.pl976
-rw-r--r--t/op/local.t2
-rw-r--r--t/op/magic.t2
-rw-r--r--util.c4
-rw-r--r--util.h4
-rw-r--r--win32/GNUmakefile6
-rw-r--r--win32/Makefile6
-rw-r--r--win32/makefile.mk6
81 files changed, 35 insertions, 8851 deletions
diff --git a/EXTERN.h b/EXTERN.h
index 4406b29752..7946323dce 100644
--- a/EXTERN.h
+++ b/EXTERN.h
@@ -19,14 +19,14 @@
#undef EXTCONST
#undef dEXTCONST
-# if (defined(WIN32) || defined(__SYMBIAN32__)) && !defined(PERL_STATIC_SYMS)
+# if defined(WIN32) && !defined(PERL_STATIC_SYMS)
/* miniperl should not export anything */
# if defined(PERL_IS_MINIPERL)
# define EXT extern
# define dEXT
# define EXTCONST extern const
# define dEXTCONST const
-# elif defined(PERLDLL) || defined(__SYMBIAN32__)
+# elif defined(PERLDLL)
# define EXT EXTERN_C __declspec(dllexport)
# define dEXT
# define EXTCONST EXTERN_C __declspec(dllexport) const
diff --git a/INTERN.h b/INTERN.h
index 35bb4ee5cb..4305b6bc02 100644
--- a/INTERN.h
+++ b/INTERN.h
@@ -19,8 +19,7 @@
#undef EXTCONST
#undef dEXTCONST
-# if (defined(WIN32) && defined(__MINGW32__) && ! defined(PERL_IS_MINIPERL)) \
- || defined(__SYMBIAN32__)
+# if (defined(WIN32) && defined(__MINGW32__) && ! defined(PERL_IS_MINIPERL))
# ifdef __cplusplus
# define EXT __declspec(dllexport)
# define dEXT
diff --git a/MANIFEST b/MANIFEST
index 12a9469c80..c058b45e65 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -4139,7 +4139,6 @@ ext/DynaLoader/dl_dyld.xs NeXT/Apple dyld implementation
ext/DynaLoader/dl_freemint.xs GNU dld style implementation for FreeMINT
ext/DynaLoader/dl_hpux.xs HP-UX implementation
ext/DynaLoader/dl_none.xs Stub implementation
-ext/DynaLoader/dl_symbian.xs Symbian implementation
ext/DynaLoader/dl_vms.xs VMS implementation
ext/DynaLoader/dl_win32.xs Win32 implementation
ext/DynaLoader/dlutils.c Dynamic loader utilities for dl_*.xs files
@@ -5415,7 +5414,6 @@ README.plan9 Perl notes for Plan 9
README.qnx Perl notes for QNX
README.riscos Perl notes for RISC OS
README.solaris Perl notes for Solaris
-README.symbian Perl notes for Symbian
README.synology Perl notes for Synology
README.tru64 Perl notes for Tru64
README.tw Perl for Traditional Chinese (in Big5)
@@ -5467,56 +5465,6 @@ SECURITY.md Add Security Policy for GitHub
stadtx_hash.h StadtX hash code (64 Bit fast hash function)
sv.c Scalar value code
sv.h Scalar value header
-symbian/bld.inf Symbian sample app build config
-symbian/config.pl Configuration script for Symbian
-symbian/config.sh Configuration data for Symbian
-symbian/cwd.pl Helper code for config.pl
-symbian/demo_pl "Archive" of demo code
-symbian/ext/Moped/Msg/bld.inf Demo extension build configuration
-symbian/ext/Moped/Msg/location.pl Demo extension script
-symbian/ext/Moped/Msg/Msg.mmp Demo extension building
-symbian/ext/Moped/Msg/Msg.pkg Demo extension packaging
-symbian/ext/Moped/Msg/Msg.pm Demo extension Perl glue
-symbian/ext/Moped/Msg/Msg.xs Demo extension code
-symbian/ext/Moped/Msg/README Demo extension documentation
-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/PerlApp.cpp Symbian app launcher code
-symbian/PerlApp.h Symbian app launcher header
-symbian/PerlApp.hrh Symbian app launcher resource header
-symbian/PerlAppAif.rss Symbian app launcher code
-symbian/PerlBase.cpp Symbian Perl base class
-symbian/PerlBase.h Symbian Perl base class header
-symbian/PerlBase.pod Symbian Perl base class documentation
-symbian/PerlRecog.cpp Symbian recognizer code
-symbian/PerlRecog.mmp Symbian recognizer build
-symbian/PerlUi.cpp Symbian Perl UI class
-symbian/PerlUi.h Symbian Perl UI class header
-symbian/PerlUi.hrh Symbian Perl UI class resource header
-symbian/PerlUiS60.rss Symbian app launcher resource definition
-symbian/PerlUiS80.rss Symbian app launcher resource definition
-symbian/PerlUiS90.rss Symbian app launcher resource definition
-symbian/PerlUiUIQ.rss Symbian app launcher resource definition
-symbian/PerlUtil.cpp Symbian Perl utility class
-symbian/PerlUtil.h Symbian Perl utility class header
-symbian/PerlUtil.pod Symbian Perl utility class documentation
-symbian/port.pl Helper code for config.pl
-symbian/README ReadMe for the Symbian files
-symbian/sanity.pl Helper code for config.pl
-symbian/sdk.pl Helper code for config.pl
-symbian/sisify.pl Packaging utility
-symbian/symbian_dll.cpp The DLL stub for Symbian
-symbian/symbian_proto.h Prototypes for Symbian
-symbian/symbian_stubs.c Stub routines for Symbian
-symbian/symbian_stubs.h Stub headers for Symbian
-symbian/symbian_utils.cpp Helper routines for Symbian
-symbian/symbianish.h Header for Symbian
-symbian/TODO Symbian things to do
-symbian/uid.pl Helper code for config.pl
-symbian/version.pl Helper code for config.pl
-symbian/xsbuild.pl Building extensions
t/base/cond.t See if conditionals work
t/base/if.t See if if works
t/base/lex.t See if lexical items work
diff --git a/Porting/checkcfgvar.pl b/Porting/checkcfgvar.pl
index 101f12d868..e7eb58e5bf 100755
--- a/Porting/checkcfgvar.pl
+++ b/Porting/checkcfgvar.pl
@@ -50,7 +50,6 @@ my @CFG = (
"Cross/config.sh-arm-linux",
"Cross/config.sh-arm-linux-n770",
"NetWare/config.wc",
- "symbian/config.sh",
"uconfig.sh",
"uconfig64.sh",
"plan9/config_sh.sample",
diff --git a/Porting/corelist.pl b/Porting/corelist.pl
index 2f2e61c52e..05393c0ada 100755
--- a/Porting/corelist.pl
+++ b/Porting/corelist.pl
@@ -105,7 +105,7 @@ find(
$version =~ /\d/ and $version = "'$version'";
# some heuristics to figure out the module name from the file name
- $module =~ s{^(lib|cpan|dist|(?:symbian/)?ext|os2/OS2)/}{}
+ $module =~ s{^(lib|cpan|dist|ext|os2/OS2)/}{}
and $1 ne 'lib'
and (
$module =~ s{\b(\w+)/\1\b}{$1},
@@ -130,7 +130,6 @@ find(
$module_to_file{$module} = $File::Find::name;
},
'os2/OS2',
- 'symbian/ext',
'lib',
'ext',
'cpan',
diff --git a/README.cygwin b/README.cygwin
index 5885ac5f69..6ad9fb542c 100644
--- a/README.cygwin
+++ b/README.cygwin
@@ -576,7 +576,6 @@ be kept as clean as possible.
lib/ExtUtils/NOTES lib/ExtUtils/PATCHING lib/ExtUtils/README
lib/Net/Ping/Changes lib/Test/Harness/Changes
lib/Term/ANSIColor/ChangeLog lib/Term/ANSIColor/README
- README.symbian symbian/TODO
=item Build, Configure, Make, Install
@@ -597,7 +596,6 @@ be kept as clean as possible.
NetWare/Makefile
plan9/mkfile
- symbian/sanity.pl symbian/sisify.pl
hints/uwin.sh
vms/descrip_mms.template
win32/Makefile win32/makefile.mk
diff --git a/README.symbian b/README.symbian
deleted file mode 100644
index cb4a42ff94..0000000000
--- a/README.symbian
+++ /dev/null
@@ -1,434 +0,0 @@
-If you read this file _as_is_, just ignore the funny characters you see.
-It is written in the POD format (see pod/perlpod.pod) which is specially
-designed to be readable as is.
-
-=head1 NAME
-
-perlsymbian - Perl version 5 on Symbian OS
-
-=head1 DESCRIPTION
-
-This document describes various features of the Symbian operating
-system that will affect how Perl version 5 (hereafter just Perl)
-is compiled and/or runs.
-
-B<NOTE: this port (as of 0.4.1) does not compile into a Symbian
-OS GUI application, but instead it results in a Symbian DLL.>
-The DLL includes a C++ class called CPerlBase, which one can then
-(derive from and) use to embed Perl into applications, see F<symbian/README>.
-
-The base port of Perl to Symbian only implements the basic POSIX-like
-functionality; it does not implement any further Symbian or Series 60,
-Series 80, or UIQ bindings for Perl.
-
-It is also possible to generate Symbian executables for "miniperl"
-and "perl", but since there is no standard command line interface
-for Symbian (nor full keyboards in the devices), these are useful
-mainly as demonstrations.
-
-=head2 Compiling Perl on Symbian
-
-(0) You need to have the appropriate Symbian SDK installed.
-
-These instructions have been tested under various Nokia Series 60
-Symbian SDKs (1.2 to 2.6, 2.8 should also work, 1.2 compiles but
-does not work), Series 80 2.0, and Nokia 7710 (Series 90) SDK.
-You can get the SDKs from Forum Nokia (L<http://www.forum.nokia.com/>).
-A very rough port ("it compiles") to UIQ 2.1 has also been made.
-
-A prerequisite for any of the SDKs is to install ActivePerl
-from ActiveState, L<http://www.activestate.com/Products/ActivePerl/>
-
-Having the SDK installed also means that you need to have either
-the Metrowerks CodeWarrior installed (2.8 and 3.0 were used in testing)
-or the Microsoft Visual C++ 6.0 installed (SP3 minimum, SP5 recommended).
-
-Note that for example the Series 60 2.0 VC SDK installation talks
-about ActivePerl build 518, which does no more (as of mid-2005) exist
-at the ActiveState website. The ActivePerl 5.8.4 build 810 was
-used successfully for compiling Perl on Symbian. The 5.6.x ActivePerls
-do not work.
-
-Other SDKs or compilers like Visual.NET, command-line-only
-Visual.NET, Borland, GnuPoc, or sdk2unix have not been tried.
-
-These instructions almost certainly won't work with older Symbian
-releases or other SDKs. Patches to get this port running in other
-releases, SDKs, compilers, platforms, or devices are naturally welcome.
-
-(1) Get a Perl source code distribution (for example the file
-perl-5.9.2.tar.gz is fine) from L<http://www.cpan.org/src/>
-and unpack it in your the C:/Symbian directory of your Windows
-system.
-
-(2) Change to the perl source directory.
-
- cd c:\Symbian\perl-5.x.x
-
-(3) Run the following script using the perl coming with the SDK
-
- perl symbian\config.pl
-
-You must use the cmd.exe, the Cygwin shell will not work.
-The PATH must include the SDK tools, including a Perl,
-which should be the case under cmd.exe. If you do not
-have that, see the end of symbian\sdk.pl for notes of
-how your environment should be set up for Symbian compiles.
-
-(4) Build the project, either by
-
- make all
-
-in cmd.exe or by using either the Metrowerks CodeWarrior
-or the Visual C++ 6.0, or the Visual Studio 8 (the Visual C++
-2005 Express Edition works fine).
-
-If you use the VC IDE, you will have to run F<symbian\config.pl>
-first using the cmd.exe, and then run 'make win.mf vc6.mf' to generate
-the VC6 makefiles and workspaces. "make vc6" will compile for the VC6,
-and "make cw" for the CodeWarrior.
-
-The following SDK and compiler configurations and Nokia phones were
-tested at some point in time (+ = compiled and PerlApp run, - = not),
-both for Perl 5.8.x and 5.9.x:
-
- SDK | VC | CW |
- --------+----+----+---
- S60 1.2 | + | + | 3650 (*)
- S60 2.0 | + | + | 6600
- S60 2.1 | - | + | 6670
- S60 2.6 | + | + | 6630
- S60 2.8 | + | + | (not tested in a device)
- S80 2.6 | - | + | 9300
- S90 1.1 | + | - | 7710
- UIQ 2.1 | - | + | (not tested in a device)
-
- (*) Compiles but does not work, unfortunately, a problem with Symbian.
-
-If you are using the 'make' directly, it is the GNU make from the SDKs,
-and it will invoke the right make commands for the Windows emulator
-build and the Arm target builds ('thumb' by default) as necessary.
-
-The build scripts assume the 'absolute style' SDK installs under C:,
-the 'subst style' will not work.
-
-If using the VC IDE, to build use for example the File->Open Workspace->
-C:\Symbian\8.0a\S60_2nd_FP2\epoc32\build\symbian\perl\perl\wins\perl.dsw
-The emulator binaries will appear in the same directory.
-
-If using the VC IDE, you will a lot of warnings in the beginning of
-the build because a lot of headers mentioned by the source cannot
-be found, but this is not serious since those headers are not used.
-
-The Metrowerks will give a lot of warnings about unused variables and
-empty declarations, you can ignore those.
-
-When the Windows and Arm DLLs are built do not be scared by a very long
-messages whizzing by: it is the "export freeze" phase where the whole
-(rather large) API of Perl is listed.
-
-Once the build is completed you need to create the DLL SIS file by
-
- make perldll.sis
-
-which will create the file perlXYZ.sis (the XYZ being the Perl version)
-which you can then install into your Symbian device: an easy way
-to do this is to send them via Bluetooth or infrared and just open
-the messages.
-
-Since the total size of all Perl SIS files once installed is
-over 2 MB, it is recommended to do the installation into a
-memory card (drive E:) instead of the C: drive.
-
-The size of the perlXYZ.SIS is about 370 kB but once it is in the
-device it is about one 750 kB (according to the application manager).
-
-The perlXYZ.sis includes only the Perl DLL: to create an additional
-SIS file which includes some of the standard (pure) Perl libraries,
-issue the command
-
- make perllib.sis
-
-Some of the standard Perl libraries are included, but not all:
-see L</HISTORY> or F<symbian\install.cfg> for more details
-(250 kB -> 700 kB).
-
-Some of the standard Perl XS extensions (see L</HISTORY> are
-also available:
-
- make perlext.sis
-
-which will create perlXYZext.sis (290 kB -> 770 kB).
-
-To compile the demonstration application PerlApp you need first to
-install the Perl headers under the SDK.
-
-To install the Perl headers and the class CPerlBase documentation
-so that you no more need the Perl sources around to compile Perl
-applications using the SDK:
-
- make sdkinstall
-
-The destination directory is C:\Symbian\perl\X.Y.Z. For more
-details, see F<symbian\PerlBase.pod>.
-
-Once the headers have been installed, you can create a SIS for
-the PerlApp:
-
- make perlapp.sis
-
-The perlapp.sis (11 kB -> 16 kB) will be built in the symbian
-subdirectory, but a copy will also be made to the main directory.
-
-If you want to package the Perl DLLs (one for WINS, one for ARMI),
-the headers, and the documentation:
-
- make perlsdk.zip
-
-which will create perlXYZsdk.zip that can be used in another
-Windows system with the SDK, without having to compile Perl in
-that system.
-
-If you want to package the PerlApp sources:
-
- make perlapp.zip
-
-If you want to package the perl.exe and miniperl.exe, you
-can use the perlexe.sis and miniperlexe.sis make targets.
-You also probably want the perllib.sis for the libraries
-and maybe even the perlapp.sis for the recognizer.
-
-The make target 'allsis' combines all the above SIS targets.
-
-To clean up after compilation you can use either of
-
- make clean
- make distclean
-
-depending on how clean you want to be.
-
-=head2 Compilation problems
-
-If you see right after "make" this
-
- cat makefile.sh >makefile
- 'cat' is not recognized as an internal or external command,
- operable program or batch file.
-
-it means you need to (re)run the F<symbian\config.pl>.
-
-If you get the error
-
- 'perl' is not recognized as an internal or external command,
- operable program or batch file.
-
-you may need to reinstall the ActivePerl.
-
-If you see this
-
- ren makedef.pl nomakedef.pl
- The system cannot find the file specified.
- C:\Symbian\...\make.exe: [rename_makedef] Error 1 (ignored)
-
-please ignore it since it is nothing serious (the build process of
-renames the Perl makedef.pl as nomakedef.pl to avoid confusing it
-with a makedef.pl of the SDK).
-
-=head2 PerlApp
-
-The PerlApp application demonstrates how to embed Perl interpreters
-to a Symbian application. The "Time" menu item runs the following
-Perl code: C<print "Running in ", $^O, "\n", scalar localtime>,
-the "Oneliner" allows one to type in Perl code, and the "Run"
-opens a file chooser for selecting a Perl file to run.
-
-The PerlApp also is started when the "Perl recognizer" (also included
-and installed) detects a Perl file being activated through the GUI,
-and offers either to install it under \Perl (if the Perl file is in
-the inbox of the messaging application) or to run it (if the Perl file
-is under \Perl).
-
-=head2 sisify.pl
-
-In the symbian subdirectory there is F<sisify.pl> utility which can be used
-to package Perl scripts and/or Perl library directories into SIS files,
-which can be installed to the device. To run the sisify.pl utility,
-you will need to have the 'makesis' and 'uidcrc' utilities already
-installed. If you don't have the Win32 SDKs, you may try for example
-L<http://gnupoc.sourceforge.net/> or L<http://symbianos.org/~andreh/>.
-
-=head2 Using Perl in Symbian
-
-First of all note that you have full access to the Symbian device
-when using Perl: you can do a lot of damage to your device (like
-removing system files) unless you are careful. Please do take
-backups before doing anything.
-
-The Perl port has been done for the most part using the Symbian
-standard POSIX-ish STDLIB library. It is a reasonably complete
-library, but certain corners of such emulation libraries that tend
-to be left unimplemented on non-UNIX platforms have been left
-unimplemented also this time: fork(), signals(), user/group ids,
-select() working for sockets, non-blocking sockets, and so forth.
-See the file F<symbian/config.sh> and look for 'undef' to find the
-unsupported APIs (or from Perl use Config).
-
-The filesystem of Symbian devices uses DOSish syntax, "drives"
-separated from paths by a colon, and backslashes for the path. The
-exact assignment of the drives probably varies between platforms, but
-for example in Series 60 you might see C: as the (flash) main memory,
-D: as the RAM drive, E: as the memory card (MMC), Z: as the ROM. In
-Series 80 D: is the memory card. As far the devices go the NUL: is
-the bit bucket, the COMx: are the serial lines, IRCOMx: are the IR
-ports, TMP: might be C:\System\Temp. Remember to double those
-backslashes in doublequoted strings.
-
-The Perl DLL is installed in \System\Libs\. The Perl libraries and
-extension DLLs are installed in \System\Libs\Perl\X.Y.Z\. The PerlApp
-is installed in \System\Apps\, and the SIS also installs a couple of
-demo scripts in \Perl\ (C:\Mydocs\Perl\ on Nokia 7710).
-
-Note that the Symbian filesystem is very picky: it strongly prefers
-the \ instead of the /.
-
-When doing XS / Symbian C++ programming include first the Symbian
-headers, then any standard C/POSIX headers, then Perl headers, and finally
-any application headers.
-
-New() and Copy() are unfortunately used by both Symbian and Perl code
-so you'll have to play cpp games if you need them. PerlBase.h undefines
-the Perl definitions and redefines them as PerlNew() and PerlCopy().
-
-=head1 TO DO
-
-Lots. See F<symbian/TODO>.
-
-=head1 WARNING
-
-As of Perl Symbian port version 0.4.1 any part of Perl's standard
-regression test suite has not been run on a real Symbian device using
-the ported Perl, so innumerable bugs may lie in wait. Therefore there
-is absolutely no warranty.
-
-=head1 NOTE
-
-When creating and extending application programming interfaces (APIs)
-for Symbian or Series 60 or Series 80 or Series 90 it is suggested
-that trademarks, registered trademarks, or trade names are not used in
-the API names. Instead, developers should consider basing the API
-naming in the existing (C++, or maybe Java) public component and API
-naming, modified as appropriate by the rules of the programming
-language the new APIs are for.
-
-Nokia is a registered trademark of Nokia Corporation. Nokia's product
-names are trademarks or registered trademarks of Nokia. Other product
-and company names mentioned herein may be trademarks or trade names of
-their respective owners.
-
-=head1 AUTHOR
-
-Jarkko Hietaniemi
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004-2005 Nokia. All rights reserved.
-
-Copyright (c) 2006-2007 Jarkko Hietaniemi.
-
-=head1 LICENSE
-
-The Symbian port is licensed under the same terms as Perl itself.
-
-=head1 HISTORY
-
-=over 4
-
-=item *
-
-0.1.0: April 2005
-
-(This will show as "0.01" in the Symbian Installer.)
-
- - The console window is a very simple console indeed: one can
- get the newline with "000" and the "C" button is a backspace.
- Do not expect a terminal capable of vt100 or ANSI sequences.
- The console is also "ASCII", you cannot input e.g. any accented
- letters. Because of obvious physical constraints the console is
- also very small: (in Nokia 6600) 22 columns, 17 rows.
- - The following libraries are available:
- AnyDBM_File AutoLoader base Carp Config Cwd constant
- DynaLoader Exporter File::Spec integer lib strict Symbol
- vars warnings XSLoader
- - The following extensions are available:
- attributes Compress::Zlib Cwd Data::Dumper Devel::Peek
- Digest::MD5 DynaLoader Fcntl File::Glob Filter::Util::Call
- IO List::Util MIME::Base64
- PerlIO::scalar PerlIO::via SDBM_File Socket Storable Time::HiRes
- - The following extensions are missing for various technical
- reasons:
- B ByteLoader Devel::DProf Devel::PPPort Encode GDBM_File
- IPC::SysV NDBM_File Opcode PerlIO::encoding POSIX
- re Safe Sys::Hostname Sys::Syslog
- threads threads::shared Unicode::Normalize
- - Using MakeMaker or the Module::* to build and install modules
- is not supported.
- - Building XS other than the ones in the core is not supported.
-
-Since this is 0.something release, any future releases are almost
-guaranteed to be binary incompatible. As a sign of this the Symbian
-symbol exports are kept unfrozen and the .def files fully rebuilt
-every time.
-
-=item *
-
-0.2.0: October 2005
-
- - Perl 5.9.3 (patch level 25741)
- - Compress::Zlib and IO::Zlib supported
- - sisify.pl added
-
-We maintain the binary incompatibility.
-
-=item *
-
-0.3.0: October 2005
-
- - Perl 5.9.3 (patch level 25911)
- - Series 80 2.0 and UIQ 2.1 support
-
-We maintain the binary incompatibility.
-
-=item *
-
-0.4.0: November 2005
-
- - Perl 5.9.3 (patch level 26052)
- - adding a sample Symbian extension
-
-We maintain the binary incompatibility.
-
-=item *
-
-0.4.1: December 2006
-
- - Perl 5.9.5-to-be (patch level 30002)
- - added extensions: Compress/Raw/Zlib, Digest/SHA,
- Hash/Util, Math/BigInt/FastCalc, Text/Soundex, Time/Piece
- - port to S90 1.1 by alexander smishlajev
-
-We maintain the binary incompatibility.
-
-=item *
-
-0.4.2: March 2007
-
- - catchup with Perl 5.9.5-to-be (patch level 30812)
- - tested to build with Microsoft Visual C++ 2005 Express Edition
- (which uses Microsoft Visual C 8, instead of the old VC6),
- SDK used for testing S60_2nd_FP3 aka 8.1a
-
-We maintain the binary incompatibility.
-
-=back
-
-=cut
diff --git a/XSUB.h b/XSUB.h
index 94e9dade6a..1ee94af64c 100644
--- a/XSUB.h
+++ b/XSUB.h
@@ -127,9 +127,6 @@ is a lexical C<$_> in scope.
#if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
# define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name)
# define XS_INTERNAL(name) STATIC XSPROTO(name)
-#elif defined(__SYMBIAN32__)
-# define XS_EXTERNAL(name) EXPORT_C XSPROTO(name)
-# define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name)
#elif defined(__cplusplus)
# define XS_EXTERNAL(name) extern "C" XSPROTO(name)
# define XS_INTERNAL(name) static XSPROTO(name)
diff --git a/doio.c b/doio.c
index 13d412a35e..994dc70622 100644
--- a/doio.c
+++ b/doio.c
@@ -2299,7 +2299,7 @@ Perl_do_aexec5(pTHX_ SV *really, SV **mark, SV **sp,
{
dVAR;
PERL_ARGS_ASSERT_DO_AEXEC5;
-#if defined(__SYMBIAN32__) || defined(__LIBCATAMOUNT__)
+#if defined(__LIBCATAMOUNT__)
Perl_croak(aTHX_ "exec? I'm not *that* kind of operating system");
#else
assert(sp >= mark);
diff --git a/embed.fnc b/embed.fnc
index 33ac029a88..a7fb3c7901 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -684,7 +684,7 @@ pM |bool|do_exec |NN const char* cmd
p |bool|do_exec |NN const char* cmd
#endif
-#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS)
+#if defined(WIN32) || defined(VMS)
Ap |int |do_aspawn |NULLOK SV* really|NN SV** mark|NN SV** sp
Ap |int |do_spawn |NN char* cmd
Ap |int |do_spawn_nowait|NN char* cmd
diff --git a/embed.h b/embed.h
index 182b12aa93..29c0f24a5b 100644
--- a/embed.h
+++ b/embed.h
@@ -914,7 +914,7 @@
#define PerlIO_unread(a,b,c) Perl_PerlIO_unread(aTHX_ a,b,c)
#define PerlIO_write(a,b,c) Perl_PerlIO_write(aTHX_ a,b,c)
#endif
-#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS)
+#if defined(WIN32) || defined(VMS)
#define do_aspawn(a,b,c) Perl_do_aspawn(aTHX_ a,b,c)
#define do_spawn(a) Perl_do_spawn(aTHX_ a)
#define do_spawn_nowait(a) Perl_do_spawn_nowait(aTHX_ a)
diff --git a/ext/DynaLoader/DynaLoader_pm.PL b/ext/DynaLoader/DynaLoader_pm.PL
index 5c14cccc8d..9609664f13 100644
--- a/ext/DynaLoader/DynaLoader_pm.PL
+++ b/ext/DynaLoader/DynaLoader_pm.PL
@@ -486,14 +486,6 @@ sub dl_findfile {
push(@names, $_);
}
my $dirsep = '/';
- <<$^O-eq-symbian>>
- $dirsep = '\\';
- if ($0 =~ /^([a-z]):/i) {
- my $drive = $1;
- @dirs = map { "$drive:$_" } @dirs;
- @dl_library_path = map { "$drive:$_" } @dl_library_path;
- }
- <</$^O-eq-symbian>>
foreach $dir (@dirs, @dl_library_path) {
next unless -d $dir;
<<$^O-eq-VMS>>
diff --git a/ext/DynaLoader/dl_symbian.xs b/ext/DynaLoader/dl_symbian.xs
deleted file mode 100644
index c2d1094aed..0000000000
--- a/ext/DynaLoader/dl_symbian.xs
+++ /dev/null
@@ -1,245 +0,0 @@
-/* dl_symbian.xs
- *
- * Platform: Symbian 7.0s
- * Author: Jarkko Hietaniemi <jarkko.hietaniemi@nokia.com>
- * Copyright: 2004, Nokia
- * License: Artistic/GPL
- *
- */
-
-/*
- * In Symbian DLLs there is no name information, one can only access
- * the functions by their ordinals. Perl, however, very much would like
- * to load functions by their names. We fake this by having a special
- * setup function at the ordinal 1 (this is arranged by building the DLLs
- * in a special way). The setup function builds a Perl hash mapping the
- * names to the ordinals, and the hash is then used by dlsym().
- *
- */
-
-#include <e32base.h>
-#include <eikdll.h>
-#include <utf.h>
-
-/* This is a useful pattern: first include the Symbian headers,
- * only after that the Perl ones. Otherwise you will get a lot
- * trouble because of Symbian's New(), Copy(), etc definitions. */
-
-#define PERL_EXT
-#define PERL_IN_DL_SYMBIAN_XS
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-START_EXTERN_C
-
-void *dlopen(const char *filename, int flag);
-void *dlsym(void *handle, const char *symbol);
-int dlclose(void *handle);
-const char *dlerror(void);
-
-extern void* memset(void *s, int c, size_t n);
-extern size_t strlen(const char *s);
-
-END_EXTERN_C
-
-#include "dlutils.c"
-
-#define RTLD_LAZY 0x0001
-#define RTLD_NOW 0x0002
-#define RTLD_GLOBAL 0x0004
-
-#ifndef NULL
-# define NULL 0
-#endif
-
-/* No need to pull in symbian_dll.cpp for this. */
-#define symbian_get_vars() ((void*)Dll::Tls())
-
-const TInt KPerlDllSetupFunction = 1;
-
-typedef struct {
- RLibrary handle;
- TInt error;
- HV* symbols;
-} PerlSymbianLibHandle;
-
-typedef void (*PerlSymbianLibInit)(void *);
-
-void* dlopen(const char *filename, int flags) {
- TBuf16<KMaxFileName> utf16fn;
- const TUint8* utf8fn = (const TUint8*)filename;
- PerlSymbianLibHandle* h = NULL;
- TInt error;
-
- error =
- CnvUtfConverter::ConvertToUnicodeFromUtf8(utf16fn, TPtrC8(utf8fn));
- if (error == KErrNone) {
- h = new PerlSymbianLibHandle;
- if (h) {
- h->error = KErrNone;
- h->symbols = (HV *)NULL;
- } else
- error = KErrNoMemory;
- }
-
- if (h && error == KErrNone) {
- error = (h->handle).Load(utf16fn);
- if (error == KErrNone) {
- TLibraryFunction init = (h->handle).Lookup(KPerlDllSetupFunction);
- ((PerlSymbianLibInit)init)(h);
- } else {
- free(h);
- h = NULL;
- }
- }
-
- if (h)
- h->error = error;
-
- return h;
-}
-
-void* dlsym(void *handle, const char *symbol) {
- if (handle) {
- dTHX;
- PerlSymbianLibHandle* h = (PerlSymbianLibHandle*)handle;
- HV* symbols = h->symbols;
- if (symbols) {
- SV** svp = hv_fetch(symbols, symbol, strlen(symbol), FALSE);
- if (svp && *svp && SvIOK(*svp)) {
- IV ord = SvIV(*svp);
- if (ord > 0)
- return (void*)((h->handle).Lookup(ord));
- }
- }
- }
- return NULL;
-}
-
-int dlclose(void *handle) {
- PerlSymbianLibHandle* h = (PerlSymbianLibHandle*)handle;
- if (h) {
- (h->handle).Close();
- if (h->symbols) {
- dTHX;
- hv_undef(h->symbols);
- h->symbols = NULL;
- }
- return 0;
- } else
- return 1;
-}
-
-const char* dlerror(void) {
- return 0; /* Bad interface: assumes static data. */
-}
-
-static void
-dl_private_init(pTHX)
-{
- (void)dl_generic_private_init(aTHX);
-}
-
-MODULE = DynaLoader PACKAGE = DynaLoader
-
-PROTOTYPES: ENABLE
-
-BOOT:
- (void)dl_private_init(aTHX);
-
-
-void
-dl_load_file(filename, flags=0)
- char * filename
- int flags
- PREINIT:
- PerlSymbianLibHandle* h;
- CODE:
-{
- ST(0) = sv_newmortal();
- h = (PerlSymbianLibHandle*)dlopen(filename, flags);
- if (h && h->error == KErrNone)
- sv_setiv(ST(0), PTR2IV(h));
- else
- SaveError(aTHX_ "(dl_load_file %s %d)"
- filename, h ? h->error : -1);
-}
-
-
-int
-dl_unload_file(libhandle)
- void * libhandle
- CODE:
- RETVAL = (dlclose(libhandle) == 0 ? 1 : 0);
- OUTPUT:
- RETVAL
-
-
-void
-dl_find_symbol(libhandle, symbolname, ign_err=0)
- void * libhandle
- char * symbolname
- int ign_err
- PREINIT:
- void *sym;
- CODE:
- PerlSymbianLibHandle* h = (PerlSymbianLibHandle*)libhandle;
- sym = dlsym(libhandle, symbolname);
- ST(0) = sv_newmortal();
- if (sym) {
- sv_setiv(ST(0), PTR2IV(sym));
- } else {
- if (!ign_err)
- SaveError(aTHX_ "(dl_find_symbol %s %d)",
- symbolname, h ? h->error : -1);
- }
-
-
-void
-dl_undef_symbols()
- CODE:
-
-
-
-# These functions should not need changing on any platform:
-
-void
-dl_install_xsub(perl_name, symref, filename="$Package")
- char * perl_name
- void * symref
- const char * filename
- CODE:
- ST(0) = sv_2mortal(newRV((SV*)newXS_flags(perl_name,
- (void(*)(pTHX_ CV *))symref,
- filename, NULL,
- XS_DYNAMIC_FILENAME)));
-
-
-SV *
-dl_error()
- CODE:
- dMY_CXT;
- RETVAL = newSVsv(MY_CXT.x_dl_last_error);
- OUTPUT:
- RETVAL
-
-#if defined(USE_ITHREADS)
-
-void
-CLONE(...)
- CODE:
- MY_CXT_CLONE;
-
- PERL_UNUSED_VAR(items);
-
- /* MY_CXT_CLONE just does a memcpy on the whole structure, so to avoid
- * using Perl variables that belong to another thread, we create our
- * own for this thread.
- */
- MY_CXT.x_dl_last_error = newSVpvs("");
-
-#endif
-
-# end.
diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL
index 84fd151d27..4f8acfee23 100644
--- a/ext/Errno/Errno_pm.PL
+++ b/ext/Errno/Errno_pm.PL
@@ -2,14 +2,11 @@ use ExtUtils::MakeMaker;
use Config;
use strict;
-our $VERSION = "1.30";
+our $VERSION = "1.31";
my %err = ();
-# Symbian cross-compiling environment.
-my $IsSymbian = exists $ENV{SDK} && -d "$ENV{SDK}\\epoc32";
-
-my $IsMSWin32 = $^O eq 'MSWin32' && !$IsSymbian;
+my $IsMSWin32 = $^O eq 'MSWin32';
unlink "Errno.pm" if -f "Errno.pm";
unlink "Errno.tmp" if -f "Errno.tmp";
@@ -148,10 +145,6 @@ sub get_files {
} elsif ($^O eq 'vos') {
# avoid problem where cpp returns non-POSIX pathnames
$file{'/system/include_library/errno.h'} = 1;
- } elsif ($IsSymbian) {
- my $SDK = $ENV{SDK};
- $SDK =~ s!\\!/!g;
- $file{"$SDK/epoc32/include/libc/sys/errno.h"} = 1;
} else {
open(CPPI, '>', 'errno.c') or
die "Cannot open errno.c";
@@ -244,12 +237,7 @@ sub write_errno_pm {
$inhibit_linemarkers;
open(CPPO,"$cpp errno.c |") or
die "Cannot run '$cpp errno.c'";
- } elsif ($IsSymbian) {
- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" .
- $inhibit_linemarkers ." -";
- open(CPPO,"$cpp < errno.c |")
- or die "Cannot exec $cpp";
- } else {
+ } else {
my $cpp = default_cpp() . $inhibit_linemarkers;
open(CPPO,"$cpp < errno.c |")
or die "Cannot exec $cpp";
diff --git a/perl.c b/perl.c
index 2013a76026..43fffaa04e 100644
--- a/perl.c
+++ b/perl.c
@@ -2480,7 +2480,7 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit)
if (xsinit)
(*xsinit)(aTHX); /* in case linked C routines want magical variables */
#ifndef PERL_MICRO
-#if defined(VMS) || defined(WIN32) || defined(DJGPP) || defined(__CYGWIN__) || defined(SYMBIAN)
+#if defined(VMS) || defined(WIN32) || defined(DJGPP) || defined(__CYGWIN__)
init_os_extras();
#endif
#endif
@@ -2505,9 +2505,6 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit)
* PL_utf8locale is conditionally turned on by
* locale.c:Perl_init_i18nl10n() if the environment
* look like the user wants to use UTF-8. */
-#if defined(__SYMBIAN32__)
- PL_unicode = PERL_UNICODE_STD_FLAG; /* See PERL_SYMBIAN_CONSOLE_UTF8. */
-#endif
# ifndef PERL_IS_MINIPERL
if (PL_unicode) {
/* Requires init_predump_symbols(). */
@@ -3861,10 +3858,6 @@ S_minus_v(pTHX)
PerlIO_printf(PIO_stdout,
"BS2000 (POSIX) port by Start Amadeus GmbH, 1998-1999\n");
#endif
-#ifdef __SYMBIAN32__
- PerlIO_printf(PIO_stdout,
- "Symbian port by Nokia, 2004-2005\n");
-#endif
#ifdef BINARY_BUILD_NOTICE
BINARY_BUILD_NOTICE;
#endif
@@ -4767,7 +4760,7 @@ S_init_perllib(pTHX)
}
}
-#if defined(DOSISH) || defined(__SYMBIAN32__)
+#if defined(DOSISH)
# define PERLLIB_SEP ';'
#elif defined(__VMS)
# define PERLLIB_SEP PL_perllib_sep
diff --git a/perl.h b/perl.h
index d1ecd986d0..626af97604 100644
--- a/perl.h
+++ b/perl.h
@@ -86,27 +86,6 @@
# undef _WIN32
#endif
-#if defined(__SYMBIAN32__) || (defined(__VC32__) && defined(WINS))
-# ifndef SYMBIAN
-# define SYMBIAN
-# endif
-#endif
-
-#ifdef __SYMBIAN32__
-# include "symbian/symbian_proto.h"
-#endif
-
-/* Any stack-challenged places. The limit varies (and often
- * is configurable), but using more than a kilobyte of stack
- * is usually dubious in these systems. */
-#if defined(__SYMBIAN32__)
-/* Symbian: need to work around the SDK features. *
- * On WINS: MS VC5 generates calls to _chkstk, *
- * if a "large" stack frame is allocated. *
- * gcc on MARM does not generate calls like these. */
-# define USE_HEAP_INSTEAD_OF_STACK
-#endif
-
/* Use the reentrant APIs like localtime_r and getpwent_r */
/* Win32 has naturally threadsafe libraries, no need to use any _r variants.
* XXX KEEP makedef.pl copy of this code in sync */
@@ -999,10 +978,6 @@ extern char **myenviron;
# include <sys/wait.h>
#endif
-#ifdef __SYMBIAN32__
-# undef _SC_ARG_MAX /* Symbian has _SC_ARG_MAX but no sysconf() */
-#endif
-
#if defined(HAS_SYSCALL) && !defined(HAS_SYSCALL_PROTO)
EXTERN_C int syscall(int, ...);
#endif
@@ -1176,7 +1151,7 @@ EXTERN_C int usleep(unsigned int);
#define PERL_USES_PL_PIDSTATUS
#endif
-#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP) && !defined(__SYMBIAN32__)
+#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP)
#define PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
#endif
@@ -1221,9 +1196,7 @@ EXTERN_C int usleep(unsigned int);
# define Ptrdiff_t SSize_t
#endif
-#ifndef __SYMBIAN32__
# include <string.h>
-#endif
/* This comes after <stdlib.h> so we don't try to change the standard
* library prototypes; we'll use our own in proto.h instead. */
@@ -2869,8 +2842,6 @@ typedef struct padname PADNAME;
# else
# include "vos/vosish.h"
# endif
-#elif defined(__SYMBIAN32__)
-# include "symbian/symbianish.h"
#elif defined(__HAIKU__)
# include "haiku/haikuish.h"
#else
@@ -4121,7 +4092,7 @@ my_swap16(const U16 x) {
#endif
#ifndef __cplusplus
-#if !(defined(WIN32) || defined(SYMBIAN))
+#if !defined(WIN32)
Uid_t getuid (void);
Uid_t geteuid (void);
Gid_t getgid (void);
diff --git a/perlio.c b/perlio.c
index 39481eeb10..4537a597d9 100644
--- a/perlio.c
+++ b/perlio.c
@@ -236,7 +236,7 @@ PerlIO_binmode(pTHX_ PerlIO *fp, int iotype, int mode, const char *names)
PerlIO *
PerlIO_fdupopen(pTHX_ PerlIO *f, CLONE_PARAMS *param, int flags)
{
-#if defined(PERL_MICRO) || defined(__SYMBIAN32__)
+#if defined(PERL_MICRO)
return NULL;
#elif defined(PERL_IMPLICIT_SYS)
return PerlSIO_fdupopen(f);
diff --git a/pod/perl.pod b/pod/perl.pod
index 0f99716f69..0aebd6ae0c 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -284,7 +284,6 @@ aux h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp
perlqnx Perl notes for QNX
perlriscos Perl notes for RISC OS
perlsolaris Perl notes for Solaris
- perlsymbian Perl notes for Symbian
perlsynology Perl notes for Synology
perltru64 Perl notes for Tru64
perlvms Perl notes for VMS
diff --git a/pod/perldiag.pod b/pod/perldiag.pod
index 2b2df17a1f..d7531e4ac2 100644
--- a/pod/perldiag.pod
+++ b/pod/perldiag.pod
@@ -2235,8 +2235,8 @@ variable and glob that.
=item exec? I'm not *that* kind of operating system
-(F) The C<exec> function is not implemented on some systems, e.g., Symbian
-OS. See L<perlport>.
+(F) The C<exec> function is not implemented on some systems, e.g.
+Catamount. See L<perlport>.
=item %sExecution of %s aborted due to compilation errors.
diff --git a/pod/perlport.pod b/pod/perlport.pod
index 1715eafa1b..a9809802fd 100644
--- a/pod/perlport.pod
+++ b/pod/perlport.pod
@@ -1655,9 +1655,6 @@ code.
(SunOS, Solaris, HP-UX)
Does not automatically flush output handles on some platforms.
-(Symbian OS)
-Not supported.
-
=item exit
(VMS)
@@ -2301,8 +2298,6 @@ F<ext/Win32CORE/t/win32core.t> - may fail on recent cygwin installs.
=back
-=item Symbian
-
=item NetBSD
=item FreeBSD
@@ -2333,8 +2328,6 @@ Caveats:
=back
-=item Symbian (Series 60 v3, 3.2 and 5 - what else?)
-
=item Stratus VOS / OpenVOS
=item AIX
diff --git a/pp_ctl.c b/pp_ctl.c
index c53dced86a..a77d785c02 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -4145,18 +4145,6 @@ S_require_file(pTHX_ SV *sv)
continue;
sv_setpv(namesv, unixdir);
sv_catpv(namesv, unixname);
-#elif defined(__SYMBIAN32__)
- if (PL_origfilename[0] &&
- PL_origfilename[1] == ':' &&
- !(dir[0] && dir[1] == ':'))
- Perl_sv_setpvf(aTHX_ namesv,
- "%c:%s\\%s",
- PL_origfilename[0],
- dir, name);
- else
- Perl_sv_setpvf(aTHX_ namesv,
- "%s\\%s",
- dir, name);
#else
/* The equivalent of
Perl_sv_setpvf(aTHX_ namesv, "%s/%s", dir, name);
diff --git a/pp_sys.c b/pp_sys.c
index a431bbe30b..9c153c8ec9 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -2705,30 +2705,16 @@ PP(pp_ssockopt)
PUSHs(sv);
break;
case OP_SSOCKOPT: {
-#if defined(__SYMBIAN32__)
-# define SETSOCKOPT_OPTION_VALUE_T void *
-#else
-# define SETSOCKOPT_OPTION_VALUE_T const char *
-#endif
- /* XXX TODO: We need to have a proper type (a Configure probe,
- * etc.) for what the C headers think of the third argument of
- * setsockopt(), the option_value read-only buffer: is it
- * a "char *", or a "void *", const or not. Some compilers
- * don't take kindly to e.g. assuming that "char *" implicitly
- * promotes to a "void *", or to explicitly promoting/demoting
- * consts to non/vice versa. The "const void *" is the SUS
- * definition, but that does not fly everywhere for the above
- * reasons. */
- SETSOCKOPT_OPTION_VALUE_T buf;
+ const char *buf;
int aint;
if (SvPOKp(sv)) {
STRLEN l;
- buf = (SETSOCKOPT_OPTION_VALUE_T) SvPV_const(sv, l);
+ buf = SvPV_const(sv, l);
len = l;
}
else {
aint = (int)SvIV(sv);
- buf = (SETSOCKOPT_OPTION_VALUE_T) &aint;
+ buf = (const char *) &aint;
len = sizeof(int);
}
if (PerlSock_setsockopt(fd, lvl, optname, buf, len) < 0)
@@ -4494,14 +4480,14 @@ PP(pp_system)
result = 0;
if (PL_op->op_flags & OPf_STACKED) {
SV * const really = *++MARK;
-# if defined(WIN32) || defined(OS2) || defined(__SYMBIAN32__) || defined(__VMS)
+# if defined(WIN32) || defined(OS2) || defined(__VMS)
value = (I32)do_aspawn(really, MARK, SP);
# else
value = (I32)do_aspawn(really, (void **)MARK, (void **)SP);
# endif
}
else if (SP - MARK != 1) {
-# if defined(WIN32) || defined(OS2) || defined(__SYMBIAN32__) || defined(__VMS)
+# if defined(WIN32) || defined(OS2) || defined(__VMS)
value = (I32)do_aspawn(NULL, MARK, SP);
# else
value = (I32)do_aspawn(NULL, (void **)MARK, (void **)SP);
diff --git a/proto.h b/proto.h
index 02ef4edb3b..f0d916c1fa 100644
--- a/proto.h
+++ b/proto.h
@@ -6894,7 +6894,7 @@ PERL_CALLCONV_NO_RET void win32_croak_not_implemented(const char * fname)
assert(fname)
#endif
-#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS)
+#if defined(WIN32) || defined(VMS)
PERL_CALLCONV int Perl_do_aspawn(pTHX_ SV* really, SV** mark, SV** sp);
#define PERL_ARGS_ASSERT_DO_ASPAWN \
assert(mark); assert(sp)
diff --git a/sv.c b/sv.c
index 494b77ca66..25cc4e6379 100644
--- a/sv.c
+++ b/sv.c
@@ -8854,13 +8854,7 @@ Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append)
else
{
/*The big, slow, and stupid way. */
-#ifdef USE_HEAP_INSTEAD_OF_STACK /* Even slower way. */
- STDCHAR *buf = NULL;
- Newx(buf, 8192, STDCHAR);
- assert(buf);
-#else
STDCHAR buf[8192];
-#endif
screamer2:
if (rslen) {
@@ -8909,9 +8903,6 @@ Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append)
goto screamer2;
}
-#ifdef USE_HEAP_INSTEAD_OF_STACK
- Safefree(buf);
-#endif
}
if (rspara) { /* have to do this both before and after */
diff --git a/symbian/PerlApp.cpp b/symbian/PerlApp.cpp
deleted file mode 100644
index ffca7afc52..0000000000
--- a/symbian/PerlApp.cpp
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Copyright (c) 2004-2005 Nokia. All rights reserved. */
-
-/* The PerlApp application is licensed under the same terms as Perl itself.
- *
- * Note that this PerlApp is for Symbian/Series 60/80/UIQ smartphones
- * and it has nothing whatsoever to do with the ActiveState PerlApp. */
-
-#include "PerlApp.h"
-
-#include <apparc.h>
-#include <e32base.h>
-#include <e32cons.h>
-#include <eikenv.h>
-#include <bautils.h>
-#include <eikappui.h>
-#include <utf.h>
-#include <f32file.h>
-
-#include <coemain.h>
-
-#ifndef PerlAppMinimal
-
-#include "PerlApp.hrh"
-
-#endif //#ifndef PerlAppMinimal
-
-#define PERL_GLOBAL_STRUCT
-#define PERL_GLOBAL_STRUCT_PRIVATE
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#include "PerlBase.h"
-#include "PerlUtil.h"
-
-#define symbian_get_vars() Dll::Tls() // Not visible from perlXYZ.lib?
-
-const TUid KPerlAppUid = {
-#ifdef PerlAppMinimalUid
- PerlAppMinimalUid
-#else
- 0x102015F6
-#endif
-};
-
-_LIT(KDefaultScript, "default.pl");
-
-#ifdef PerlAppMinimalName
-_LIT_NO_L(KAppName, PerlAppMinimalName);
-#else
-_LIT(KAppName, "PerlApp");
-#endif
-
-#ifndef PerlAppMinimal
-
-_LIT_NO_L(KFlavor, PERL_SYMBIANSDK_FLAVOR);
-_LIT(KAboutFormat,
- "Perl %d.%d.%d, Symbian port %d.%d.%d, built for %S SDK %d.%d");
-_LIT(KCopyrightFormat,
- "Copyright 1987-2005 Larry Wall and others, Symbian port Copyright Nokia 2004-2005");
-_LIT(KInboxPrefix, "\\System\\Mail\\");
-_LIT(KScriptPrefix, "\\Perl\\");
-
-_LIT8(KModulePrefix, SITELIB); // SITELIB from Perl config.h
-
-typedef TBuf<256> TMessageBuffer;
-typedef TBuf8<256> TPeekBuffer;
-typedef TBuf8<256> TFileName8;
-
-#endif // #ifndef PerlAppMinimal
-
-static void DoRunScriptL(TFileName aScriptName);
-
-TUid CPerlAppApplication::AppDllUid() const
-{
- return KPerlAppUid;
-}
-
-enum TPerlAppPanic
-{
- EPerlAppCommandUnknown = 1
-};
-
-void Panic(TPerlAppPanic aReason)
-{
- User::Panic(KAppName, aReason);
-}
-
-#ifndef PerlAppMinimal
-
-// The isXXX() come from the Perl headers.
-#define FILENAME_IS_ABSOLUTE(n) \
- (isALPHA(((n)[0])) && ((n)[1]) == ':' && ((n)[2]) == '\\')
-
-static TBool IsInPerl(TFileName aFileName)
-{
- TInt offset = aFileName.FindF(KScriptPrefix);
- return ((offset == 0 && // \foo
- aFileName[0] == '\\')
- ||
- (offset == 2 && // x:\foo
- FILENAME_IS_ABSOLUTE(aFileName)));
-}
-
-static TBool IsInInbox(TFileName aFileName)
-{
- TInt offset = aFileName.FindF(KInboxPrefix);
- return ((offset == 0 && // \foo
- aFileName[0] == '\\')
- ||
- (offset == 2 && // x:\foo
- FILENAME_IS_ABSOLUTE(aFileName)));
-}
-
-static TBool IsPerlModule(TParsePtrC aParsed)
-{
- return aParsed.Ext().CompareF(_L(".pm")) == 0;
-}
-
-static TBool IsPerlScript(TParsePtrC aParsed)
-{
- return aParsed.Ext().CompareF(_L(".pl")) == 0;
-}
-
-static void CopyFromInboxL(RFs aFs, const TFileName& aSrc, const TFileName& aDst)
-{
- TBool proceed = ETrue;
- TMessageBuffer message;
-
- message.Format(_L("%S is untrusted. Install only if you trust provider."), &aDst);
- if (CPerlUi::OkCancelDialogL(message)) {
- message.Format(_L("Install as %S?"), &aDst);
- if (CPerlUi::OkCancelDialogL(message)) {
- if (BaflUtils::FileExists(aFs, aDst)) {
- message.Format(_L("Replace old %S?"), &aDst);
- if (!CPerlUi::OkCancelDialogL(message))
- proceed = EFalse;
- }
- if (proceed) {
- // Create directory?
- TInt err = BaflUtils::CopyFile(aFs, aSrc, aDst);
- if (err == KErrNone) {
- message.Format(_L("Installed %S"), &aDst);
- CPerlUi::InformationNoteL(message);
- }
- else {
- message.Format(_L("Failure %d installing %S"), err, &aDst);
- CPerlUi::WarningNoteL(message);
- }
- }
- }
- }
-}
-
-static TBool FindPerlPackageName(TPeekBuffer aPeekBuffer, TInt aOff, TFileName& aFn)
-{
- aFn.SetMax();
- TInt m = aFn.MaxLength();
- TInt n = aPeekBuffer.Length();
- TInt i = 0;
- TInt j = aOff;
-
- aFn.SetMax();
- // The following is a little regular expression
- // engine that matches Perl package names.
- if (j < n && isSPACE(aPeekBuffer[j])) {
- while (j < n && isSPACE(aPeekBuffer[j])) j++;
- if (j < n && isALPHA(aPeekBuffer[j])) {
- while (j < n && isALNUM(aPeekBuffer[j])) {
- while (j < n &&
- isALNUM(aPeekBuffer[j]) &&
- i < m)
- aFn[i++] = aPeekBuffer[j++];
- if (j + 1 < n &&
- aPeekBuffer[j ] == ':' &&
- aPeekBuffer[j + 1] == ':' &&
- i < m) {
- aFn[i++] = '\\';
- j += 2;
- if (j < n &&
- isALPHA(aPeekBuffer[j])) {
- while (j < n &&
- isALNUM(aPeekBuffer[j]) &&
- i < m)
- aFn[i++] = aPeekBuffer[j++];
- }
- }
- }
- while (j < n && isSPACE(aPeekBuffer[j])) j++;
- if (j < n && aPeekBuffer[j] == ';' && i + 3 < m) {
- aFn.SetLength(i);
- aFn.Append(_L(".pm"));
- return ETrue;
- }
- }
- }
- return EFalse;
-}
-
-static void GuessPerlModule(TFileName& aGuess, TPeekBuffer aPeekBuffer, TParse aDrive)
-{
- TInt offset = aPeekBuffer.Find(_L8("package"));
- if (offset != KErrNotFound) {
- const TInt KPackageLen = 7;
- TFileName q;
-
- if (!FindPerlPackageName(aPeekBuffer, offset + KPackageLen, q))
- return;
-
- TFileName8 p;
- p.Copy(aDrive.Drive());
- p.Append(KModulePrefix);
-
- aGuess.SetMax();
- if (p.Length() + 1 + q.Length() < aGuess.MaxLength()) {
- TInt i = 0, j;
-
- for (j = 0; j < p.Length(); j++)
- aGuess[i++] = p[j];
- aGuess[i++] = '\\';
- for (j = 0; j < q.Length(); j++)
- aGuess[i++] = q[j];
- aGuess.SetLength(i);
- }
- else
- aGuess.SetLength(0);
- }
-}
-
-static TBool LooksLikePerlL(TPeekBuffer aPeekBuffer)
-{
- return aPeekBuffer.Left(2).Compare(_L8("#!")) == 0 &&
- aPeekBuffer.Find(_L8("perl")) != KErrNotFound;
-}
-
-static TBool InstallStuffL(const TFileName &aSrc, TParse aDrive, TParse aFile, TPeekBuffer aPeekBuffer, RFs aFs)
-{
- TFileName aDst;
- TPtrC drive = aDrive.Drive();
- TPtrC namext = aFile.NameAndExt();
-
- aDst.Format(_L("%S%S%S"), &drive, &KScriptPrefix, &namext);
- if (!IsPerlScript(aDst) && !LooksLikePerlL(aPeekBuffer)) {
- aDst.SetLength(0);
- if (IsPerlModule(aDst))
- GuessPerlModule(aDst, aPeekBuffer, aDrive);
- }
- if (aDst.Length() > 0) {
- CopyFromInboxL(aFs, aSrc, aDst);
- return ETrue;
- }
-
- return EFalse;
-}
-
-static TBool RunStuffL(const TFileName& aScriptName, TPeekBuffer aPeekBuffer)
-{
- TBool isModule = EFalse;
-
- if (IsInPerl(aScriptName) &&
- (IsPerlScript(aScriptName) ||
- (isModule = IsPerlModule(aScriptName)) ||
- LooksLikePerlL(aPeekBuffer))) {
- TMessageBuffer message;
-
- if (isModule)
- message.Format(_L("Really run module %S?"), &aScriptName);
- else
- message.Format(_L("Run %S?"), &aScriptName);
- if (CPerlUi::YesNoDialogL(message))
- DoRunScriptL(aScriptName);
- return ETrue;
- }
-
- return EFalse;
-}
-
-void CPerlAppAppUi::InstallOrRunL(const TFileName& aFileName)
-{
- TParse aFile;
- TParse aDrive;
- TMessageBuffer message;
-
- aFile.Set(aFileName, NULL, NULL);
- if (FILENAME_IS_ABSOLUTE(aFileName)) {
- aDrive.Set(aFileName, NULL, NULL);
- } else {
- TFileName appName =
- CEikonEnv::Static()->EikAppUi()->Application()->AppFullName();
- aDrive.Set(appName, NULL, NULL);
- }
- if (!iFs)
- iFs = &CEikonEnv::Static()->FsSession();
- RFile f;
- TInt err = f.Open(*iFs, aFileName, EFileRead);
- if (err == KErrNone) {
- TPeekBuffer aPeekBuffer;
- err = f.Read(aPeekBuffer);
- f.Close(); // Release quickly.
- if (err == KErrNone) {
- if (!(IsInInbox(aFileName) ?
- InstallStuffL(aFileName, aDrive, aFile, aPeekBuffer, *iFs) :
- RunStuffL(aFileName, aPeekBuffer))) {
- message.Format(_L("Failed for file %S"), &aFileName);
- CPerlUi::WarningNoteL(message);
- }
- } else {
- message.Format(_L("Error %d reading %S"), err, &aFileName);
- CPerlUi::WarningNoteL(message);
- }
- } else {
- message.Format(_L("Error %d opening %S"), err, &aFileName);
- CPerlUi::WarningNoteL(message);
- }
- if (iDoorObserver)
- delete CEikonEnv::Static()->EikAppUi();
- else
- Exit();
-}
-
-#endif /* #ifndef PerlAppMinimal */
-
-CPerlAppAppUi::~CPerlAppAppUi()
-{
- if (iAppView) {
- iEikonEnv->RemoveFromStack(iAppView);
- delete iAppView;
- iAppView = NULL;
- }
- if (iFs) {
- delete iFs;
- iFs = NULL;
- }
- if (iDoorObserver) // Otherwise the embedding application waits forever.
- iDoorObserver->NotifyExit(MApaEmbeddedDocObserver::EEmpty);
-}
-
-static void DoRunScriptL(TFileName aScriptName)
-{
- CPerlBase* perl = CPerlBase::NewInterpreterLC();
- TRAPD(error, perl->RunScriptL(aScriptName));
-#ifndef PerlAppMinimal
- if (error != KErrNone) {
- TMessageBuffer message;
- message.Format(_L("Error %d"), error);
- CPerlUi::YesNoDialogL(message);
- }
-#endif // #ifndef PerlAppMinimal
- CleanupStack::PopAndDestroy(perl);
-}
-
-#ifndef PerlAppMinimal
-
-void CPerlAppAppUi::OpenFileL(const TDesC& aFileName)
-{
- InstallOrRunL(aFileName);
- return;
-}
-
-#endif // #ifndef PerlAppMinimal
-
-TBool CPerlAppAppUi::ProcessCommandParametersL(TApaCommand aCommand, TFileName& /* aDocumentName */, const TDesC8& /* aTail */)
-{
- if (aCommand == EApaCommandRun) {
- TFileName appName = Application()->AppFullName();
- TParse p;
- p.Set(KDefaultScript, &appName, NULL);
- TEntry aEntry;
- RFs aFs;
- aFs.Connect();
- if (aFs.Entry(p.FullName(), aEntry) == KErrNone) {
- DoRunScriptL(p.FullName());
- Exit();
- }
- }
- return aCommand == EApaCommandOpen ? ETrue : EFalse;
-}
-
-#ifndef PerlAppMinimal
-
-void CPerlAppAppUi::SetFs(const RFs& aFs)
-{
- iFs = (RFs*) &aFs;
-}
-
-#endif // #ifndef PerlAppMinimal
-
-void CPerlAppAppUi::DoHandleCommandL(TInt aCommand) {
-#ifndef PerlAppMinimal
- TMessageBuffer message;
-#endif // #ifndef PerlAppMinimal
-
- switch(aCommand)
- {
-#ifndef PerlAppMinimal
- case EPerlAppCommandAbout:
- {
- message.Format(KAboutFormat,
- PERL_REVISION,
- PERL_VERSION,
- PERL_SUBVERSION,
- PERL_SYMBIANPORT_MAJOR,
- PERL_SYMBIANPORT_MINOR,
- PERL_SYMBIANPORT_PATCH,
- &KFlavor,
- PERL_SYMBIANSDK_MAJOR,
- PERL_SYMBIANSDK_MINOR
- );
- CPerlUi::InformationNoteL(message);
- }
- break;
- case EPerlAppCommandTime:
- {
- CPerlBase* perl = CPerlBase::NewInterpreterLC();
- const char *const argv[] =
- { "perl", "-le",
- "print 'Running in ', $^O, \"\\n\", scalar localtime" };
- perl->ParseAndRun(sizeof(argv)/sizeof(char*), (char **)argv, 0);
- CleanupStack::PopAndDestroy(perl);
- }
- break;
-#ifndef __UIQ__
- case EPerlAppCommandRunFile:
- {
- TFileName aScriptUtf16;
- aScriptUtf16.Copy(_L("C:\\"));
- if (CPerlUi::FileQueryDialogL(aScriptUtf16))
- DoRunScriptL(aScriptUtf16);
- }
- break;
-#endif
- case EPerlAppCommandOneLiner:
- {
-#ifdef __SERIES60__
- _LIT(prompt, "Oneliner:");
-#endif /* #ifdef __SERIES60__ */
-#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__)
- _LIT(prompt, "Code:"); // The title has "Oneliner" already.
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */
- CPerlAppAppUi* cAppUi =
- static_cast<CPerlAppAppUi*>(CEikonEnv::Static()->EikAppUi());
- if (CPerlUi::TextQueryDialogL(_L("Oneliner"),
- prompt,
- cAppUi->iOneLiner,
- KPerlUiOneLinerSize)) {
- const TUint KPerlUiUtf8Multi = 3; // Expansion multiplier.
- TBuf8<KPerlUiUtf8Multi * KPerlUiOneLinerSize> utf8;
-
- CnvUtfConverter::ConvertFromUnicodeToUtf8(utf8,
- cAppUi->iOneLiner);
- CPerlBase* perl = CPerlBase::NewInterpreterLC();
-#ifdef __SERIES90__
- int argc = 5;
-#else
- int argc = 3;
-#endif
- char **argv = (char**) malloc(argc * sizeof(char *));
- User::LeaveIfNull(argv);
-
- TCleanupItem argvCleanupItem = TCleanupItem(free, argv);
- CleanupStack::PushL(argvCleanupItem);
- argv[0] = (char *) "perl";
- argv[1] = (char *) "-le";
-#ifdef __SERIES90__
- argv[2] = (char *) "unshift @INC, 'C:/Mydocs';";
- argv[3] = (char *) "-e";
- argv[4] = (char *) utf8.PtrZ();
-#else
- argv[2] = (char *) utf8.PtrZ();
-#endif
- perl->ParseAndRun(argc, argv);
- CleanupStack::PopAndDestroy(2, perl);
- }
- }
- break;
- case EPerlAppCommandCopyright:
- {
- message.Format(KCopyrightFormat);
- CPerlUi::InformationNoteL(message);
- }
- break;
- case EPerlAppCommandAboutCopyright:
- {
- TMessageBuffer m1;
- TMessageBuffer m2;
- m1.Format(KAboutFormat,
- PERL_REVISION,
- PERL_VERSION,
- PERL_SUBVERSION,
- PERL_SYMBIANPORT_MAJOR,
- PERL_SYMBIANPORT_MINOR,
- PERL_SYMBIANPORT_PATCH,
- &KFlavor,
- PERL_SYMBIANSDK_MAJOR,
- PERL_SYMBIANSDK_MINOR
- );
- CPerlUi::InformationNoteL(m1);
- User::After((TTimeIntervalMicroSeconds32) (1000*1000)); // 1 sec.
- m2.Format(KCopyrightFormat);
- CPerlUi::InformationNoteL(m2);
- }
- break;
-#endif // #ifndef PerlAppMinimal
- default:
- Panic(EPerlAppCommandUnknown);
- }
-}
-
-CApaDocument* CPerlAppApplication::CreateDocumentL()
-{
- CPerlAppDocument* cDoc = new (ELeave) CPerlAppDocument(*this);
- return cDoc;
-}
-
-CEikAppUi* CPerlAppDocument::CreateAppUiL()
-{
- CPerlAppAppUi* cAppUi = new (ELeave) CPerlAppAppUi();
- return cAppUi;
-}
-
-
-#ifndef PerlAppMinimal
-
-CFileStore* CPerlAppDocument::OpenFileL(TBool aDoOpen, const TDesC& aFileName, RFs& aFs)
-{
- CPerlAppAppUi* cAppUi =
- static_cast<CPerlAppAppUi*>(CEikonEnv::Static()->EikAppUi());
- cAppUi->SetFs(aFs);
- if (aDoOpen)
- cAppUi->OpenFileL(aFileName);
- return NULL;
-}
-
-#endif // #ifndef PerlAppMinimal
-
-EXPORT_C CApaApplication* NewApplication()
-{
- return new CPerlAppApplication;
-}
-
-GLDEF_C TInt E32Dll(TDllReason /*aReason*/)
-{
- return KErrNone;
-}
-
diff --git a/symbian/PerlApp.h b/symbian/PerlApp.h
deleted file mode 100644
index cbf1963cf4..0000000000
--- a/symbian/PerlApp.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Copyright (c) 2004-2005 Nokia. All rights reserved. */
-
-/* The PerlApp application is licensed under the same terms as Perl itself. */
-
-#ifndef __PerlApp_h__
-#define __PerlApp_h__
-
-#include "PerlUi.h"
-
-/* The source code can be compiled into "PerlApp" which is the simple
- * 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 PerlAppMinimal
-# ifndef PerlAppMinimalUid
-# error PerlAppMinimal defined but PerlAppMinimalUid undefined
-# endif
-# ifndef PerlAppMinimalName
-# error PerlAppMinimal defined but PerlAppMinimalName undefined
-# endif
-#endif
-
-class CPerlAppDocument : public CgPerlUiDocument
-{
- public:
- CPerlAppDocument(CEikApplication& aApp) : CgPerlUiDocument(aApp) {;}
-#ifndef PerlAppMinimal
- CFileStore* OpenFileL(TBool aDoOpen, const TDesC& aFilename, RFs& aFs);
-#endif // #ifndef PerlAppMinimal
- private: // from CEikDocument
- CEikAppUi* CreateAppUiL();
-};
-
-class CPerlAppApplication : public CPerlUiApplication
-{
- private:
- CApaDocument* CreateDocumentL();
- TUid AppDllUid() const;
-};
-
-class CPerlAppAppView;
-
-class CPerlAppAppUi : public CPerlUiAppUi
-{
- public:
- TBool ProcessCommandParametersL(TApaCommand aCommand, TFileName& aDocumentName, const TDesC8& aTail);
- void DoHandleCommandL(TInt aCommand);
-#ifndef PerlAppMinimal
- void OpenFileL(const TDesC& aFileName);
- void InstallOrRunL(const TFileName& aFileName);
- void SetFs(const RFs& aFs);
-#endif // #ifndef PerlAppMinimal
- ~CPerlAppAppUi();
- private:
- RFs* iFs;
-};
-
-class CPerlAppAppView : public CPerlUiAppView
-{
- public:
-#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__)
- void HandleCommandL(TInt aCommand);
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */
-};
-
-#endif // __PerlApp_h__
diff --git a/symbian/PerlApp.hrh b/symbian/PerlApp.hrh
deleted file mode 100644
index fd37a96a37..0000000000
--- a/symbian/PerlApp.hrh
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright (c) 2004-2005 Nokia. All rights reserved. */
-
-/* The PerlApp application is licensed under the same terms as Perl itself. */
-
-#ifndef __PerlApp_HRH__
-#define __PerlApp_HRH__
-
-enum TPerlAppIds
-{
- EPerlAppCommandAbout = 1024, // start value must not be 0
- EPerlAppCommandTime = 1025,
- EPerlAppCommandRunFile = 1026,
- EPerlAppCommandOneLiner = 1027,
- EPerlAppCommandCopyright = 1028,
- EPerlAppCommandAboutCopyright = 1029,
- EPerlAppLast = 1099 // no comma here
-};
-
-#endif // __PerlApp_HRH__
diff --git a/symbian/PerlAppAif.rss b/symbian/PerlAppAif.rss
deleted file mode 100644
index 03e17cd5ba..0000000000
--- a/symbian/PerlAppAif.rss
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright (c) 2004-2005 Nokia. All rights reserved. */
-
-/* The PerlApp application is licensed under the same terms as Perl itself. */
-
-#include <aiftool.rh>
-
-RESOURCE AIF_DATA
-{
- app_uid = 0x102015F6;
- embeddability = KAppEmbeddable;
- hidden = KAppNotHidden;
- launch = KAppLaunchInForeground;
- newfile = KAppDoesNotSupportNewFile;
- datatype_list = {
- DATATYPE
- {
- priority = EDataTypePriorityNormal;
- type = "x-application/x-perl";
- }
- };
-}
diff --git a/symbian/PerlBase.cpp b/symbian/PerlBase.cpp
deleted file mode 100644
index 9312abeb55..0000000000
--- a/symbian/PerlBase.cpp
+++ /dev/null
@@ -1,425 +0,0 @@
-/* Copyright (c) 2004-2005 Nokia. All rights reserved. */
-
-/* The CPerlBase class is licensed under the same terms as Perl itself. */
-
-/* See PerlBase.pod for documentation. */
-
-#define PERLBASE_CPP
-
-#include <e32cons.h>
-#include <e32keys.h>
-#include <utf.h>
-
-#include "PerlBase.h"
-
-const TUint KPerlConsoleBufferMaxTChars = 0x0200;
-const TUint KPerlConsoleNoPos = 0xffff;
-
-CPerlBase::CPerlBase()
-{
-}
-
-EXPORT_C void CPerlBase::Destruct()
-{
- dTHX;
- iState = EPerlDestroying;
- if (iConsole) {
- iConsole->Printf(_L("[Any key to continue]"));
- iConsole->Getch();
- }
- if (iPerl) {
- (void)perl_destruct(iPerl);
- perl_free(iPerl);
- iPerl = NULL;
- PERL_SYS_TERM();
- }
- if (iConsole) {
- delete iConsole;
- iConsole = NULL;
- }
- if (iConsoleBuffer) {
- free(iConsoleBuffer);
- iConsoleBuffer = NULL;
- }
-#ifdef PERL_GLOBAL_STRUCT
- if (iVars) {
- PerlInterpreter* my_perl = NULL;
- free_global_struct(iVars);
- iVars = NULL;
- }
-#endif
-}
-
-CPerlBase::~CPerlBase()
-{
- Destruct();
-}
-
-EXPORT_C CPerlBase* CPerlBase::NewInterpreter(TBool aCloseStdlib,
- void (*aStdioInitFunc)(void*),
- void *aStdioInitCookie)
-{
- CPerlBase* self = new (ELeave) CPerlBase;
- self->iCloseStdlib = aCloseStdlib;
- self->iStdioInitFunc = aStdioInitFunc;
- self->iStdioInitCookie = aStdioInitCookie;
- self->ConstructL();
- PERL_APPCTX_SET(self);
- return self;
-}
-
-EXPORT_C CPerlBase* CPerlBase::NewInterpreterL(TBool aCloseStdlib,
- void (*aStdioInitFunc)(void*),
- void *aStdioInitCookie)
-{
- CPerlBase* self =
- CPerlBase::NewInterpreterLC(aCloseStdlib,
- aStdioInitFunc,
- aStdioInitCookie);
- CleanupStack::Pop(self);
- return self;
-}
-
-EXPORT_C CPerlBase* CPerlBase::NewInterpreterLC(TBool aCloseStdlib,
- void (*aStdioInitFunc)(void*),
- void *aStdioInitCookie)
-{
- CPerlBase* self = new (ELeave) CPerlBase;
- CleanupStack::PushL(self);
- self->iCloseStdlib = aCloseStdlib;
- self->iStdioInitFunc = aStdioInitFunc;
- self->iStdioInitCookie = aStdioInitCookie;
- self->ConstructL();
- PERL_APPCTX_SET(self);
- return self;
-}
-
-static int _console_stdin(void* cookie, char* buf, int n)
-{
- return ((CPerlBase*)cookie)->ConsoleRead(0, buf, n);
-}
-
-static int _console_stdout(void* cookie, const char* buf, int n)
-{
- return ((CPerlBase*)cookie)->ConsoleWrite(1, buf, n);
-}
-
-static int _console_stderr(void* cookie, const char* buf, int n)
-{
- return ((CPerlBase*)cookie)->ConsoleWrite(2, buf, n);
-}
-
-void CPerlBase::StdioRewire(void *arg) {
- _REENT->_sf[0]._cookie = (void*)this;
- _REENT->_sf[0]._read = &_console_stdin;
- _REENT->_sf[0]._write = 0;
- _REENT->_sf[0]._seek = 0;
- _REENT->_sf[0]._close = 0;
-
- _REENT->_sf[1]._cookie = (void*)this;
- _REENT->_sf[1]._read = 0;
- _REENT->_sf[1]._write = &_console_stdout;
- _REENT->_sf[1]._seek = 0;
- _REENT->_sf[1]._close = 0;
-
- _REENT->_sf[2]._cookie = (void*)this;
- _REENT->_sf[2]._read = 0;
- _REENT->_sf[2]._write = &_console_stderr;
- _REENT->_sf[2]._seek = 0;
- _REENT->_sf[2]._close = 0;
-}
-
-void CPerlBase::ConstructL()
-{
- iState = EPerlNone;
-#ifdef PERL_GLOBAL_STRUCT
- PerlInterpreter *my_perl = 0;
- iVars = init_global_struct();
- User::LeaveIfNull(iVars);
-#endif
- iPerl = perl_alloc();
- User::LeaveIfNull(iPerl);
- iState = EPerlAllocated;
- perl_construct(iPerl); // returns void
- if (!iStdioInitFunc) {
- iConsole =
- Console::NewL(_L("Perl Console"),
- TSize(KConsFullScreen, KConsFullScreen));
- iConsoleBuffer =
- (TUint16*)malloc(sizeof(TUint) *
- KPerlConsoleBufferMaxTChars);
- User::LeaveIfNull(iConsoleBuffer);
- iConsoleUsed = 0;
-#ifndef USE_PERLIO
- iStdioInitFunc = &StdioRewire;
-#endif
- }
- if (iStdioInitFunc)
- iStdioInitFunc(iStdioInitCookie);
- iReadFunc = NULL;
- iWriteFunc = NULL;
- iState = EPerlConstructed;
-}
-
-EXPORT_C PerlInterpreter* CPerlBase::GetInterpreter()
-{
- return (PerlInterpreter*) iPerl;
-}
-
-#ifdef PERL_MINIPERL
-static void boot_DynaLoader(pTHX_ CV* cv) { }
-#else
-EXTERN_C void boot_DynaLoader(pTHX_ CV* cv);
-#endif
-
-static void xs_init(pTHX)
-{
- dXSUB_SYS;
- newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, __FILE__);
-}
-
-EXPORT_C TInt CPerlBase::RunScriptL(const TDesC& aFileName,
- int argc,
- char **argv,
- char *envp[]) {
- TBuf8<KMaxFileName> scriptUtf8;
- TInt error;
- error = CnvUtfConverter::ConvertFromUnicodeToUtf8(scriptUtf8, aFileName);
- User::LeaveIfError(error);
- char *filename = (char*)scriptUtf8.PtrZ();
- struct stat st;
- if (stat(filename, &st) == -1)
- return KErrNotFound;
- if (argc < 2)
- return KErrGeneral; /* Anything better? */
- char **Argv = (char**)malloc(argc * sizeof(char*));
- User::LeaveIfNull(Argv);
- TCleanupItem ArgvCleanupItem = TCleanupItem(free, Argv);
- CleanupStack::PushL(ArgvCleanupItem);
- Argv[0] = "perl";
- if (argv && argc > 2)
- for (int i = 2; i < argc - 1; i++)
- Argv[i] = argv[i];
- Argv[argc - 1] = filename;
- error = this->ParseAndRun(argc, Argv, envp);
- CleanupStack::PopAndDestroy(Argv);
- Argv = 0;
- return error == 0 ? KErrNone : KErrGeneral;
-}
-
-
-EXPORT_C int CPerlBase::Parse(int argc, char *argv[], char *envp[])
-{
- if (iState == EPerlConstructed) {
- const char* const NullArgv[] = { "perl", "-e", "0" };
- if (argc == 0 || argv == 0) {
- argc = 3;
- argv = (char**) NullArgv;
- }
- PERL_SYS_INIT(&argc, &argv);
- int parsed = perl_parse(iPerl, xs_init, argc, argv, envp);
- if (parsed == 0)
- iState = EPerlParsed;
- return parsed;
- } else
- return -1;
-}
-
-EXPORT_C void CPerlBase::SetupExit()
-{
- if (iState == EPerlParsed) {
- diTHX;
- PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
- // PL_perl_destruct level of 2 would be nice but
- // it causes "Unbalanced scopes" for some reason.
- PL_perl_destruct_level = 1;
- }
-}
-
-EXPORT_C int CPerlBase::Run()
-{
- if (iState == EPerlParsed) {
- SetupExit();
- iState = EPerlRunning;
- int ran = perl_run(iPerl);
- iState = (ran == 0) ? EPerlSuccess : EPerlFailure;
- return ran;
- } else
- return -1;
-}
-
-EXPORT_C int CPerlBase::ParseAndRun(int argc, char *argv[], char *envp[])
-{
- int parsed = Parse(argc, argv, envp);
- int ran = (parsed == 0) ? Run() : -1;
- return ran;
-}
-
-int CPerlBase::ConsoleReadLine()
-{
- if (!iConsole)
- return -EIO;
-
- TUint currX = KPerlConsoleNoPos;
- TUint currY = KPerlConsoleNoPos;
- TUint prevX = KPerlConsoleNoPos;
- TUint prevY = KPerlConsoleNoPos;
- TUint maxX = KPerlConsoleNoPos;
- TUint offset = 0;
-
- for (;;) {
- TKeyCode code = iConsole->Getch();
-
- if (code == EKeyLineFeed || code == EKeyEnter) {
- if (offset < KPerlConsoleBufferMaxTChars) {
- iConsoleBuffer[offset++] = '\n';
- iConsole->Printf(_L("\n"));
- iConsoleBuffer[offset++] = 0;
- }
- break;
- }
- else {
- TBool doBackward = EFalse;
- TBool doBackspace = EFalse;
-
- prevX = currX;
- prevY = currY;
- if (code == EKeyBackspace) {
- if (offset > 0) {
- iConsoleBuffer[--offset] = 0;
- doBackward = ETrue;
- doBackspace = ETrue;
- }
- }
- else if (offset < KPerlConsoleBufferMaxTChars) {
- TChar ch = TChar(code);
-
- if (ch.IsPrint()) {
- iConsoleBuffer[offset++] = (unsigned short)code;
- iConsole->Printf(_L("%c"), code);
- }
- }
- currX = iConsole->WhereX();
- currY = iConsole->WhereY();
- if (maxX == KPerlConsoleNoPos && prevX != KPerlConsoleNoPos &&
- prevY != KPerlConsoleNoPos && currY == prevY + 1)
- maxX = prevX;
- if (doBackward) {
- if (currX > 0)
- iConsole->SetPos(currX - 1);
- else if (currY > 0)
- iConsole->SetPos(maxX, currY - 1);
- if (doBackspace) {
- TUint nowX = iConsole->WhereX();
- TUint nowY = iConsole->WhereY();
- iConsole->Printf(_L(" ")); /* scrub */
- iConsole->SetPos(nowX, nowY);
- }
- }
- }
- }
-
- return offset;
-}
-
-int CPerlBase::ConsoleRead(const int fd, char* buf, int n)
-{
- if (iReadFunc)
- return iReadFunc(fd, buf, n);
-
- if (!iConsole) {
- errno = EIO;
- return -1;
- }
-
- if (n < 0) {
- errno = EINVAL;
- return -1;
- }
-
- if (n == 0)
- return 0;
-
- TBuf8<4 * KPerlConsoleBufferMaxTChars> aBufferUtf8;
- TBuf16<KPerlConsoleBufferMaxTChars> aBufferUtf16;
- int length = ConsoleReadLine();
- int i;
-
- iConsoleUsed += length;
-
- aBufferUtf16.SetLength(length);
- for (i = 0; i < length; i++)
- aBufferUtf16[i] = iConsoleBuffer[i];
- aBufferUtf8.SetLength(4 * length);
-
- CnvUtfConverter::ConvertFromUnicodeToUtf8(aBufferUtf8, aBufferUtf16);
-
- char *pUtf8 = (char*)aBufferUtf8.PtrZ();
- int nUtf8 = aBufferUtf8.Size();
- if (nUtf8 > n)
- nUtf8 = n; /* Potential data loss. */
-#ifdef PERL_SYMBIAN_CONSOLE_UTF8
- for (i = 0; i < nUtf8; i++)
- buf[i] = pUtf8[i];
-#else
- dTHX;
- for (i = 0; i < nUtf8; i+= UTF8SKIP(pUtf8 + i)) {
- unsigned long u = utf8_to_uvchr_buf((U8*)(pUtf8 + i),
- (U8*)(pUtf8 + nUtf8),
- 0);
- if (u > 0xFF) {
- iConsole->Printf(_L("(keycode > 0xFF)\n"));
- buf[i] = 0;
- return -1;
- }
- buf[i] = u;
- }
-#endif
- if (nUtf8 < n)
- buf[nUtf8] = 0;
- return nUtf8;
-}
-
-int CPerlBase::ConsoleWrite(const int fd, const char* buf, int n)
-{
- if (iWriteFunc)
- return iWriteFunc(fd, buf, n);
-
- if (!iConsole) {
- errno = EIO;
- return -1;
- }
-
- if (n < 0) {
- errno = EINVAL;
- return -1;
- }
-
- if (n == 0)
- return 0;
-
- int wrote = 0;
-#ifdef PERL_SYMBIAN_CONSOLE_UTF8
- dTHX;
- if (is_utf8_string((U8*)buf, n)) {
- for (int i = 0; i < n; i += UTF8SKIP(buf + i)) {
- TChar u = valid_utf8_to_uvchr((U8*)(buf + i), 0);
- iConsole->Printf(_L("%c"), u);
- wrote++;
- }
- } else {
- iConsole->Printf(_L("(malformed utf8: "));
- for (int i = 0; i < n; i++)
- iConsole->Printf(_L("%02x "), buf[i]);
- iConsole->Printf(_L(")\n"));
- }
-#else
- for (int i = 0; i < n; i++) {
- iConsole->Printf(_L("%c"), buf[i]);
- }
- wrote = n;
-#endif
- iConsoleUsed += wrote;
- return n;
-}
-
diff --git a/symbian/PerlBase.h b/symbian/PerlBase.h
deleted file mode 100644
index 769958d3e4..0000000000
--- a/symbian/PerlBase.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/* Copyright (c) 2004-2005 Nokia. All rights reserved. */
-
-/* The CPerlBase class is licensed under the same terms as Perl itself. */
-
-/* See PerlBase.pod for documentation. */
-
-#ifndef __PerlBase_h__
-#define __PerlBase_h__
-
-#include <e32base.h>
-
-#if !defined(PERL_MINIPERL) && !defined(PERL_PERL)
-# ifndef PERL_IMPLICIT_CONTEXT
-# define PERL_IMPLICIT_CONTEXT
-# endif
-# ifndef PERL_MULTIPLICITY
-# define PERL_MULTIPLICITY
-# endif
-# ifndef PERL_GLOBAL_STRUCT
-# define PERL_GLOBAL_STRUCT
-# endif
-# ifndef PERL_GLOBAL_STRUCT_PRIVATE
-# define PERL_GLOBAL_STRUCT_PRIVATE
-# endif
-#endif
-
-#include "EXTERN.h"
-#include "perl.h"
-
-typedef enum {
- EPerlNone,
- EPerlAllocated,
- EPerlConstructed,
- EPerlParsed,
- EPerlRunning,
- EPerlTerminated,
- EPerlPaused,
- EPerlSuccess,
- EPerlFailure,
- EPerlDestroying
-} TPerlState;
-
-class PerlConsole;
-
-class CPerlBase : public CBase
-{
- public:
- CPerlBase();
- IMPORT_C virtual ~CPerlBase();
- IMPORT_C static CPerlBase* NewInterpreter(TBool aCloseStdlib = ETrue,
- void (*aStdioInitFunc)(void*) = NULL,
- void *aStdioInitCookie = NULL);
- IMPORT_C static CPerlBase* NewInterpreterL(TBool aCloseStdlib = ETrue,
- void (*aStdioInitFunc)(void*) = NULL,
- void *aStdioInitCookie = NULL);
- IMPORT_C static CPerlBase* NewInterpreterLC(TBool iCloseStdlib = ETrue,
- void (*aStdioInitFunc)(void*) = NULL,
- void *aStdioInitCookie = NULL);
- IMPORT_C TInt RunScriptL(const TDesC& aFileName, int argc = 2, char **argv = NULL, char *envp[] = NULL);
- IMPORT_C int Parse(int argc = 0, char *argv[] = NULL, char *envp[] = NULL);
- IMPORT_C void SetupExit();
- IMPORT_C int Run();
- IMPORT_C int ParseAndRun(int argc = 0, char *argv[] = 0, char *envp[] = 0);
- IMPORT_C void Destruct();
-
- IMPORT_C PerlInterpreter* GetInterpreter();
-
- // These two really should be private but when not using PERLIO
- // certain C callback functions of STDLIB need to be able to call
- // these. In general, all the console related functionality is
- // intentionally hidden and underdocumented.
- int ConsoleRead(const int fd, char* buf, int n);
- int ConsoleWrite(const int fd, const char* buf, int n);
-
- // Having these public does not feel right, but maybe someone needs
- // to do creative things with them.
- int (*iReadFunc)(const int fd, char *buf, int n);
- int (*iWriteFunc)(const int fd, const char *buf, int n);
-
- protected:
- PerlInterpreter* iPerl;
-#ifdef PERL_GLOBAL_STRUCT
- struct perl_vars* iVars;
-#else
- void* iAppCtx;
-#endif
- TPerlState iState;
-
- private:
- void ConstructL();
- CConsoleBase* iConsole; /* The screen. */
- TUint16* iConsoleBuffer; /* The UTF-16 characters. */
- TUint iConsoleUsed; /* How many in iConsoleBuffer. */
- TBool iCloseStdlib; /* Close STDLIB on exit? */
-
- void (*iStdioInitFunc)(void *);
- void* iStdioInitCookie;
-
- int ConsoleReadLine();
- void StdioRewire(void*);
-};
-
-#define diTHX PerlInterpreter* my_perl = iPerl
-#define diVAR struct perl_vars* my_vars = iVars
-
-#ifdef PERL_GLOBAL_STRUCT
-# define PERL_APPCTX_SET(c) ((c)->iVars->Gappctx = (c))
-#else
-# define PERL_APPCTX_SET(c) (PL_appctx = (c))
-#endif
-
-#undef Copy
-#undef CopyD /* For symmetry, not for Symbian reasons. */
-#undef New
-#define PerlCopy(s,d,n,t) (MEM_WRAP_CHECK(n,t), (void)memcpy((char*)(d),(char*)(s), (n) * sizeof(t)))
-#define PerlCopyD(s,d,n,t) (MEM_WRAP_CHECK(n,t), memcpy((char*)(d),(char*)(s), (n) * sizeof(t)))
-#define PerlNew(x,v,n,t) (v = (MEM_WRAP_CHECK(n,t), (t*)safemalloc((MEM_SIZE)((n)*sizeof(t)))))
-
-// This is like the Symbian _LIT() but without the embedded L prefix,
-// which enables using #defined constants (which need to carry their
-// own L prefix).
-#ifndef _LIT_NO_L
-# define _LIT_NO_L(n, s) static const TLitC<sizeof(s)/2> n={sizeof(s)/2-1,s}
-#endif // #ifndef _LIT_NO_L
-
-#endif /* #ifndef __PerlBase_h__ */
-
diff --git a/symbian/PerlBase.pod b/symbian/PerlBase.pod
deleted file mode 100644
index 70fc9afb4f..0000000000
--- a/symbian/PerlBase.pod
+++ /dev/null
@@ -1,204 +0,0 @@
-=head1 NAME
-
-CPerlBase - a C++ base class encapsulating a Perl interpreter in Symbian
-
-=head1 SYNOPSIS
-
- // in your App.mmp
- USERINCLUDE \symbian\perl\x.y.z\include
- LIBRARY perlXYZ.lib
-
- // in your App
- #include "PerlBase.h" // includes also EXTERN.h and perl.h
- CPerlBase* perl = CPerlBase::NewInterpreterLC();
- ...
- delete perl;
-
-=head1 DESCRIPTION
-
-CPerlBase is a simple Symbian C++ class that wraps a Perl
-interpreter; its creation, use, and destroying. To understand
-what this is doing, and how to use the interpreter, a fair knowledge
-of L<perlapi>, L<perlguts>, and L<perlembed> is recommended.
-
-One useful thing CPerlBase does compared with just using the raw
-Perl C API is that it redirects the "std streams" (STDOUT et alia)
-to a text console implementation which while being very basic
-is marginally more usable than the Symbian basic text console.
-
-=head2 The Basics
-
-=over 4
-
-=item *
-
-CPerlBase* NewInterpreterL();
-
-The constructor that does not keep the object in the Symbian "cleanup stack".
-perl_alloc() and perl_construct() are called behind the curtains.
-
-Accepts the same arguments as NewInterpreterLC().
-
-=item *
-
-CPerlBase* NewInterpreterLC();
-
-The constructor that keeps the object in the Symbian "cleanup stack".
-perl_alloc() and perl_construct() are called behind the curtains.
-
-Can have three arguments:
-
-=over 8
-
-=item *
-
-TBool aCloseStdlib = ETrue
-
-Should a CPerlBase close the Symbian POSIX STDLIB when closing down.
-Good for one-shot script execution, probably less good for longer term
-embedded interpreter.
-
-=item *
-
-void (*aStdioInitFunc)(void*) = NULL
-
-If set, called with aStdioInitCookie, and the default console is
-not created. You may want to set the iReadFunc() and iWriteFunc().
-
-=item *
-
-void *aStdioInitCookie = NULL
-
-Used as the argument for aStdioInitFunc().
-
-=back
-
-=item *
-
-void Destroy();
-
-The destructor of the interpreter. The class destructor calls
-first this and then the Symbian CloseSTDLIB().
-
-perl_destruct(), perl_free(), and PERL_SYS_TERM() are called
-behind the curtains.
-
-=back
-
-=head2 Utility functions
-
-=over 4
-
-=item *
-
-int Parse(int argc = 0, char *argv[] = 0, char *envp[] = 0);
-
-Prepare an interpreter for executing by parsing input as if a C main()
-had been called. For example to parse a script, use argc of 2 and argv
-of { "perl", script_name }.
-
-All arguments are optional: in case either argc or argv are zero,
-argc of 3 and argv of { "perl", "-e", "0" } is assumed.
-
-PERL_SYS_INIT() and perl_parse() are called behind the curtains.
-
-Note that a call to Parse() is required before Run().
-
-Returns zero if parsing was successful, non-zero if not (and the stderr
-will get the error).
-
-=item *
-
-int Run()
-
-Start executing an interpreter. A Parse() must have been called before
-a Run(): use 3 and { "", "-e", 0 } if you do not have an argv.
-
-Note that a call to Parse() is required before Run().
-
-perl_run() is called behind the curtains.
-
-Returns zero if execution was successful, non-zero if not (and the stderr
-will get the error).
-
-=item *
-
-int ParseAndRun(int argc, char *argv[], char *envp[]);
-
-Combined Parse() and Run(). The Run() is not run if the Parse() fails.
-
-Returns zero if parsing and execution were successful, non-zero if not.
-
-=item *
-
-TInt RunScriptL(TDesC& aFileName, int argc, char **argv, char *envp[])
-
-Like ParseAndRun() but works for Symbian filenames (UTF-16LE).
-The UTF-8 version of aFileName is always argv[argc-1], and argv[0]
-is always "perl".
-
-=back
-
-=head2 Macros
-
-=over 4
-
-=item *
-
-diTHX
-
-Set up my_perl from the current object (like dTHX).
-
-=item *
-
-diVAR
-
-Set up my_vars from the current object (like dVAR).
-
-=back
-
-=head2 Extending CPerlBase (subclassing, deriving from)
-
-Note that it probably isn't worth the trouble to try to wrap the
-whole, rather large, Perl C API into a C++ API. Just use the C API.
-
-The protected members of the class are:
-
-=over 4
-
-=item *
-
-PerlInterpreter* iPerl
-
-The Perl interpreter.
-
-=item *
-
-struct perl_vars* iVars
-
-The global variables of the interpreter.
-
-=item *
-
-TPerlState iState
-
-The state of the Perl interpreter. TPerlState is one of EPerlNone,
-EPerlAllocated, EPerlConstructed, EPerlParsed, EPerlRunning,
-EPerlTerminated, EPerlPaused (these two are currently unused
-but in the future they might be used to indicate that the interpreter
-was stopped either non-resumably or resumably for some reason),
-EPerlSuccess (perl_run() succeeded), EPerlFailure (perl_run() failed),
-EPerlDestroying.
-
-=back
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004-2005 Nokia. All rights reserved.
-
-=head1 LICENSE
-
-The CPerlBase class is licensed under the same terms as Perl itself.
-
-=cut
-
diff --git a/symbian/PerlRecog.cpp b/symbian/PerlRecog.cpp
deleted file mode 100644
index d2db54491b..0000000000
--- a/symbian/PerlRecog.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (c) 2004-2005 Nokia. All rights reserved. */
-
-/* The PerlRecog application is licensed under the same terms as Perl itself. */
-
-#include <apmrec.h>
-#include <apmstd.h>
-#include <f32file.h>
-
-const TUid KUidPerlRecog = { 0x102015F7 };
-_LIT8(KPerlMimeType, "x-application/x-perl");
-_LIT8(KPerlSig, "#!/usr/bin/perl");
-const TInt KPerlSigLen = 15;
-
-class CApaPerlRecognizer : public CApaDataRecognizerType {
- public:
- CApaPerlRecognizer():CApaDataRecognizerType(KUidPerlRecog, EHigh) {
- iCountDataTypes = 1;
- }
- virtual TUint PreferredBufSize() { return KPerlSigLen; }
- virtual TDataType SupportedDataTypeL(TInt /* aIndex */) const {
- return TDataType(KPerlMimeType);
- }
- private:
- virtual void DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer);
-};
-
-void CApaPerlRecognizer::DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer)
-{
- iConfidence = ENotRecognized;
-
- if (aBuffer.Length() >= KPerlSigLen &&
- aBuffer.Left(KPerlSigLen).Compare(KPerlSig) == 0) {
- iConfidence = ECertain;
- iDataType = TDataType(KPerlMimeType);
- } else {
- TParsePtrC p(aName);
-
- if ((p.Ext().CompareF(_L(".pl")) == 0) ||
- (p.Ext().CompareF(_L(".pm")) == 0)) {
- iConfidence = ECertain;
- iDataType = TDataType(KPerlMimeType);
- }
- }
-}
-
-EXPORT_C CApaDataRecognizerType* CreateRecognizer()
-{
- return new CApaPerlRecognizer;
-}
-
-GLDEF_C TInt E32Dll(TDllReason /* aReason */)
-{
- return KErrNone;
-}
-
-
-
diff --git a/symbian/PerlRecog.mmp b/symbian/PerlRecog.mmp
deleted file mode 100644
index 6850103b5b..0000000000
--- a/symbian/PerlRecog.mmp
+++ /dev/null
@@ -1,9 +0,0 @@
-TARGET PerlRecog.mdl
-TARGETTYPE mdl
-UID 0x10003A19 0x102015F7
-TARGETPATH \system\recogs
-SOURCE PerlRecog.cpp
-USERINCLUDE .
-SYSTEMINCLUDE \epoc32\include
-LIBRARY euser.lib efsrv.lib apmime.lib
-
diff --git a/symbian/PerlUi.cpp b/symbian/PerlUi.cpp
deleted file mode 100644
index 01be136d09..0000000000
--- a/symbian/PerlUi.cpp
+++ /dev/null
@@ -1,273 +0,0 @@
-/* Copyright (c) 2005 Nokia. All rights reserved. */
-
-/* The PerlUi class is licensed under the same terms as Perl itself. */
-
-#include "PerlUi.h"
-
-#ifdef __SERIES60__
-# include <avkon.hrh>
-# include <aknnotewrappers.h>
-# include <AknCommonDialogs.h>
-# ifndef __SERIES60_1X__
-# include <CAknFileSelectionDialog.h>
-# endif
-#endif /* #ifdef __SERIES60__ */
-
-#if defined(__SERIES80__) || defined(__SERIES90__)
-# include <eikon.hrh>
-# include <cknflash.h>
-# include <ckndgopn.h>
-# include <ckndgfob.h>
-# include <eiklabel.h>
-# include <cknconf.h>
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */
-
-#ifdef __UIQ__
-# include <qikon.hrh>
-# include <eikedwin.h>
-# include <eiklabel.h>
-#endif /* #ifdef __UIQ__ */
-
-#include <apparc.h>
-#include <e32base.h>
-#include <e32cons.h>
-#include <eikenv.h>
-#include <bautils.h>
-#include <eikappui.h>
-#include <utf.h>
-#include <f32file.h>
-
-#include <coemain.h>
-
-#include "PerlUi.hrh"
-#include "PerlUi.rsg"
-
-#if defined(__SERIES80__) || defined(__SERIES90__)
-#include "Eikon.rsg"
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#include "PerlBase.h"
-#include "PerlUtil.h"
-
-#define symbian_get_vars() Dll::Tls() // Not visible from perlXYZ.lib?
-
-_LIT(KDefaultScript, "default.pl");
-
-EXPORT_C void CPerlUiAppUi::ConstructL()
-{
- BaseConstructL();
- iAppView = CPerlUiAppView::NewL(ClientRect());
- AddToStackL(iAppView);
- CEikonEnv::Static()->DisableExitChecks(ETrue); // Symbian FAQ-0577.
-}
-
-EXPORT_C TBool CPerlUi::OkCancelDialogL(TDesC& aMessage)
-{
-#ifdef __SERIES60__
- CAknNoteDialog* dlg =
- new (ELeave) CAknNoteDialog(CAknNoteDialog::EConfirmationTone);
- dlg->PrepareLC(R_PERLUI_OK_CANCEL_DIALOG);
- dlg->SetTextL(aMessage);
- return dlg->RunDlgLD() == EAknSoftkeyOk;
-#endif /* #ifdef __SERIES60__ */
-#if defined(__SERIES80__) || defined(__SERIES90__)
- return CCknConfirmationDialog::RunDlgWithDefaultIconLD(aMessage, R_EIK_BUTTONS_CANCEL_OK);
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */
-#ifdef __UIQ__
- CEikDialog* dlg = new (ELeave) CEikDialog();
- return dlg->ExecuteLD(R_PERLUI_OK_CANCEL_DIALOG) == EEikBidOk;
-#endif /* #ifdef __UIQ__ */
-}
-
-EXPORT_C TBool CPerlUi::YesNoDialogL(TDesC& aMessage)
-{
-#ifdef __SERIES60__
- CAknNoteDialog* dlg =
- new (ELeave) CAknNoteDialog(CAknNoteDialog::EConfirmationTone);
- dlg->PrepareLC(R_PERLUI_YES_NO_DIALOG);
- dlg->SetTextL(aMessage);
- return dlg->RunDlgLD() == EAknSoftkeyOk;
-#endif /* #ifdef __SERIES60__ */
-#if defined(__SERIES80__) || defined(__SERIES90__)
- return CCknConfirmationDialog::RunDlgWithDefaultIconLD(aMessage, R_EIK_BUTTONS_NO_YES);
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */
-#ifdef __UIQ__
- CEikDialog* dlg = new (ELeave) CEikDialog();
- return dlg->ExecuteLD(R_PERLUI_YES_NO_DIALOG) == EEikBidOk;
-#endif /* #ifdef __UIQ__ */
-}
-
-EXPORT_C void CPerlUi::InformationNoteL(TDesC& aMessage)
-{
-#ifdef __SERIES60__
- CAknInformationNote* note = new (ELeave) CAknInformationNote;
- note->ExecuteLD(aMessage);
-#endif /* #ifdef __SERIES60__ */
-#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__)
- CEikonEnv::Static()->InfoMsg(aMessage);
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */
-}
-
-EXPORT_C TInt CPerlUi::WarningNoteL(TDesC& aMessage)
-{
-#ifdef __SERIES60__
- CAknWarningNote* note = new (ELeave) CAknWarningNote;
- return note->ExecuteLD(aMessage);
-#endif /* #ifdef __SERIES60__ */
-#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__)
- CEikonEnv::Static()->AlertWin(aMessage);
- return ETrue;
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */
-}
-
-#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__)
-
-CPerlUiTextQueryDialog::CPerlUiTextQueryDialog(HBufC*& aBuffer) :
- iData(aBuffer)
-{
-}
-
-TBool CPerlUiTextQueryDialog::OkToExitL(TInt /* aKeycode */)
-{
- iData = static_cast<CEikEdwin*>(Control(EPerlUiTextQueryInputField))->GetTextInHBufL();
- return ETrue;
-}
-
-void CPerlUiTextQueryDialog::PreLayoutDynInitL()
-{
- SetTitleL(iTitle);
- CEikLabel* promptLabel = ControlCaption(EPerlUiTextQueryInputField);
- promptLabel->SetTextL(iPrompt);
-}
-
-/* TODO: OfferKeyEventL() so that newline can be seen as 'OK'.
- * Or a hotkey for the button? */
-
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */
-
-EXPORT_C TBool CPerlUi::TextQueryDialogL(const TDesC& aTitle, const TDesC& aPrompt, TDes& aData, const TInt aMaxLength)
-{
-#ifdef __SERIES60__
- CAknTextQueryDialog* dlg =
- new (ELeave) CAknTextQueryDialog(aData);
- dlg->SetPromptL(aPrompt);
- dlg->SetMaxLength(aMaxLength);
- return dlg->ExecuteLD(R_PERLUI_TEXT_QUERY_DIALOG);
-#endif /* #ifdef __SERIES60__ */
-#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__)
- HBufC* data = NULL;
- CPerlUiTextQueryDialog* dlg =
- new (ELeave) CPerlUiTextQueryDialog(data);
- dlg->iTitle.Set(aTitle);
- dlg->iPrompt.Set(aPrompt);
- dlg->iMaxLength = aMaxLength;
- if (dlg->ExecuteLD(R_PERLUI_ONELINER_DIALOG)) {
- aData.Copy(*data);
- return ETrue;
- }
- return EFalse;
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */
-}
-
-EXPORT_C TBool CPerlUi::FileQueryDialogL(TDes& aFilename)
-{
-#ifdef __SERIES60__
- return AknCommonDialogs::RunSelectDlgLD(aFilename,
- R_PERLUI_FILE_SELECTION_DIALOG);
-#endif /* #ifdef __SERIES60__ */
-#if defined(__SERIES80__) || defined(__SERIES90__)
- 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 /* #if defined(__SERIES80__) || defined(__SERIES90__) */
-#ifdef __UIQ__
- return EFalse; // No filesystem access in UIQ 2.x!
-#endif /* #ifdef __UIQ__ */
-}
-
-#ifdef __SERIES60__
-
-EXPORT_C void CPerlUiAppUi::HandleCommandL(TInt aCommand)
-{
- switch(aCommand)
- {
- case EEikCmdExit:
- case EAknSoftkeyExit:
- Exit();
- break;
- default:
- DoHandleCommandL(aCommand);
- break;
- }
-}
-
-#endif /* #ifdef __SERIES60__ */
-
-#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__)
-
-EXPORT_C void CPerlUiAppView::HandleCommandL(TInt aCommand, CPerlUiAppUi* aAppUi) {
- aAppUi->DoHandleCommandL(aCommand);
-}
-
-EXPORT_C void CPerlUiAppUi::HandleCommandL(TInt aCommand) {
- switch(aCommand)
- {
- case EEikCmdExit:
- Exit();
- break;
- default:
- iAppView->HandleCommandL(aCommand, this);
- break;
- }
-}
-
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */
-
-CPerlUiAppView* CPerlUiAppView::NewL(const TRect& aRect)
-{
- CPerlUiAppView* self = CPerlUiAppView::NewLC(aRect);
- CleanupStack::Pop(self);
- return self;
-}
-
-CPerlUiAppView* CPerlUiAppView::NewLC(const TRect& aRect)
-{
- CPerlUiAppView* self = new (ELeave) CPerlUiAppView;
- CleanupStack::PushL(self);
- self->ConstructL(aRect);
- return self;
-}
-
-void CPerlUiAppView::ConstructL(const TRect& aRect)
-{
- CreateWindowL();
- SetRect(aRect);
- ActivateL();
-}
-
-CPerlUiAppView::~CPerlUiAppView()
-{
-}
-
-void CPerlUiAppView::Draw(const TRect& /*aRect*/) const
-{
- CWindowGc& gc = SystemGc();
- TRect rect = Rect();
- gc.Clear(rect);
-}
-
diff --git a/symbian/PerlUi.h b/symbian/PerlUi.h
deleted file mode 100644
index 9a5002032f..0000000000
--- a/symbian/PerlUi.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright (c) 2005 Nokia. All rights reserved. */
-
-/* The PerlUi class is licensed under the same terms as Perl itself. */
-
-#ifndef __PerlUi_h__
-#define __PerlUi_h__
-
-#ifdef __SERIES60__
-# include <aknapp.h>
-# include <aknappui.h>
-# include <akndoc.h>
-#endif /* #ifdef __SERIES60__ */
-
-#if defined(__SERIES80__) || defined(__SERIES90__)
-# include <eikapp.h>
-# include <eikappui.h>
-# include <eikdoc.h>
-# include <eikbctrl.h>
-# include <eikgted.h>
-# include <eikdialg.h>
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */
-
-#ifdef __UIQ__
-# include <qikapplication.h>
-# include <qikappui.h>
-# include <qikdocument.h>
-# include <eikdialg.h>
-#endif /* #ifdef __UIQ____ */
-
-#include <coecntrl.h>
-#include <f32file.h>
-
-#ifdef __SERIES60__
-# define CgPerlUiDocument CAknDocument
-# define CgPerlUiApplication CAknApplication
-# define CgPerlUiAppUi CAknAppUi
-# define CgPerlUiNoteDialog CAknNoteDialog
-# define CgPerlUiAppView CCoeControl
-#endif /* #ifdef __SERIES60__ */
-
-#if defined(__SERIES80__) || defined(__SERIES90__)
-# define CgPerlUiDocument CEikDocument
-# define CgPerlUiApplication CEikApplication
-# define CgPerlUiAppUi CEikAppUi
-# define CgPerlUiNoteDialog CCknFlashingDialog
-# define CgPerlUiAppView CEikBorderedControl
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */
-
-#ifdef __UIQ__
-# define CgPerlUiDocument CEikDocument
-# define CgPerlUiApplication CQikApplication
-# define CgPerlUiAppUi CQikAppUi
-# define CgPerlUiNoteDialog CCknFlashingDialog
-# define CgPerlUiAppView CCoeControl
-#endif /* #ifdef __UIQ__ */
-
-class CPerlUiApplication : public CgPerlUiApplication
-{
-};
-
-const TUint KPerlUiPromptSize = 20;
-const TUint KPerlUiOneLinerSize = 128;
-
-class CPerlUiAppView;
-
-class CPerlUiAppUi : public CgPerlUiAppUi
-{
- public:
- IMPORT_C void ConstructL();
- void virtual DoHandleCommandL(TInt aCommand) = 0;
- IMPORT_C void HandleCommandL(TInt aCommand);
- TBuf<KPerlUiOneLinerSize> iOneLiner; // Perl code to evaluate.
- CPerlUiAppView* iAppView;
-};
-
-class CPerlUiAppView : public CgPerlUiAppView
-{
- public:
- static CPerlUiAppView* NewL(const TRect& aRect);
- static CPerlUiAppView* NewLC(const TRect& aRect);
- ~CPerlUiAppView();
- void Draw(const TRect& aRect) const;
-#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__)
- IMPORT_C void HandleCommandL(TInt aCommand, CPerlUiAppUi* aAppUi);
-#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */
- private:
- void ConstructL(const TRect& aRect);
-};
-
-#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__)
-
-class CPerlUiTextQueryDialog : public CEikDialog
-{
- public:
- CPerlUiTextQueryDialog(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 /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */
-
-class CPerlUi : public CgPerlUiAppUi
-{
- public:
- IMPORT_C static TBool OkCancelDialogL(TDesC& aMessage);
- IMPORT_C static TBool YesNoDialogL(TDesC& aMessage);
- IMPORT_C static void InformationNoteL(TDesC& aMessage);
- IMPORT_C static TInt WarningNoteL(TDesC& aMessage);
- IMPORT_C static TBool TextQueryDialogL(const TDesC& aTitle, const TDesC& aPrompt, TDes& aData, const TInt aMaxLength);
- IMPORT_C static TBool FileQueryDialogL(TDes& aFilename);
-};
-
-#endif // __PerlUi_h__
diff --git a/symbian/PerlUi.hrh b/symbian/PerlUi.hrh
deleted file mode 100644
index edb657d9e2..0000000000
--- a/symbian/PerlUi.hrh
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Copyright (c) 2005 Nokia. All rights reserved. */
-
-/* The PerlUi class is licensed under the same terms as Perl itself. */
-
-#ifndef __PerlUi_HRH__
-#define __PerlUi_HRH__
-
-enum TPerlUiIds
-{
- EPerlUiTextQueryInputField = 2048,
- EPerlUiLast = 2099 // no comma here
-};
-
-#endif // __PerlUi_HRH__
diff --git a/symbian/PerlUiS60.rss b/symbian/PerlUiS60.rss
deleted file mode 100644
index 757fb33740..0000000000
--- a/symbian/PerlUiS60.rss
+++ /dev/null
@@ -1,144 +0,0 @@
-/* Copyright (c) 2004-2005 Nokia. All rights reserved. */
-
-/* The PerlUi class is licensed under the same terms as Perl itself. */
-
-/* The S60 definitions. */
-
-NAME PERL
-
-#include <eikon.rh>
-#include <avkon.rh>
-#include <avkon.rsg>
-
-#include "PerlUi.hrh"
-#include "PerlApp.hrh"
-
-RESOURCE RSS_SIGNATURE
-{
-}
-
-RESOURCE TBUF r_default_document_name
-{
- buf = "";
-}
-
-RESOURCE EIK_APP_INFO
-{
- menubar = r_Perl_menubar;
- cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;
-}
-
-
-RESOURCE MENU_BAR r_Perl_menubar
-{
- titles = {
- MENU_TITLE
- {
- menu_pane = r_Perl_menu;
- }
- };
-}
-
-
-RESOURCE MENU_PANE r_Perl_menu
-{
- items = {
- MENU_ITEM {
- command = EPerlAppCommandAbout;
- txt = "About";
- },
- MENU_ITEM {
- command = EPerlAppCommandTime;
- txt = "Time";
- },
- MENU_ITEM {
- command = EPerlAppCommandRunFile;
- txt = "Run";
- },
- MENU_ITEM {
- command = EPerlAppCommandOneLiner;
- txt = "Oneliner";
- },
- MENU_ITEM {
- command = EPerlAppCommandCopyright;
- txt = "Copyright";
- }
- };
-}
-
-RESOURCE DIALOG r_perlui_ok_cancel_dialog
-{
- flags = EEikDialogFlagWait | EEikDialogFlagCbaButtons;
- buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
- items = {
- DLG_LINE
- {
- type = EAknCtNote;
- id = EGeneralNote;
- control = AVKON_NOTE
- {
- layout = EGeneralLayout;
- };
- }
- };
-}
-
-RESOURCE DIALOG r_perlui_yes_no_dialog
-{
- flags = EEikDialogFlagWait | EEikDialogFlagCbaButtons;
- buttons = R_AVKON_SOFTKEYS_YES_NO;
- items = {
- DLG_LINE
- {
- type = EAknCtNote;
- id = EGeneralNote;
- control = AVKON_NOTE
- {
- layout = EGeneralLayout;
- };
- }
- };
-}
-
-RESOURCE DIALOG r_perlui_text_query_dialog
-{
- flags = EGeneralQueryFlags;
- buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
- items = {
- DLG_LINE
- {
- type = EAknCtQuery;
- id = EGeneralQuery;
- control = AVKON_DATA_QUERY
- {
- layout = EDataLayout;
- control = EDWIN {};
- };
- }
- };
-}
-
-RESOURCE AVKON_LIST_QUERY r_perlui_list_query_dialog
-{
- flags = EGeneralQueryFlags;
- softkeys = R_AVKON_SOFTKEYS_OK_CANCEL;
- items = {
- DLG_LINE
- {
- type = EAknCtListQueryControl;
- id = EListQueryControl;
- control = AVKON_LIST_QUERY_CONTROL
- {
- listtype = EAknCtSinglePopupMenuListBox;
- };
- }
- };
-}
-
-#include <CommonDialogs.hrh>
-#include <CommonDialogs.rh>
-
-RESOURCE MEMORYSELECTIONDIALOG r_perlui_file_selection_dialog
-{
-}
-
diff --git a/symbian/PerlUiS80.rss b/symbian/PerlUiS80.rss
deleted file mode 100644
index 8028311f35..0000000000
--- a/symbian/PerlUiS80.rss
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright (c) 2004-2005 Nokia. All rights reserved. */
-
-/* The PerlUi class is licensed under the same terms as Perl itself. */
-
-/* The S80 definitions. */
-
-NAME PERL
-
-#include <eikon.rh>
-#include <eikon.rsg>
-
-#include "PerlUi.hrh"
-#include "PerlApp.hrh"
-
-RESOURCE RSS_SIGNATURE
-{
-}
-
-RESOURCE TBUF r_default_document_name
-{
- buf = "";
-}
-
-RESOURCE EIK_APP_INFO
-{
- menubar = r_perlui_menubar;
- cba = r_perlui_cba;
-}
-
-RESOURCE CBA r_perlui_cba
-{
- buttons = {
- CBA_BUTTON { id = EPerlAppCommandRunFile; txt = "Run"; },
- CBA_BUTTON { id = EPerlAppCommandOneLiner; txt = "Oneliner"; },
- CBA_BUTTON { id = EPerlAppCommandAboutCopyright; txt = "About"; },
- CBA_BUTTON { id = EEikCmdExit; txt = "Exit"; }
- };
-}
-
-
-RESOURCE MENU_BAR r_perlui_menubar
-{
- titles = {
- MENU_TITLE
- {
- menu_pane = r_perlui_menu; txt = "Options";
- }
- };
-}
-
-
-RESOURCE MENU_PANE r_perlui_menu
-{
- items = {
- MENU_ITEM {
- command = EPerlAppCommandAbout;
- txt = "About";
- },
- MENU_ITEM {
- command = EPerlAppCommandTime;
- txt = "Time";
- },
- MENU_ITEM {
- command = EPerlAppCommandRunFile;
- txt = "Run";
- },
- MENU_ITEM {
- command = EPerlAppCommandOneLiner;
- txt = "Oneliner";
- },
- MENU_ITEM {
- command = EPerlAppCommandCopyright;
- txt = "Copyright";
- }
- };
-}
-
-RESOURCE DIALOG r_perlui_oneliner_dialog
-{
- title = "Title";
- buttons = R_EIK_BUTTONS_CANCEL_OK;
- flags = EEikDialogFlagWait;
- items = {
- DLG_LINE {
- type = EEikCtEdwin;
- prompt = "Prompt";
- id = EPerlUiTextQueryInputField;
- control = EDWIN {
- width = 10;
- maxlength = 128;
- };
- }
- };
-}
-
diff --git a/symbian/PerlUiS90.rss b/symbian/PerlUiS90.rss
deleted file mode 100644
index 28f71dd109..0000000000
--- a/symbian/PerlUiS90.rss
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright (c) 2006 Alexander Smishlajev. All rights reserved. */
-
-/* The PerlUi class is licensed under the same terms as Perl itself. */
-
-/* The S90 definitions. */
-
-NAME PERL
-
-#include <eikon.rh>
-#include <eikon.rsg>
-
-#include "PerlUi.hrh"
-#include "PerlApp.hrh"
-
-RESOURCE RSS_SIGNATURE
-{
-}
-
-RESOURCE TBUF r_default_document_name
-{
- buf = "";
-}
-
-RESOURCE EIK_APP_INFO
-{
- menubar = r_perlui_menubar;
- cba = r_perlui_cba;
-}
-
-RESOURCE CBA r_perlui_cba
-{
- buttons = {
- CBA_BUTTON { id = EPerlAppCommandRunFile; txt = "Run"; },
- CBA_BUTTON { id = EPerlAppCommandOneLiner; txt = "Oneliner"; },
- CBA_BUTTON { id = EPerlAppCommandAboutCopyright; txt = "About"; },
- CBA_BUTTON { id = EEikCmdExit; txt = "Exit"; }
- };
-}
-
-
-RESOURCE MENU_BAR r_perlui_menubar
-{
- titles = {
- MENU_TITLE
- {
- menu_pane = r_perlui_menu; txt = "Options";
- }
- };
-}
-
-
-RESOURCE MENU_PANE r_perlui_menu
-{
- items = {
- MENU_ITEM {
- command = EPerlAppCommandAbout;
- txt = "About";
- },
- MENU_ITEM {
- command = EPerlAppCommandTime;
- txt = "Time";
- },
- MENU_ITEM {
- command = EPerlAppCommandRunFile;
- txt = "Run";
- },
- MENU_ITEM {
- command = EPerlAppCommandOneLiner;
- txt = "Oneliner";
- },
- MENU_ITEM {
- command = EPerlAppCommandCopyright;
- txt = "Copyright";
- }
- };
-}
-
-RESOURCE DIALOG r_perlui_oneliner_dialog
-{
- title = "Title";
- buttons = R_EIK_BUTTONS_CANCEL_OK;
- flags = EEikDialogFlagWait;
- items = {
- DLG_LINE {
- type = EEikCtEdwin;
- prompt = "Prompt";
- id = EPerlUiTextQueryInputField;
- control = EDWIN {
- width = 10;
- maxlength = 128;
- };
- }
- };
-}
-
diff --git a/symbian/PerlUiUIQ.rss b/symbian/PerlUiUIQ.rss
deleted file mode 100644
index 55362a99f7..0000000000
--- a/symbian/PerlUiUIQ.rss
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Copyright (c) 200-2005 Nokia. All rights reserved. */
-
-/* The PerlUi class is licensed under the same terms as Perl itself. */
-
-/* The UIQ definitions. */
-
-NAME PERL
-
-#include <eikon.rh>
-#include <eikcore.rsg>
-#include <qikon.rh>
-
-#include "PerlUi.hrh"
-#include "PerlApp.hrh"
-
-RESOURCE RSS_SIGNATURE
-{
-}
-
-RESOURCE TBUF r_default_document_name
-{
- buf = "";
-}
-
-RESOURCE EIK_APP_INFO
-{
- menubar = r_perlui_menubar;
- toolbar = r_perlui_menubar;
-}
-
-
-RESOURCE MENU_BAR r_perlui_menubar
-{
- titles = {
- MENU_TITLE
- {
- menu_pane = r_perlui_menu; txt = "Options";
- }
- };
-}
-
-
-RESOURCE MENU_PANE r_perlui_menu
-{
- items = {
- MENU_ITEM {
- command = EPerlAppCommandAbout;
- txt = "About";
- },
- MENU_ITEM {
- command = EPerlAppCommandTime;
- txt = "Time";
- },
- MENU_ITEM {
- command = EPerlAppCommandOneLiner;
- txt = "Oneliner";
- },
- MENU_ITEM {
- command = EPerlAppCommandCopyright;
- txt = "Copyright";
- }
- };
-}
-
-RESOURCE DIALOG r_perlui_oneliner_dialog
-{
- title = "Title";
- buttons = R_EIK_BUTTONS_CANCEL_OK;
- flags = EEikDialogFlagWait;
- items = {
- DLG_LINE {
- type = EEikCtEdwin;
- prompt = "Prompt";
- id = EPerlUiTextQueryInputField;
- control = EDWIN {
- width = 10;
- maxlength = 128;
- };
- }
- };
-}
-
-RESOURCE DIALOG r_perlui_ok_cancel_dialog
-{
- title = "OK / Cancel ?";
- buttons = r_perlui_ok_cancel_buttons;
-}
-
-RESOURCE DLG_BUTTONS r_perlui_ok_cancel_buttons
-{
- buttons = {
- DLG_BUTTON {
- id = EEikBidOk;
- button = CMBUT { txt = "Ok"; };
- },
- DLG_BUTTON {
- id = EEikBidCancel;
- button = CMBUT { txt = "Cancel"; };
- }
- };
-}
-
-RESOURCE DIALOG r_perlui_yes_no_dialog
-{
- title = "Yes / No ?";
- buttons = r_perlui_yes_no_buttons;
-}
-
-RESOURCE DLG_BUTTONS r_perlui_yes_no_buttons
-{
- buttons = {
- DLG_BUTTON {
- id = EEikBidOk;
- button = CMBUT { txt = "Yes"; };
- },
- DLG_BUTTON {
- id = EEikBidCancel;
- button = CMBUT { txt = "No"; };
- }
- };
-}
-
-
-
diff --git a/symbian/PerlUtil.cpp b/symbian/PerlUtil.cpp
deleted file mode 100644
index b979072749..0000000000
--- a/symbian/PerlUtil.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Copyright (c) 2004-2005 Nokia. All rights reserved. */
-
-/* The PerlUtil class is licensed under the same terms as Perl itself. */
-
-/* See PerlUtil.pod for documentation. */
-
-#define PERLUTIL_CPP
-
-#include "PerlUtil.h"
-
-#include <utf.h>
-
-#undef Copy
-#undef New
-
-EXPORT_C SV* PerlUtil::newSvPVfromTDesC8(const TDesC8& aDesC8) {
- dTHX;
- return newSVpvn((const char *)aDesC8.Ptr(), aDesC8.Size());
-}
-
-EXPORT_C void PerlUtil::setSvPVfromTDesC8(SV* sv, const TDesC8& aDesC8) {
- dTHX;
- sv_setpvn(sv, (const char *)aDesC8.Ptr(), aDesC8.Size());
-}
-
-EXPORT_C HBufC8* PerlUtil::newHBufC8fromSvPV(SV* sv) {
- dTHX;
- return PerlUtil::newHBufC8fromPVn((const U8 *)SvPV_nolen(sv), SvLEN(sv));
-}
-
-EXPORT_C void PerlUtil::setTDes8fromSvPV(TDes8& aDes8, SV* sv) {
- dTHX;
- PerlUtil::setTDes8fromPVn(aDes8, (const U8 *)SvPV_nolen(sv), SvLEN(sv));
-}
-
-EXPORT_C SV* PerlUtil::newSvPVfromTDesC16(const TDesC16& aDesC16) {
- dTHX;
- SV* sv = NULL;
- HBufC8* hBuf8 = HBufC8::New(aDesC16.Length() * 3);
-
- if (hBuf8) {
- TPtr8 aPtr8(hBuf8->Des());
- CnvUtfConverter::ConvertFromUnicodeToUtf8(aPtr8, aDesC16);
- sv = newSVpvn((const char *)(hBuf8->Ptr()), hBuf8->Size());
- delete hBuf8;
- hBuf8 = NULL;
- SvUTF8_on(sv);
- }
-
- return sv;
-}
-
-EXPORT_C void PerlUtil::setSvPVfromTDesC16(SV* sv, const TDesC16& aDesC16) {
- dTHX;
- HBufC8* hBuf8 = HBufC8::New(aDesC16.Length() * 3);
-
- if (hBuf8) {
- TPtr8 aPtr8(hBuf8->Des());
- CnvUtfConverter::ConvertFromUnicodeToUtf8(aPtr8, aDesC16);
- sv_setpvn(sv, (const char *)(hBuf8->Ptr()), hBuf8->Size());
- delete hBuf8;
- hBuf8 = NULL;
- SvUTF8_on(sv);
- }
-}
-
-EXPORT_C HBufC16* PerlUtil::newHBufC16fromSvPV(SV* sv) {
- dTHX;
- return PerlUtil::newHBufC16fromPVn((const U8 *)SvPV_nolen(sv), SvLEN(sv), SvUTF8(sv));
-}
-
-void PerlUtil::setTDes16fromSvPV(TDes16& aDes16, SV* sv) {
- dTHX;
- PerlUtil::setTDes16fromPVn(aDes16, (const U8 *)SvPV_nolen(sv), SvLEN(sv), SvUTF8(sv));
-}
-
-EXPORT_C HBufC8* PerlUtil::newHBufC8fromPVn(const U8* s, STRLEN n) {
- HBufC8* aBuf8 = HBufC8::New(n);
- if (aBuf8) {
- TPtr8 ptr8 = aBuf8->Des();
- ptr8.Copy(s, n);
- }
- return aBuf8;
-}
-
-EXPORT_C void PerlUtil::setTDes8fromPVn(TDes8& aDes8, const U8* s, STRLEN n) {
- // TODO: grow aDes8 if needed
- aDes8.Copy(s, n);
-}
-
-EXPORT_C HBufC16* PerlUtil::newHBufC16fromPVn(const U8 *s, STRLEN n, bool utf8) {
- HBufC16 *hBuf16 = HBufC16::New(n); // overallocate
-
- if (hBuf16) {
- if (utf8) {
- TPtr16 aPtr16(hBuf16->Des());
- TPtrC8 aPtrC8(s, n);
- CnvUtfConverter::ConvertToUnicodeFromUtf8(aPtr16, aPtrC8);
- } else {
- TPtrC8 aPtrC8(s, n);
- hBuf16->Des().Copy(aPtrC8);
- }
- }
-
- return hBuf16;
-}
-
-EXPORT_C void PerlUtil::setTDes16fromPVn(TDes16& aDes16, const U8 *s, STRLEN n, bool utf8) {
- // TODO: grow aDes16 if needed
- if (utf8) {
- TPtrC8 aPtrC8(s, n);
- CnvUtfConverter::ConvertToUnicodeFromUtf8(aDes16, aPtrC8);
- } else {
- TPtrC8 aPtrC8(s, n);
- aDes16.Copy(aPtrC8);
- }
-}
diff --git a/symbian/PerlUtil.h b/symbian/PerlUtil.h
deleted file mode 100644
index 1e7d2929b4..0000000000
--- a/symbian/PerlUtil.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 2004-2005 Nokia. All rights reserved. */
-
-/* The PerlUtil class is licensed under the same terms as Perl itself. */
-
-/* See PerlUtil.pod for documentation. */
-
-#ifndef __PerlUtil_h__
-#define __PerlUtil_h__
-
-#include <e32base.h>
-
-#include "EXTERN.h"
-#include "perl.h"
-
-class PerlUtil {
- public:
-
- IMPORT_C static SV* newSvPVfromTDesC8(const TDesC8& aDes);
- IMPORT_C static void setSvPVfromTDesC8(SV* sv, const TDesC8& aDes);
- IMPORT_C static HBufC8* newHBufC8fromSvPV(SV* sv);
- IMPORT_C static void setTDes8fromSvPV(TDes8& aDes8, SV* sv);
-
- IMPORT_C static SV* newSvPVfromTDesC16(const TDesC16& aDes);
- IMPORT_C static void setSvPVfromTDesC16(SV* sv, const TDesC16& aDes);
- IMPORT_C static HBufC16* newHBufC16fromSvPV(SV* sv);
- IMPORT_C static void setTDes16fromSvPV(TDes16& aDes16, SV* sv);
-
- IMPORT_C static HBufC8* newHBufC8fromPVn(const U8* s, STRLEN n);
- IMPORT_C static void setTDes8fromPVn(TDes8& aDes8, const U8* s, STRLEN n);
- IMPORT_C static HBufC16* newHBufC16fromPVn(const U8* s, STRLEN n, bool utf8);
- IMPORT_C static void setTDes16fromPVn(TDes16& aDes16, const U8* s, STRLEN n, bool utf8);
-};
-
-#endif /* #ifndef __PerlUtil_h__ */
-
-
diff --git a/symbian/PerlUtil.pod b/symbian/PerlUtil.pod
deleted file mode 100644
index 3215d194ea..0000000000
--- a/symbian/PerlUtil.pod
+++ /dev/null
@@ -1,42 +0,0 @@
-=head1 NAME
-
-PerlUtil - a C++ utility class for Perl/Symbian
-
-=head1 SYNOPSIS
-
- // in your App.mmp
- USERINCLUDE \symbian\perl\x.y.z\include
- LIBRARY perlXYZ.lib
-
- // in your App
- #include "PerlUtil.h" // includes also EXTERN.h and perl.h
-
- // Static methods for moving between Perl strings (SvPV)
- // and Symbian strings (HBufC and TDes).
-
- static SV* newSvPVfromTDesC8(const TDesC8& aDes);
- static void setSvPVfromTDesC8(SV* sv, const TDesC8& aDes);
- static HBufC8* newHBufC8fromSvPV(SV* sv);
- static void setTDes8fromSvPV(TDes8* aDes8, SV* sv);
-
- static SV* newSvPVfromTDesC16(const TDesC16& aDes);
- static void setSvPVfromTDesC16(SV* sv, const TDesC16& aDes);
- static HBufC16* newHBufC16fromSvPV(SV* sv);
- static void setTDes16fromSvPV(TDes16* aDes16, SV* sv);
-
- static HBufC8* newHBufC8fromPVn(const U8* s, STRLEN n);
- static void setTDes8fromPVn(TDes8* aDes8, const U8* s, STRLEN n);
- static HBufC16* newHBufC16fromPVn(const U8* s, STRLEN n, bool utf8);
- static void setTDes16fromPVn(TDes16* aDes16, const U8* s, STRLEN n);
-
- // An example
-
- const U8* s = (const U8 *)"foo";
- HBufC16* b = PerlUtil::newHBufC16fromPVn(s, 3, 0);
- someCallWithConstTDesCRefArgument(*b);
- delete b;
-
-=cut
-
-
-
diff --git a/symbian/README b/symbian/README
deleted file mode 100644
index 95ed303851..0000000000
--- a/symbian/README
+++ /dev/null
@@ -1,20 +0,0 @@
-The PerlApp* files are a demonstration application for the CPerlBase
-class, which is defined and implemented by the PerlBase* files.
-The rest of the files are part of the Symbian base port.
-
-All files are Copyright (c) Nokia, 2004-2005, all rights reserved,
-and licensed under the same terms as Perl itself.
-
-Once the 'sdkinstall' make target has been run in the top level,
-the PerlApp can be built using the standard Symbian way:
-
- bldmake bldfiles
- abld build wins udeb
- abld build thumb urel
-
-and then packaged into a SIS by:
-
- makesis PerlApp.pkg
-
---
-
diff --git a/symbian/TODO b/symbian/TODO
deleted file mode 100644
index ac8ee3d2d0..0000000000
--- a/symbian/TODO
+++ /dev/null
@@ -1,198 +0,0 @@
-=encoding utf8
-
-=head1 BASE PORT
-
-=head2 Console
-
-- The Console only does "ASCII" input: e.g. pressing the "2"
- key five times, "aaaaa", does not produce "ä" ("a diaeresis"),
- but instead the "2" key rotates through "abc2abc2...".
- This is a pity because the Console is actually capable of full
- Unicode input and output (if you have the fonts, that is). You
- can verify this by entering e.g. the euro character, which is
- U+20AC, well beyond U+00FF. I don't know why the full repertoire
- of the keyboard is not available.
-- Enhance the console? (line editing, full x-y movement, history)
-- The role of the console needs to be rethought: the best way
- would be to have the console visible in the same screen as
- the GUI elements (an "embedded console"?)
-
-=head2 Core Language
-
-- the $^E does not work
-- select() does not work (not our fault)
-- starting external application: what now (0.1.0) works is:
- - system("app");
- - system("app&");
- - and those with arguments:
- - system("app arg1 arg2")
- - system("app arg1 arg2 &")
- but remember that a Symbian process does get only argv[0]
- and argv[1]: all the arguments of the application are passed
- in as a single argument, the second one ("arg1 arg2" in the above)
- What does not work:
- - I/O redirection
- - piped open, in either direction
- - qx/backtick/`
- - fork/wait (these unlikely to ever work as in POSIX)
- - IO redirection or filename globbing in system()
- (since there is no POSIX shell beneath)
- What might work in future:
- - some I/O redirection
- - exec() might be made to work
- - Symbian::spawn("cmd args") returning a process id (what does Win32 do?)
- - Symbian::waitpid($spawned_pid)
-
-=head2 Platform
-
-- in S60 1.2 (at least in 3650 Nokia 3650 v3.11) setjmp/longjmp is
- fragile (see Symbian FAQ-0929), intensive debugging and fix needed
-
-=head2 Unicode
-
-- Symbian has Unicode filenames, and Unicode all over the place.
-- Encode and the use of Symbian Unicode in general
- tie into the overall usefulness of PerlIO.
-
-=head2 Portability
-
-- Slash versus Backslash: where does one need to use "\\"?
- writing Perl applications, where can one get away with using "/" ?
-
-=head2 Build
-
-- make xsbuild.pl much more robust (for building external extensions)
- (see symbian\ext\README and symbian\ext\Moped\Msg\README)
-- now the .mmp functions both as input and as output - bad
-- MakeMaker? Pure PM, PM + XS?
-- currently the PerlApp UID is in both config.pl (hardwired) and
- in makesis.pl (computed), this is quite error prone
-- Enable building also under Cygwin? (could be really hard,
- the Symbian SDKs pretty much assume cmd.exe)
-
-=head1 PACKAGING
-
-- subdivide perlext.sis?
-- pm-stripper: strip pod and comments, while inserting the appropriate
- #line commands to keep linenumbers in sync. Shaves off easily 50%
- of the code, making install packages smaller.
-- Get MakeMaker to create SIS packages? In non-Win32?
-- Symbian has APIs for opening .zip files
-- Investigate Autrijus Tang's PAR format
- http://www.autrijus.org/par-intro/
-
-=head1 PerlBase
-
-- review for proper Symbian coding practices
-
-=head1 PerlApp
-
-- In "Run" see how one could show also the file extensions.
-- How to allow passing command line options to scripts being run?
-- Terminate/Pause menu entries (to be used while the script is running)?
-- review for proper Symbian coding practices
-
-=head2 All UIs
-
-- Make it possible to call UI elements (or any other Symbianic
- asynchronous services) from Perl.
-
- There is now a sample of enabling calling CPerlUi::TextQueryDialogL()
- from Perl as PerlApp::TextQuery(), see symbian_utils.c. This, however,
- does not work: calling the dialog code blocks so that the screen is not
- redrawn at all. Perl should do both: "yield" so that the GUI framework
- can redraw, but in the meanwhile Perl should wait for the completion
- (OK or Cancel) of the dialog, but Perl must not exit the current PL_op.
- Welcome to the wonderful world of cooperative multitasking. The right
- solution surely involves Active Objects. The problem may require having
- a different Perl op dispatch loop than the standard and debug ones in
- run.c and dump.c.
-
-- menu/toolbar support
-- selection lists (single cf multi cf radio)
-- on/off (special case of two-item radio selection list)
-- forms (multicontrols)
-- "secret editor" (special case of text query)
-
-=head2 Series 60
-
-- in S60 2.6 (at least in Nokia 6630 v4.03.11) launching scripts via
- FExplorer does not open up the console
-
-=head2 Series 80
-
-- On exit "PerlApp" gets Symbian USER Panic 44: "This panic is raised
- by the Free() and FreeZ() member functions of an RHeap. It is caused
- when the cell being freed overlaps the next cell on the free list
- (i.e. the first cell on the free list with an address higher than the
- one being freed)." Reason unknown.
-- Hotkey Newline so that it functions as 'OK' in dialogs
-
-=head2 UIQ
-
-- UIQ 3.0? UIQ 2.0? (now only tried in UIQ 2.1)
-- UIQ, at least UIQ 2.1, does not have "file select dialogs" since
- "files" are supposed to be hidden from the user. Therefore, no
- "Run" in PerlApp. (For similar stylistic reasons there is no "Exit".)
-- Long notes (e.g. the EPerlAppCommandAbout) are shown badly truncated.
-
-=head1 CPAN LIBRARIES
-
-- Include/Package more modules (or work harder on getting CPAN.pm working?)
- (but note that lib/**/*.pm is 3.5 megabytes, probably not worth including
- all of it, even after pm-stripping):
- - libnet
- - Bundle::CPAN
- - Archive::Tar (now included in 5.9.x)
- - Term::ReadKey (useless?)
- - Term::ReadLine (useless?)
- - Bundle::LWP
- - URI
- - HTML::TagSet
- - HTML::Parser
- - HTML::Entities
- - HTML::HeadParser
- - LWP
- - Crypt::SSLeay? (ssl?)
- - IMAP?
- - Net::Telnet?
- - Archive::Zip?
- - Mail::Send?
- - Date::Calc?
- - XML? XML::Simple? (expat?) (there is builtin xml support)
- - RSS?
- - DBI (DBD::???)
- - DBD::SQLite? (sqlite?)
- - SOAP? XML-RPC?
-
-=head1 CORE LIBRARIES
-
-- Fix Devel::PPPort (worth it?) (Note that there is D::PPP 3.x out by now)
-- Fix Encode to not to have writeable data: seems to be tricky indeed
- because of copious global non-const data.
-- Verify that the modified File::Spec::Win32 does work in Symbian.
- (File::Spec::Epoc does not seem to be relevant?)
-- What does Cwd really do since the concept of cwd is a bit fuzzy in Symbian.
-- What should Sys::Hostname return? GPRS? BT? WLAN?
-- ByteLoader problem: byterun.c does not see VERSION and XS_VERSION.
-- POSIX problem: STDLIB POSIX is not that POSIX.
-
-=head1 REGRESSION SUITE
-
-- how to run the standard test suite on a Symbian device?
-
-=head1 FUTURE POSSIBILITIES
-
-- GUI support (problematic that the MVC model enforces an "application")
- (name suggestion: Moped::Gui)
- (see above for the need of sorting out the Active Objectedness)
-- Messaging support (sms:, mms:, mailto:, irdaobex:, btobex:,
- cell location, WLAN)
- (name suggestion: Moped::Msg)
-- PDA support (address book)
- (name suggestion: Moped::PDA)
-- Device support (memory, camera)
- (name suggestion: Moped::Dev::Memory, Moped::Dev::Drives, Moped::Dev::Camera)
-- Phone APIs (e.g. how to catch an incoming call: BIO messaging)
-- Remote console (Bluetooth/IR/USB?)
-
diff --git a/symbian/bld.inf b/symbian/bld.inf
deleted file mode 100644
index c4489677f0..0000000000
--- a/symbian/bld.inf
+++ /dev/null
@@ -1,4 +0,0 @@
-PRJ_MMPFILES
-PerlApp.mmp
-PerlRecog.mmp
-
diff --git a/symbian/config.pl b/symbian/config.pl
deleted file mode 100644
index 2671df6d8f..0000000000
--- a/symbian/config.pl
+++ /dev/null
@@ -1,994 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (c) 2004-2005 Nokia. All rights reserved.
-# This utility is licensed under the same terms as Perl itself.
-
-use strict;
-use lib "symbian";
-
-print "Configuring...\n";
-print "Configuring with: Perl version $] ($^X)\n";
-
-do "sanity.pl" or die $@;
-
-my %VERSION = %{ do "version.pl" or die $@ };
-
-printf "Configuring for: Perl version $VERSION{REVISION}.%03d%03d\n",
- $VERSION{VERSION}, $VERSION{SUBVERSION};
-
-my $VERSION = "$VERSION{REVISION}$VERSION{VERSION}$VERSION{SUBVERSION}";
-my $R_V_SV = "$VERSION{REVISION}.$VERSION{VERSION}.$VERSION{SUBVERSION}";
-
-my ($SYMBIAN_ROOT, $SYMBIAN_VERSION, $SDK_NAME, $SDK_VARIANT, $SDK_VERSION) =
- @{ do "sdk.pl" or die $@ };
-my %PORT = %{ do "port.pl" or die $@ };
-
-if ($SYMBIAN_ROOT eq 'C:\Symbian\Series60_1_2_CW') {
- ( $SYMBIAN_VERSION, $SDK_VERSION ) = qw(6.1 1.2);
-}
-
-my $WIN = $ENV{WIN} ; # 'wins', 'winscw' (from sdk.pl)
-my $ARM = 'thumb'; # 'thumb', 'armv5'
-my $S60SDK = $ENV{S60SDK}; # qw(1.2 2.0 2.1 2.6) (from sdk.pl)
- if ($SDK_VARIANT eq 'S60' && $S60SDK =~ /^5\./) {
- $ARM = 'armv5'; # 'thumb', 'armv5' # Configuration for S60 5th Edition SDK v1.0
- }
-my $S80SDK = $ENV{S80SDK}; # qw(2.0) (from sdk.pl)
-my $S90SDK = $ENV{S90SDK}; # qw(1.1) (from sdk.pl)
-my $UIQSDK = $ENV{UIQSDK}; # qw(2.0 2.1) (from sdk.pl)
-
-my $UREL = $ENV{UREL}; # from sdk.pl
-$UREL =~ s/-ARM-/$ARM/;
-my $UARM = $ENV{UARM}; # from sdk.pl
-
-die "$0: SDK not recognized\n"
- if !defined($SYMBIAN_VERSION) ||
- !defined($SDK_VERSION) ||
- (!defined($S60SDK) && !defined($S80SDK) && !defined($S90SDK) && !defined($UIQSDK));
-
-die "$0: does not know which Windows compiler to use\n"
- unless defined $WIN;
-
-print "Symbian $SYMBIAN_VERSION SDK $SDK_VARIANT $SDK_VERSION ($WIN) installed at $SYMBIAN_ROOT\n";
-
-my $CWD = do "cwd.pl" or die $@;
-print "Build directory $CWD\n";
-
-die "$0: '+' in cwd does not work with Series 60 SDK 1.2\n"
- if defined $S60SDK && $S60SDK eq '1.2' && $CWD =~ /\+/;
-
-my @unclean;
-my @mmp;
-
-sub create_mmp {
- my ( $target, $type, @x ) = @_;
- my $miniperl = $target eq 'miniperl';
- my $perl = $target eq 'perl';
- my $mmp = "$target.mmp";
- my $targetpath = $miniperl
- || $perl ? "TARGETPATH\t\\System\\Apps\\Perl" : "";
- if ( open( my $fh, '>', $mmp ) ) {
- print "\t$mmp\n";
- push @mmp, $mmp;
- push @unclean, $mmp;
- print $fh <<__EOF__;
-TARGET $target.$type
-TARGETTYPE $type
-__EOF__
- if ($SDK_VARIANT eq 'S60' && $S60SDK =~ /^5\./) {
- print $fh "UID\t0 0xEA3E9181\n" if $miniperl;
- print $fh "UID\t0 0xED04DD86\n" if $perl;
- print $fh "UID\t0x1000008d 0xE8667302\n" unless $miniperl || $perl;
- print $fh "CAPABILITY\tNONE\n";
- } else {
- print $targetpath;
- print $fh "EPOCHEAPSIZE\t1024 8388608";
- print $fh "EPOCSTACKSIZE\t65536";
- }
- print $fh <<__EOF__;
-EXPORTUNFROZEN
-SRCDBG
-__EOF__
- if ($SDK_VARIANT eq 'S60') {
- print $fh "MACRO\t__SERIES60__\n";
- print $fh "MACRO\t__SERIES60_1X__\n" if $S60SDK =~ /^1\./;
- print $fh "MACRO\t__SERIES60_2X__\n" if $S60SDK =~ /^2\./;
- print $fh "MACRO\t__SERIES60_3X__\n" if $S60SDK =~ /^5\./;
- }
- if ($SDK_VARIANT eq 'S80') {
- print $fh "MACRO\t__SERIES80__\n";
- print $fh "MACRO\t__SERIES80_1X__\n" if $S80SDK =~ /^1\./;
- print $fh "MACRO\t__SERIES80_2X__\n" if $S80SDK =~ /^2\./;
- }
- if ($SDK_VARIANT eq 'S90') {
- print $fh "MACRO\t__SERIES90__\n";
- }
- if ($SDK_VARIANT eq 'UIQ') {
- print $fh "MACRO\t__UIQ__\n";
- print $fh "MACRO\t__UIQ_1X__\n" if $UIQSDK =~ /^1\./;
- print $fh "MACRO\t__UIQ_2X__\n" if $UIQSDK =~ /^2\./;
- }
- my ( @c, %c );
- @c = map { glob } qw(*.c); # Find the .c files.
- @c = map { lc } @c; # Lowercase the names.
- @c = grep { !/malloc\.c/ } @c; # Use the system malloc.
- @c = grep { !/main\.c/ } @c; # main.c must be explicit.
- push @c, map { lc } @x;
- @c = map { s:^\.\./::; $_ } @c; # Remove the leading ../
- @c = map { $c{$_}++ } @c; # Uniquefy.
- @c = sort keys %c; # Beautify.
-
- for (@c) {
- print $fh "SOURCE\t\t$_\n";
- }
- print $fh <<__EOF__;
-SOURCEPATH $CWD
-USERINCLUDE $CWD
-USERINCLUDE $CWD\\ext\\DynaLoader
-USERINCLUDE $CWD\\symbian
-SYSTEMINCLUDE \\epoc32\\include\\libc
-SYSTEMINCLUDE \\epoc32\\include
-LIBRARY euser.lib
-LIBRARY estlib.lib
-LIBRARY eikcore.lib
-LIBRARY cone.lib
-LIBRARY efsrv.lib
-__EOF__
- if ( $miniperl || $perl || $type eq 'dll' ) {
- print $fh <<__EOF__;
-LIBRARY charconv.lib
-LIBRARY hal.lib
-LIBRARY estor.lib
-__EOF__
- }
- if ($SDK_VARIANT =~ /^S[689]0$/) {
- print $fh <<__EOF__;
-LIBRARY commonengine.lib
-__EOF__
- }
- if (defined $S60SDK) {
- print $fh <<__EOF__;
-LIBRARY avkon.lib
-LIBRARY commondialogs.lib
-__EOF__
- }
- if ((defined $S80SDK) or (defined $S90SDK)) {
- print $fh <<__EOF__;
-LIBRARY eikctl.lib
-LIBRARY eikcoctl.lib
-LIBRARY eikdlg.lib
-LIBRARY ckndlg.lib
-__EOF__
- }
- if (defined $UIQSDK) {
- print $fh <<__EOF__;
-LIBRARY eikctl.lib
-LIBRARY eikcoctl.lib
-LIBRARY eikdlg.lib
-LIBRARY qikctl.lib
-__EOF__
- }
- if ( $type eq 'exe' ) {
- print $fh <<__EOF__;
-STATICLIBRARY ecrt0.lib
-__EOF__
- }
- if ($miniperl) {
- print $fh <<__EOF__;
-MACRO PERL_MINIPERL
-__EOF__
- }
- if ($perl) {
- print $fh <<__EOF__;
-MACRO PERL_PERL
-__EOF__
- }
- print $fh <<__EOF__;
-MACRO PERL_CORE
-MACRO MULTIPLICITY
-MACRO PERL_IMPLICIT_CONTEXT
-__EOF__
- unless ( $miniperl || $perl ) {
- print $fh <<__EOF__;
-MACRO PERL_GLOBAL_STRUCT
-MACRO PERL_GLOBAL_STRUCT_PRIVATE
-__EOF__
- }
- unless ($miniperl || $perl ) {
- if ($SDK_VARIANT eq 'S60' && $S60SDK =~ /^5\./) {
- print $fh "START RESOURCE\tsymbian\\PerlUi.rss\nEND\n";
- } else {
- print $fh "RESOURCE\tsymbian\\PerlUi.rss";
- }
- }
- close $fh;
- }
- else {
- warn "$0: failed to open $mmp for writing: $!\n";
- }
-}
-
-sub create_bld_inf {
- if ( open( BLD_INF, '>', 'bld.inf' ) ) {
- print "\tbld.inf\n";
- push @unclean, "bld.inf";
- print BLD_INF <<__EOF__;
-PRJ_PLATFORMS
-${WIN} ${ARM}
-PRJ_MMPFILES
-__EOF__
- for (@mmp) { print BLD_INF $_, "\n" }
- close BLD_INF;
- }
- else {
- warn "$0: failed to open bld.inf for writing: $!\n";
- }
-}
-
-my %config;
-
-sub load_config_sh {
- if ( open( CONFIG_SH, '<', 'symbian/config.sh' ) ) {
- while (<CONFIG_SH>) {
- if (/^(\w+)=['"]?(.*?)["']?$/) {
- my ( $var, $val ) = ( $1, $2 );
- $val =~ s/x.y.z/$R_V_SV/gi;
- $val =~ s/thumb/$ARM/gi;
- $val = "C:$val" if (defined($S90SDK) and ($val =~ /^(\/|\\\\)system[\/\\]/i));
- $val = "'$SYMBIAN_VERSION'" if $var eq 'osvers';
- $val = "'$SDK_VERSION'" if $var eq 'sdkvers';
- $config{$var} = $val;
- }
- }
- close CONFIG_SH;
- }
- else {
- warn "$0: failed to open symbian\\config.sh for reading: $!\n";
- }
-}
-
-sub create_config_h {
- load_config_sh();
- if ( open( CONFIG_H, '>', 'config.h' ) ) {
- print "\tconfig.h\n";
- push @unclean, "config.h";
- if ( open( CONFIG_H_SH, '<', 'config_h.SH' ) ) {
- while (<CONFIG_H_SH>) {
- last if /\#ifndef _config_h_/;
- }
- print CONFIG_H <<__EOF__;
-/*
- * Package name : perl
- * Source directory : .
- * Configuration time:
- * Configured by :
- * Target system : symbian
- */
-
-#ifndef _config_h_
-__EOF__
- while (<CONFIG_H_SH>) {
- last if /!GROK!THIS/;
- s/\$(\w+)/exists $config{$1} ? $config{$1} : (warn "$0: config.sh missing '$1'\n", "")/eg;
- s/^#undef\s+(\S+).+/#undef $1/g;
- s:\Q/**/::;
- print CONFIG_H;
- }
- close CONFIG_H_SH;
- }
- else {
- warn "$0: failed to open ../config_h.SH for reading: $!\n";
- }
- close CONFIG_H;
- }
- else {
- warn "$0: failed to open config.h for writing: $!\n";
- }
-}
-
-sub create_DynaLoader_cpp {
- print "\text\\DynaLoader\\DynaLoader.cpp\n";
- system(
-q[xsubpp ext\DynaLoader\dl_symbian.xs >ext\DynaLoader\DynaLoader.cpp]
- ) == 0
- or die "$0: creating DynaLoader.cpp failed: $!\n";
- push @unclean, 'ext\DynaLoader\DynaLoader.cpp';
-
-}
-
-sub create_symbian_port_h {
- print "\tsymbian\\symbian_port.h\n";
- if ( open( SYMBIAN_PORT_H, '>', 'symbian/symbian_port.h' ) ) {
- my ($sdkmajor, $sdkminor);
- if ($SDK_VARIANT eq 'S60') {
- $S60SDK =~ /^(\d+)\.(\d+)$/;
- ($sdkmajor, $sdkminor) = ($1, $2);
- }
- if ($SDK_VARIANT eq 'S80') {
- $S80SDK =~ /^(\d+)\.(\d+)$/;
- ($sdkmajor, $sdkminor) = ($1, $2);
- }
- if ($SDK_VARIANT eq 'S90') {
- $S90SDK =~ /^(\d+)\.(\d+)$/;
- ($sdkmajor, $sdkminor) = ($1, $2);
- }
- if ($SDK_VARIANT eq 'UIQ') {
- $UIQSDK =~ /^(\d+)\.(\d+)$/;
- ($sdkmajor, $sdkminor) = ($1, $2);
- }
- print SYMBIAN_PORT_H <<__EOF__;
-/* Copyright (c) 2004-2005, Nokia. All rights reserved. */
-
-#ifndef __symbian_port_h__
-#define __symbian_port_h__
-
-#define PERL_SYMBIANPORT_MAJOR $PORT{dll}->{MAJOR}
-#define PERL_SYMBIANPORT_MINOR $PORT{dll}->{MINOR}
-#define PERL_SYMBIANPORT_PATCH $PORT{dll}->{PATCH}
-
-#define PERL_SYMBIANSDK_FLAVOR L"$SDK_VARIANT"
-#define PERL_SYMBIANSDK_MAJOR $sdkmajor
-#define PERL_SYMBIANSDK_MINOR $sdkminor
-
-#endif /* #ifndef __symbian_port_h__ */
-__EOF__
- close(SYMBIAN_PORT_H);
- push @unclean, 'symbian\symbian_port.h';
- }
- else {
- warn "$0: failed to open symbian/symbian_port.h for writing: $!\n";
- }
-}
-
-sub create_perlmain_c {
- print "\tperlmain.c\n";
- system(
-q[perl -ne "print qq[ char *file = __FILE__;\n] if /dXSUB_SYS/;print unless /PERL_UNUSED_CONTEXT/;print qq[ newXS(\"DynaLoader::boot_DynaLoader\", boot_DynaLoader, file);\n] if /dXSUB_SYS/;print qq[EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);\n] if /Do not delete this line/" miniperlmain.c > perlmain.c]
- ) == 0
- or die "$0: Creating perlmain.c failed: $!\n";
- push @unclean, 'perlmain.c';
-}
-
-sub create_PerlApp_pkg {
- print "\tsymbian\\PerlApp.pkg\n";
- if ( open( PERLAPP_PKG, '>', 'symbian\\PerlApp.pkg' ) ) {
- my $ProductId =
- defined $S60SDK ?
-qq[;Supports Series 60 v0.9\n(0x101F6F88), 0, 0, 0, {"Series60ProductID"}\n] :
- defined $S80SDK ?
-qq[;Supports Series 80 v2.0\n(0x101F8ED2), 0, 0, 0, {"Series80ProductID"}\n] :
- defined $S90SDK ?
-qq[;Supports Series 90 v1.1\n(0x101FBE05), 0, 0, 0, {"Series90ProductID"}\n] :
- defined $UIQSDK && $SDK_VERSION =~ /^(\d)\.(\d)$/ ?
-qq[;Supports UIQ v2.1\n(0x101F617B), $1, $2, 0, {"UIQ21ProductID"}\n] :
- ";Supports Series NN";
- my $APPS = $UREL;
- if (($SDK_VARIANT eq 'S60' && $SDK_VERSION ne '1.2' || $WIN eq 'winscw') || defined $S80SDK || defined $S90SDK) { # Do only if not in S60 1.2 VC.
- $APPS =~ s!\\epoc32\\release\\(.+)\\$UARM$!\\epoc32\\data\\z\\system\\apps\\PerlApp!i;
- }
- # TODO: in S60 3.0 there will be no more recognizers.
- my $mdl = qq["$UREL\\PerlRecog.mdl"-"!:\\system\\recogs\\PerlRecog.mdl";];
- my $AIF = $SDK_VARIANT =~ /^S[689]0/ ? qq["$APPS\\PerlApp.aif"-"!:\\system\\apps\\PerlApp\\PerlApp.aif"] : "";
- print PERLAPP_PKG <<__EOF__;
-; !!!!!! DO NOT EDIT THIS FILE !!!!!!
-; This file is built by symbian\\config.pl.
-; Any changes made here will be lost!
-;
-; PerlApp.pkg
-;
-; Note that the demo_pl needs to be run to create the demo .pl scripts.
-;
-; Languages
-&EN;
-
-; Standard SIS file header
-#{"PerlApp"},(0x102015F6),0,2,0
-
-$ProductId
-
-; Files
-"$UREL\\PerlApp.APP"-"!:\\system\\apps\\PerlApp\\PerlApp.app"
-$mdl
-"$APPS\\PerlApp.rsc"-"!:\\system\\apps\\PerlApp\\PerlApp.rsc"
-$AIF
-__EOF__
- if ( open( DEMOS, '-|', "perl symbian\\demo_pl list" ) ) {
- while (<DEMOS>) {
- chomp;
- if (defined $S90SDK) {
- print PERLAPP_PKG qq["$_"-"!:\\Mydocs\\Perl\\$_"\n];
- } else {
- print PERLAPP_PKG qq["$_"-"!:\\Perl\\$_"\n];
- }
- }
- close(DEMOS);
- }
- close(PERLAPP_PKG);
- }
- else {
- die "$0: symbian\\PerlApp.pkg: $!\n";
- }
- push @unclean, 'symbian\PerlApp.pkg';
-}
-
-print "Creating...\n";
-create_mmp(
- 'miniperl', 'exe',
- 'miniperlmain.c', 'symbian\symbian_stubs.c',
- 'symbian\PerlBase.cpp',
- 'symbian\PerlUi.cpp',
- 'symbian\PerlUtil.cpp',
- 'symbian\symbian_utils.cpp',
-);
-create_mmp(
- "perl", 'exe',
- 'perlmain.c', 'symbian\symbian_stubs.c',
- 'symbian\symbian_utils.cpp',
- 'symbian\PerlBase.cpp',
- 'symbian\PerlUi.cpp',
- 'symbian\PerlUtil.cpp',
- 'ext\DynaLoader\DynaLoader.cpp',
-);
-
-create_mmp(
- "perl$VERSION", 'dll',
- 'symbian\symbian_dll.cpp', 'symbian\symbian_stubs.c',
- 'symbian\symbian_utils.cpp',
- 'symbian\PerlBase.cpp',
- 'symbian\PerlUi.cpp',
- 'symbian\PerlUtil.cpp',
- 'ext\DynaLoader\DynaLoader.cpp',
-);
-
-create_bld_inf();
-create_config_h();
-create_perlmain_c();
-create_symbian_port_h();
-create_DynaLoader_cpp();
-create_PerlApp_pkg();
-
-if ( open( PERLAPP_MMP, '>', 'symbian/PerlApp.mmp' ) ) {
- my @MACRO;
- my @LIB;
- push @MACRO, 'PERL_IMPLICIT_CONTEXT';
- push @MACRO, 'MULTIPLICITY';
- if (defined $S60SDK) {
- push @MACRO, '__SERIES60__';
- push @MACRO, '__SERIES60_1X__' if $S60SDK =~ /^1\./;
- push @MACRO, '__SERIES60_2X__' if $S60SDK =~ /^2\./;
- push @LIB, <<__EOF__;
-LIBRARY avkon.lib
-LIBRARY commondialogs.lib
-__EOF__
- }
- if (defined $S80SDK) {
- push @MACRO, '__SERIES80__';
- push @MACRO, '__SERIES80_1X__' if $S80SDK =~ /^1\./;
- push @MACRO, '__SERIES80_2X__' if $S80SDK =~ /^2\./;
- push @LIB, <<__EOF__;
-LIBRARY eikctl.lib
-LIBRARY eikcoctl.lib
-LIBRARY eikdlg.lib
-LIBRARY ckndlg.lib
-__EOF__
- }
- if (defined $S90SDK) {
- push @MACRO, '__SERIES90__';
- push @LIB, <<__EOF__;
-LIBRARY eikctl.lib
-LIBRARY eikcoctl.lib
-LIBRARY eikdlg.lib
-LIBRARY ckndlg.lib
-__EOF__
- }
- if (defined $UIQSDK) {
- push @MACRO, '__UIQ__';
- push @MACRO, '__UIQ_1X__' if $UIQSDK =~ /^1\./;
- push @MACRO, '__UIQ_2X__' if $UIQSDK =~ /^2\./;
- push @LIB, <<__EOF__;
-LIBRARY eikctl.lib
-LIBRARY eikcoctl.lib
-LIBRARY eikdlg.lib
-LIBRARY qikctl.lib
-__EOF__
- }
- print PERLAPP_MMP <<__EOF__;
-// !!!!!! DO NOT EDIT THIS FILE !!!!!!
-// This file is built by symbian\\config.pl.
-// Any changes made here will be lost!
-TARGET PerlApp.app
-TARGETTYPE app
-UID 0x100039CE 0x102015F6
-TARGETPATH \\system\\apps\\PerlApp
-SRCDBG
-EXPORTUNFROZEN
-SOURCEPATH .
-SOURCE PerlApp.cpp
-
-USERINCLUDE .
-USERINCLUDE ..
-USERINCLUDE \\symbian\\perl\\$R_V_SV\\include
-
-SYSTEMINCLUDE \\epoc32\\include
-SYSTEMINCLUDE \\epoc32\\include\\libc
-
-LIBRARY apparc.lib
-LIBRARY bafl.lib
-LIBRARY charconv.lib
-LIBRARY cone.lib
-LIBRARY efsrv.lib
-LIBRARY eikcore.lib
-LIBRARY estlib.lib
-LIBRARY euser.lib
-LIBRARY perl$VERSION.lib
-@LIB
-RESOURCE perlapp.rss
-__EOF__
- if (@MACRO) {
- for my $macro (@MACRO) {
- print PERLAPP_MMP <<__EOF__;
-MACRO $macro
-__EOF__
- }
- }
- if ($SDK_VARIANT =~ /^S[689]0$/) {
- print PERLAPP_MMP <<__EOF__;
-AIF PerlApp.aif . PerlAppAif.rss
-__EOF__
- }
- close(PERLAPP_MMP);
- push @unclean, 'symbian\PerlApp.mmp';
-}
-else {
- warn "$0: failed to create symbian\\PerlApp.mmp";
-}
-
-if ( open( MAKEFILE, '>', 'Makefile' ) ) {
- my $perl = "perl$VERSION";
- my $windef1 = "$SYMBIAN_ROOT\\Epoc32\\Build$CWD\\$perl\\$WIN\\$perl.def";
- my $windef2 = "..\\BWINS\\${perl}u.def";
- my $armdef1 = "$SYMBIAN_ROOT\\Epoc32\\Build$CWD\\$perl\\$ARM\\$perl.def";
- my $armdef2 = "..\\BMARM\\${perl}u.def";
- my $MF = $WIN eq 'wins' ? 'vc6' : $WIN eq 'winscw' ? 'cw_ide' : "UNKNOWN";
- print "\tMakefile\n";
- print MAKEFILE <<__EOF__;
-help:
- \@echo === Perl for Symbian ===
- \@echo Useful targets:
- \@echo all win arm clean
- \@echo perldll.sis perlext.sis perlsdk.zip
-
-WIN = ${WIN}
-ARM = ${ARM}
-
-all: build
-
-build: rename_makedef build_${WIN} build_arm
-
-@unclean: symbian\\config.pl
- perl symbian\\config.pl
-
-build_${WIN}: abld.bat perldll_${WIN}
-
-build_vc6: abld.bat perldll_wins
-
-build_vc7: abld.bat perldll_wins
-
-build_cw: abld.bat perldll_winscw
-
-build_arm: abld.bat perl_arm miniperl_arm perldll_arm
-
-miniperl_win miniperl_${WIN}: miniperl.mmp abld.bat rename_makedef
- abld build ${WIN} udeb miniperl
-
-miniperl_arm: miniperl.mmp abld.bat rename_makedef
- abld build \$(ARM) $UARM miniperl
-
-miniperl: miniperl_${WIN} miniperl_arm
-
-perl: perl_${WIN} perl_arm
-
-perl_win perl_${WIN}: perl.mmp abld.bat rename_makedef
- abld build ${WIN} perl
-
-perl_arm: perl.mmp abld.bat rename_makedef
- abld build \$(ARM) $UARM perl
-
-perldll_win perldll_${WIN}: perl${VERSION}_${WIN} freeze_${WIN} perl${VERSION}_${WIN}
-
-perl${VERSION}_win perl${VERSION}_${WIN}: perl$VERSION.mmp abld.bat rename_makedef
- abld build ${WIN} perl$VERSION
-
-perldll_arm: perl${VERSION}_arm freeze_arm perl${VERSION}_arm
-
-perl${VERSION}_arm: perl$VERSION.mmp abld.bat rename_makedef
- abld build \$(ARM) $UARM perl$VERSION
-
-perldll perl$VERSION: perldll_${WIN} perldll_arm
-
-win ${WIN}: miniperl_${WIN} perl_${WIN} perldll_${WIN}
-
-thumb arm: miniperl_arm perl_arm perldll_arm
-
-rename_makedef:
- -ren makedef.pl nomakedef.pl
-
-# Symbian SDK has a makedef.pl of its own,
-# and we don't need Perl's.
-rerename_makedef:
- -ren nomakedef.pl makedef.pl
-
-symbian\\PerlUi.rss: symbian\\PerlUi$SDK_VARIANT.rss
- copy symbian\\PerlUi$SDK_VARIANT.rss symbian\\PerlUi.rss
-
-abld.bat abld: bld.inf symbian\\PerlUi.rss
- bldmake bldfiles
-
-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
- abld makefile ${MF} miniperl
- echo > ${WIN}_miniperl.mf
-
-${WIN}_perl.mf: abld.bat symbian\\config.pl
- abld makefile ${MF} perl
- echo > ${WIN}_perl.mf
-
-${WIN}_${VERSION}.mf: abld.bat symbian\\config.pl
- abld makefile ${MF} perl${VERSION}
- echo > ${WIN}_${VERSION}.mf
-
-symbian\\${WIN}.mf:
- cd symbian; make ${WIN}.mf
-
-${WIN}.mf: ${WIN}_miniperl.mf ${WIN}_perl.mf ${WIN}_${VERSION}.mf symbian\\${WIN}.mf
-
-arm_miniperl.mf: abld.bat symbian\\config.pl
- echo > arm_miniperl.mf
-
-arm_perl.mf: abld.bat symbian\\config.pl
- echo > arm_perl.mf
-
-arm_${VERSION}.mf: abld.bat symbian\\config.pl
- echo > arm_${VERSION}.mf
-
-arm.mf: arm_miniperl.mf arm_perl.mf arm_${VERSION}.mf
-
-win.mf: vc6.mf cw.mf
- echo > win.mf
-
-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
-
-PM = lib\\Config.pm lib\\Cross.pm lib\\lib.pm ext\\DynaLoader\\DynaLoader.pm ext\\DynaLoader\\XSLoader.pm ext\\Errno\\Errno.pm
-POD = lib\\Config.pod
-
-pm: \$(PM)
-
-XLIB = -Ixlib\\symbian
-
-XSBOPT = --win=\$(WIN) --arm=\$(ARM)
-
-lib\\Config.pm:
- copy symbian\\config.sh config.sh
-__EOF__
- if (defined $S90SDK) {
- print MAKEFILE <<__EOF__;
- perl -pi.bak -e "s:x\\.y\\.z+:$R_V_SV:g; s!='(\\\\\\\\system)!='C:\\1!" config.sh
-__EOF__
- } else {
- print MAKEFILE <<__EOF__;
- perl -pi.bak -e "s:x\\.y\\.z+:$R_V_SV:g" config.sh
-__EOF__
- };
- print MAKEFILE <<__EOF__;
- perl \$(XLIB) configpm --cross=symbian
- copy xlib\\symbian\\Config.pm lib\\Config.pm
- perl -pi.bak -e "s:x\\.y\\.z:$R_V_SV:g" lib\\Config.pm
- perl -pi.bak -e "s:5\\.\\d+\\.\\d+:$R_V_SV:g" lib\\Config.pm
- -perl -pi.bak -e "s:x\\.y\\.z:$R_V_SV:g" xlib\\symbian\\Config_heavy.pl
-
-lib\\lib.pm:
- perl lib\\lib_pm.PL
-
-ext\\DynaLoader\\DynaLoader.pm:
- -del /f ext\\DynaLoader\\DynaLoader.pm
- perl -Ixlib\\symbian ext\\DynaLoader\\DynaLoader_pm.PL
- perl -pi.bak -e "s/__END__//" DynaLoader.pm
- copy /y DynaLoader.pm ext\\DynaLoader\\DynaLoader.pm
- -del /f DynaLoader.pm DynaLoader.pm.bak
-
-ext\\DynaLoader\\XSLoader.pm:
- perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) XSLoader
-
-ext\\Errno\\Errno.pm:
- perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) Errno
-
-miniperlexe.sis: miniperl_arm symbian\\makesis.pl
- perl \$(XLIB) symbian\\makesis.pl miniperl
-
-perlexe.sis: perl_arm symbian\\makesis.pl
- perl \$(XLIB) symbian\\makesis.pl perl
-
-
-allsis: all miniperlexe.sis perlexe.sis perldll.sis perllib.sis perlext.sis perlapp.sis
-
-perldll.sis perl$VERSION.sis: perldll_arm pm symbian\\makesis.pl
- perl \$(XLIB) symbian\\makesis.pl perl${VERSION}dll
-
-perl${VERSION}lib.sis perllib.sis: \$(PM)
- perl \$(XLIB) symbian\\makesis.pl perl${VERSION}lib
-
-perl${VERSION}ext.sis perlext.sis: perldll_arm buildext_sis
- perl symbian\\makesis.pl perl${VERSION}ext
-
-EXT = Compress::Raw::Zlib Cwd Data::Dumper Devel::Peek Digest::MD5 Errno Fcntl File::Glob Filter::Util::Call IO List::Util MIME::Base64 PerlIO::scalar PerlIO::via SDBM_File Socket Storable Time::HiRes XSLoader attributes
-
-buildext: perldll symbian\\xsbuild.pl lib\\Config.pm
- perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) \$(EXT)
-
-buildextcpp: perldll symbian\\xsbuild.pl lib\\Config.pm
- perl \$(XLIB) symbian\\xsbuild.pl --csuffix .cpp \$(XSBOPT) \$(EXT)
-
-buildext_sis: perldll.sis symbian\\xsbuild.pl lib\\Config.pm
- perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) --sis \$(EXT)
-
-buildextcpp_sis: perldll.sis symbian\\xsbuild.pl lib\\Config.pm
- perl \$(XLIB) symbian\\xsbuild.pl --csuffix .cpp \$(XSBOPT) --sis \$(EXT)
-
-cleanext: symbian\\xsbuild.pl
- perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) --clean \$(EXT)
-
-distcleanext: symbian\\xsbuild.pl
- perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) --distclean \$(EXT)
-
-sis makesis: miniperl perl perldll pm buildext perlapp.sis
- perl \$(XLIB) symbian\\makesis.pl
-
-APIDIR = \\Symbian\\perl\\$R_V_SV
-
-sdkinstall:
- -mkdir \\Symbian\\perl
- -mkdir \\Symbian\\perl\\$R_V_SV
- -mkdir \$(APIDIR)\\include
- -mkdir \$(APIDIR)\\include\\symbian
- -mkdir \$(APIDIR)\\lib
- -mkdir \$(APIDIR)\\lib\\ExtUtils
- -mkdir \$(APIDIR)\\pod
- -mkdir \$(APIDIR)\\bin
- -mkdir \$(BINDIR)
- copy /y *.h \$(APIDIR)\\include
- -copy /y *.inc \$(APIDIR)\\include
- copy /y lib\\ExtUtils\\xsubpp \$(APIDIR)\\lib\\ExtUtils
- copy /y lib\\ExtUtils\\typemap \$(APIDIR)\\lib\\ExtUtils
- copy /y lib\\ExtUtils\\ParseXS.pm \$(APIDIR)\\lib\\ExtUtils
- copy /y symbian\\xsbuild.pl \$(APIDIR)\\bin
- copy /y symbian\\sisify.pl \$(APIDIR)\\bin
- copy /y symbian\\PerlBase.h \$(APIDIR)\\include
- copy /y symbian\\PerlUi.h \$(APIDIR)\\include
- copy /y symbian\\PerlUtil.h \$(APIDIR)\\include
- copy /y symbian\\symbian*.h \$(APIDIR)\\include\\symbian
- copy /y symbian\\PerlBase.pod \$(APIDIR)\\pod
- copy /y symbian\\PerlUtil.pod \$(APIDIR)\\pod
-
-RELDIR = $SYMBIAN_ROOT\\epoc32\\release
-RELWIN = \$(RELDIR)\\\$(WIN)\\udeb
-RELARM = \$(RELDIR)\\\$(ARM)\\$UARM
-SDKZIP = perl${VERSION}sdk.zip
-
-
-\$(SDKZIP) perlsdk.zip: perldll sdkinstall
- -del /f perl${VERSION}sdk.zip
- zip -r perl${VERSION}sdk.zip \$(RELWIN)\\perl$VERSION.* \$(RELARM)\\perl$VERSION.* \$(APIDIR)
- \@echo perl${VERSION}sdk.zip created.
-
-PERLSIS = perl${VERSION}.SIS perl${VERSION}lib.SIS perl${VERSION}ext.SIS
-ALLSIS = \$(PERLSIS) perlapp.sis
-ETC = README.symbian symbian\\PerlBase.pod symbian\\PerlUtil.pod symbian\\sisify.pl symbian\\TODO
-
-perl${VERSION}dist.zip perldist.zip: \$(ALLSIS) \$(SDKZIP) \$(ETC)
- -del /f perl${VERSION}dist.zip
- zip -r perl${VERSION}dist.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
-
-perlapp.sis: perlapp_arm
- cd symbian; make perlapp.sis
-
-perlapp.zip:
- cd symbian; zip perlapp.zip PerlApp.* PerlRecog.* PerlBase.* PerlUtil.* demo_pl
-
-zip: perlsdk.zip perlapp.zip
-
-freeze: freeze_${WIN} freeze_arm
-
-freeze_${WIN}:
- abld freeze ${WIN} perl$VERSION
-
-freeze_arm:
- abld freeze \$(ARM) perl$VERSION
-
-defrost: defrost_${WIN} defrost_arm
-
-defrost_${WIN}:
- -del /f $windef1
- -del /f $windef2
-
-defrost_arm:
- -del /f $armdef1
- -del /f $armdef2
-
-clean_${WIN}: abld.bat
- abld clean ${WIN}
-
-clean_arm: abld.bat
- abld clean \$(ARM)
-
-clean: clean_${WIN} clean_arm rerename_makedef
- -del /f \$(PM)
- -del /f \$(POD)
- -del /f lib\\Config.pm.bak
- -del /f xlib\\symbian\\Config_heavy.pl
- -rmdir /s /q xlib
- -del /f config.sh
- -del /f DynaLoader.pm ext\\DynaLoader\\DynaLoader.pm
- -del /f ext\\DynaLoader\\Makefile
- -del /f ext\\SDBM_File\\sdbm\\Makefile
- -del /f symbian\\*.lst
- -del /f abld.bat @unclean *.pkg *.sis *.zip
- -del /f symbian\\abld.bat symbian\\*.sis symbian\\*.zip
- -del /f symbian\\perl5*.pkg symbian\\miniperl.pkg
- -del arm_*.mf ${WIN}_*.mf vc*.mf cw*.mf
- -del symbian\\Makefile
- -del symbian\\PerlUi.rss symbian\\PerlApp.rss
- -del perlappmin.hex perlrscmin.hex
- -perl symbian\\xsbuild.pl \$(XSBOPT) --clean \$(EXT)
- -rmdir /s /q perl${VERSION}_Data
- -cd symbian; make clean
-
-reallyclean: abld.bat
- abld reallyclean
-
-distclean: defrost reallyclean clean
- -perl symbian\\xsbuild.pl \$(XSBOPT) --distclean \$(EXT)
- -del /f config.h config.sh.bak symbian\\symbian_port.h
- -del /f Makefile symbian\\PerlApp.mmp
- -del /f BMARM\\*.def
- -del /f *.cwlink *.resources *.pref
- -del /f perl${VERSION}.xml perl${VERSION}.mcp uid.cpp
- -rmdir /s /q BMARM
- cd symbian; make distclean
- -del /f symbian\\Makefile
-__EOF__
- close MAKEFILE;
-}
-else {
- warn "$0: failed to create Makefile: $!\n";
-}
-
-if ( open( MAKEFILE, '>', 'symbian/Makefile')) {
- my $wrap = defined $S60SDK && $S60SDK eq '1.2' && $WIN ne '${WIN}cw';
- my $ABLD = $wrap ? 'perl b.pl': 'abld';
- print "\tsymbian/Makefile\n";
- my $MF = $WIN eq 'wins' ? 'vc6' : $WIN eq 'winscw' ? 'cw_ide' : "UNKNOWN";
- print MAKEFILE <<__EOF__;
-WIN = $WIN
-ARM = $ARM
-ABLD = $ABLD
-MF = $MF
-
-abld.bat:
- bldmake bldfiles
-
-perlapp_${WIN}: abld.bat ..\\config.h PerlApp.h PerlApp.cpp
- copy PerlUi$SDK_VARIANT.rss PerlApp.rss
- bldmake bldfiles
- \$(ABLD) build ${WIN} udeb
-
-perlapp_arm: ..\\config.h PerlApp.h PerlApp.cpp
- copy PerlUi$SDK_VARIANT.rss PerlApp.rss
- bldmake bldfiles
- \$(ABLD) build ${ARM} $UARM
-
-$MF:
- abld makefile $MF
-
-win.mf:
- bldmake bldfiles
- abld makefile $MF
-
-perlapp_demo_extract:
- perl demo_pl extract
-
-perlapp.sis: perlapp_arm perlapp_demo_extract
- -del /f perlapp.SIS
- makesis perlapp.pkg
- copy /y perlapp.SIS ..\\perlapp.SIS
-
-clean:
- -perl demo_pl cleanup
- -del /f perlapp.sis
- -del /f b.pl
- -del PerlApp.rss
- abld clean $WIN
- abld clean thumb
- -del Makefile
-
-distclean: clean
- -del /f *.cwlink *.resources *.pref
- -del /f PerlApp.xml PerlApp.mcp uid.cpp
- -rmdir /s /q PerlApp_Data
- -del /f abld.bat
-__EOF__
- close(MAKEFILE);
- if ($wrap) {
- if ( open( B_PL, '>', 'symbian/b.pl')) {
- print B_PL <<'__EOF__';
-# abld.pl wrapper.
-
-# nmake doesn't like MFLAGS and MAKEFLAGS being set to -w and w.
-delete $ENV{MFLAGS};
-delete $ENV{MAKEFLAGS};
-
-system("abld @ARGV");
-__EOF__
- close(B_PL);
- } else {
- warn "$0: failed to create symbian/b.pl: $!\n";
- }
- }
-} else {
- warn "$0: failed to create symbian/Makefile: $!\n";
-}
-
-print "Deleting...\n";
-for my $config (
- # Do not delete config.h here.
- "config.sh",
- "lib\\Config.pm",
- "xlib\\symbian\\Config.pm",
- "xlib\\symbian\\Config_heavy.pl",
- "symbian\\PerlUi.rss",
- "symbian\\PerlApp.rss",
- ) {
- print "\t$config\n";
- unlink($config);
-}
-
-print <<__EOM__;
-Configuring done.
-Now you can run:
- make all
- make allsis
-__EOM__
-
-1; # Happy End.
diff --git a/symbian/config.sh b/symbian/config.sh
deleted file mode 100644
index b5260d7f34..0000000000
--- a/symbian/config.sh
+++ /dev/null
@@ -1,961 +0,0 @@
-#!\\bin\\sh
-Author=''
-_a='.a'
-_o='.o'
-afs='false'
-afsroot='/afs'
-alignbytes='4'
-aphostname='localhost'
-apiversion='5.005'
-ar=':'
-archlib='\\system\\libs\\perl\\x.y.z\\thumb-symbian'
-archlibexp='\\system\\libs\\perl\\x.y.z\\thumb-symbian'
-archname='thumb-symbian'
-asctime_r_proto='0'
-bin='\\system\\apps\\perl'
-bincompat5005='n'
-binexp='\\system\\apps\\perl'
-bootstrap_charset='undef'
-byteorder='1234'
-castflags='0'
-cc='gcc'
-cccdlflags=''
-ccdlflags=''
-cf_by='root@localhost'
-cf_time='Thu Jan 1 00:00:00 GMT 1970'
-charbits='8'
-clocktype='clock_t'
-cpp_stuff='42'
-cpplast=''
-cppminus='-'
-cpprun='gcc -E'
-cppstdin='gcc -E'
-crypt_r_proto='0'
-ctermid_r_proto='0'
-ctime_r_proto='0'
-d_Gconvert='sprintf((b),"%.*g",(n),(x))'
-d_PRIEUldbl='undef'
-d_PRIFUldbl='undef'
-d_PRIGUldbl='undef'
-d_PRIXU64='undef'
-d_PRId64='undef'
-d_PRIeldbl='undef'
-d_PRIfldbl='undef'
-d_PRIgldbl='undef'
-d_PRIi64='undef'
-d_PRIo64='undef'
-d_PRIu64='undef'
-d_PRIx64='undef'
-d_SCNfldbl='undef'
-d__fwalk='undef'
-d_accept4='undef'
-d_access='undef'
-d_accessx='undef'
-d_acosh='undef'
-d_aintl='undef'
-d_alarm='undef'
-d_archlib='define'
-d_asctime64='undef'
-d_asctime_r='undef'
-d_asinh='undef'
-d_atanh='undef'
-d_atolf='undef'
-d_atoll='undef'
-d_attribute_always_inline='undef'
-d_attribute_deprecated='undef'
-d_attribute_format='undef'
-d_attribute_malloc='undef'
-d_attribute_nonnull='undef'
-d_attribute_noreturn='undef'
-d_attribute_pure='undef'
-d_attribute_unused='undef'
-d_attribute_warn_unused_result='undef'
-d_backtrace='undef'
-d_bsd='undef'
-d_bsdgetpgrp='undef'
-d_bsdsetpgrp='undef'
-d_builtin_add_overflow='undef'
-d_builtin_choose_expr='undef'
-d_builtin_expect='undef'
-d_builtin_mul_overflow='undef'
-d_builtin_sub_overflow='undef'
-d_c99_variadic_macros='undef'
-d_casti32='undef'
-d_castneg='undef'
-d_cbrt='undef'
-d_chown='undef'
-d_chroot='undef'
-d_chsize='undef'
-d_class='undef'
-d_clearenv='undef'
-d_closedir='undef'
-d_cmsghdr_s='undef'
-d_copysign='undef'
-d_copysignl='undef'
-d_cplusplus='undef'
-d_crypt='undef'
-d_crypt_r='undef'
-d_csh='undef'
-d_ctermid='undef'
-d_ctermid_r='undef'
-d_ctime64='undef'
-d_ctime_r='undef'
-d_cuserid='undef'
-d_dbl_dig='undef'
-d_dbminitproto='undef'
-d_difftime64='undef'
-d_difftime='undef'
-d_dir_dd_fd='undef'
-d_dirfd='undef'
-d_dirnamlen='define'
-d_dladdr='undef'
-d_dlerror='undef'
-d_dlopen='undef'
-d_dlsymun='undef'
-d_dosuid='undef'
-d_double_has_inf='define'
-d_double_has_nan='define'
-d_double_has_negative_zero='define'
-d_double_has_subnormals='define'
-d_double_style_cray='undef'
-d_double_style_ibm='undef'
-d_double_style_ieee='define'
-d_double_style_vax='undef'
-d_drand48_r='undef'
-d_drand48proto='undef'
-d_dup2='undef'
-d_dup3='undef'
-d_duplocale='undef'
-d_eaccess='undef'
-d_endgrent='undef'
-d_endgrent_r='undef'
-d_endhent='undef'
-d_endhostent_r='undef'
-d_endnent='undef'
-d_endnetent_r='undef'
-d_endpent='undef'
-d_endprotoent_r='undef'
-d_endpwent='undef'
-d_endpwent_r='undef'
-d_endsent='undef'
-d_endservent_r='undef'
-d_eofnblk='undef'
-d_erf='undef'
-d_erfc='undef'
-d_eunice='undef'
-d_exp2='undef'
-d_expm1='undef'
-d_faststdio='undef'
-d_fchdir='undef'
-d_fchmod='undef'
-d_fchmodat='undef'
-d_fchown='undef'
-d_fcntl='undef'
-d_fcntl_can_lock='undef'
-d_fd_macros='undef'
-d_fd_set='undef'
-d_fdclose='undef'
-d_fdim='undef'
-d_fds_bits='undef'
-d_fegetround='undef'
-d_fgetpos='undef'
-d_finite='undef'
-d_finitel='undef'
-d_flexfnam='define'
-d_flock='undef'
-d_flockproto='undef'
-d_fma='undef'
-d_fmax='undef'
-d_fmin='undef'
-d_fork='undef'
-d_fp_class='undef'
-d_fp_classify='undef'
-d_fp_classl='undef'
-d_fpathconf='undef'
-d_fpclass='undef'
-d_fpclassify='undef'
-d_fpclassl='undef'
-d_fpgetround='undef'
-d_fpos64_t='undef'
-d_freelocale='undef'
-d_frexpl='undef'
-d_fs_data_s='undef'
-d_fseeko='undef'
-d_fsetpos='define'
-d_fstatfs='undef'
-d_fstatvfs='undef'
-d_fsync='undef'
-d_ftello='undef'
-d_ftime='undef'
-d_futimes='undef'
-d_futimesat='undef'
-d_gai_strerror='undef'
-d_gdbm_ndbm_h_uses_prototypes='undef'
-d_gdbmndbm_h_uses_prototypes='undef'
-d_getaddrinfo='undef'
-d_getcwd='define'
-d_getespwnam='undef'
-d_getfsstat='undef'
-d_getgrent='undef'
-d_getgrent_r='undef'
-d_getgrgid_r='undef'
-d_getgrnam_r='undef'
-d_getgrps='undef'
-d_gethbyaddr='define'
-d_gethbyname='define'
-d_gethent='undef'
-d_gethname='define'
-d_gethostbyaddr_r='undef'
-d_gethostbyname_r='undef'
-d_gethostent_r='undef'
-d_gethostprotos='define'
-d_getitimer='undef'
-d_getlogin='undef'
-d_getlogin_r='undef'
-d_getmnt='undef'
-d_getmntent='undef'
-d_getnameinfo='undef'
-d_getnbyaddr='undef'
-d_getnbyname='undef'
-d_getnent='undef'
-d_getnetbyaddr_r='undef'
-d_getnetbyname_r='undef'
-d_getnetent_r='undef'
-d_getnetprotos='undef'
-d_getpagsz='undef'
-d_getpbyname='define'
-d_getpbynumber='define'
-d_getpent='undef'
-d_getpgid='undef'
-d_getpgrp2='undef'
-d_getpgrp='undef'
-d_getppid='undef'
-d_getprior='undef'
-d_getprotobyname_r='undef'
-d_getprotobynumber_r='undef'
-d_getprotoent_r='undef'
-d_getprotoprotos='define'
-d_getprpwnam='undef'
-d_getpwent='undef'
-d_getpwent_r='undef'
-d_getpwnam_r='undef'
-d_getpwuid_r='undef'
-d_getsbyname='define'
-d_getsbyport='define'
-d_getsent='undef'
-d_getservbyname_r='undef'
-d_getservbyport_r='undef'
-d_getservent_r='undef'
-d_getservprotos='define'
-d_getspent='undef'
-d_getspnam='undef'
-d_getspnam_r='undef'
-d_gettimeod='define'
-d_gmtime64='undef'
-d_gmtime_r='undef'
-d_gnulibc='undef'
-d_grpasswd='undef'
-d_hasmntopt='undef'
-d_htonl='define'
-d_hypot='undef'
-d_ilogb='undef'
-d_ilogbl='undef'
-d_inc_version_list='undef'
-d_index='undef'
-d_inetaton='undef'
-d_inetntop='undef'
-d_inetpton='undef'
-d_int64_t='undef'
-d_ip_mreq='undef'
-d_ip_mreq_source='undef'
-d_ipv6_mreq='undef'
-d_ipv6_mreq_source='undef'
-d_isascii='undef'
-d_isblank='undef'
-d_isfinite='undef'
-d_isfinitel='undef'
-d_isinf='undef'
-d_isinfl='undef'
-d_isless='undef'
-d_isnan='undef'
-d_isnanl='undef'
-d_isnormal='undef'
-d_j0='undef'
-d_j0l='undef'
-d_killpg='undef'
-d_lc_monetary_2008='undef'
-d_lchown='undef'
-d_ldbl_dig='undef'
-d_ldexpl='undef'
-d_lgamma='undef'
-d_lgamma_r='undef'
-d_libm_lib_version='undef'
-d_link='undef'
-d_linkat='undef'
-d_llrint='undef'
-d_llrintl='undef'
-d_llround='undef'
-d_llroundl='undef'
-d_localeconv_l='undef'
-d_localtime64='undef'
-d_localtime_r='undef'
-d_localtime_r_needs_tzset='undef'
-d_locconv='undef'
-d_lockf='undef'
-d_log1p='undef'
-d_log2='undef'
-d_logb='undef'
-d_long_double_style_ieee='undef'
-d_long_double_style_ieee_doubledouble='undef'
-d_long_double_style_ieee_extended='undef'
-d_long_double_style_ieee_std='undef'
-d_long_double_style_vax='undef'
-d_longdbl='undef'
-d_longlong='undef'
-d_lrint='undef'
-d_lrintl='undef'
-d_lround='undef'
-d_lroundl='undef'
-d_lseekproto='undef'
-d_lstat='undef'
-d_madvise='undef'
-d_malloc_good_size='undef'
-d_malloc_size='undef'
-d_mblen='undef'
-d_mbrlen='undef'
-d_mbrtowc='undef'
-d_mbstowcs='undef'
-d_mbtowc='undef'
-d_memmem='undef'
-d_memrchr='undef'
-d_mkdir='define'
-d_mkdtemp='undef'
-d_mkfifo='undef'
-d_mkostemp='undef'
-d_mkstemp='undef'
-d_mkstemps='undef'
-d_mktime64='undef'
-d_mktime='undef'
-d_mmap='undef'
-d_modfl='undef'
-d_modfl_pow32_bug='undef'
-d_modflproto='undef'
-d_mprotect='undef'
-d_msg='undef'
-d_msg_ctrunc='undef'
-d_msg_dontroute='undef'
-d_msg_oob='undef'
-d_msg_peek='undef'
-d_msg_proxy='undef'
-d_msgctl='undef'
-d_msgget='undef'
-d_msghdr_s='undef'
-d_msgrcv='undef'
-d_msgsnd='undef'
-d_msync='undef'
-d_munmap='undef'
-d_mymalloc='undef'
-d_nan='undef'
-d_nanosleep='undef'
-d_ndbm_h_uses_prototypes='undef'
-d_nearbyint='undef'
-d_newlocale='undef'
-d_nextafter='undef'
-d_nexttoward='undef'
-d_nice='undef'
-d_nl_langinfo='undef'
-d_nv_preserves_uv='undef'
-d_nv_zero_is_allbits_zero='define'
-d_off64_t='undef'
-d_old_pthread_create_joinable='undef'
-d_oldpthreads='undef'
-d_oldsock='undef'
-d_open3='undef'
-d_openat='undef'
-d_pathconf='undef'
-d_pause='undef'
-d_perl_otherlibdirs='undef'
-d_phostname='undef'
-d_pipe2='undef'
-d_pipe='undef'
-d_poll='undef'
-d_portable='undef'
-d_prctl='undef'
-d_prctl_set_name='undef'
-d_printf_format_null='undef'
-d_procselfexe='undef'
-d_pseudofork='undef'
-d_pthread_atfork='undef'
-d_pthread_attr_setscope='undef'
-d_pthread_yield='undef'
-d_ptrdiff_t='define'
-d_pwage='undef'
-d_pwchange='undef'
-d_pwclass='undef'
-d_pwcomment='undef'
-d_pwexpire='undef'
-d_pwgecos='undef'
-d_pwpasswd='undef'
-d_pwquota='undef'
-d_qgcvt='undef'
-d_quad='undef'
-d_querylocale='undef'
-d_random_r='undef'
-d_readdir64_r='undef'
-d_readdir='define'
-d_readdir_r='undef'
-d_readlink='undef'
-d_readv='undef'
-d_recvmsg='undef'
-d_regcomp='undef'
-d_remainder='undef'
-d_remquo='undef'
-d_rename='define'
-d_renameat='undef'
-d_rewinddir='define'
-d_rint='undef'
-d_rmdir='define'
-d_round='undef'
-d_sbrkproto='undef'
-d_scalbn='undef'
-d_scalbnl='undef'
-d_sched_yield='undef'
-d_scm_rights='undef'
-d_seekdir='define'
-d_select='undef'
-d_sem='undef'
-d_semctl='undef'
-d_semctl_semid_ds='undef'
-d_semctl_semun='undef'
-d_semget='undef'
-d_semop='undef'
-d_sendmsg='undef'
-d_setegid='undef'
-d_seteuid='undef'
-d_setgrent='undef'
-d_setgrent_r='undef'
-d_setgrps='undef'
-d_sethent='undef'
-d_sethostent_r='undef'
-d_setitimer='undef'
-d_setlinebuf='undef'
-d_setlocale='undef'
-d_setlocale_accepts_any_locale_name='undef'
-d_setlocale_r='undef'
-d_setnent='undef'
-d_setnetent_r='undef'
-d_setpent='undef'
-d_setpgid='undef'
-d_setpgrp2='undef'
-d_setpgrp='undef'
-d_setprior='undef'
-d_setproctitle='undef'
-d_setprotoent_r='undef'
-d_setpwent='undef'
-d_setpwent_r='undef'
-d_setregid='undef'
-d_setresgid='undef'
-d_setresuid='undef'
-d_setreuid='undef'
-d_setrgid='undef'
-d_setruid='undef'
-d_setsent='undef'
-d_setservent_r='undef'
-d_setsid='undef'
-d_setvbuf='define'
-d_shm='undef'
-d_shmat='undef'
-d_shmatprototype='undef'
-d_shmctl='undef'
-d_shmdt='undef'
-d_shmget='undef'
-d_sigaction='undef'
-d_siginfo_si_addr='undef'
-d_siginfo_si_band='undef'
-d_siginfo_si_errno='undef'
-d_siginfo_si_pid='undef'
-d_siginfo_si_status='undef'
-d_siginfo_si_uid='undef'
-d_siginfo_si_value='undef'
-d_signbit='undef'
-d_sigprocmask='undef'
-d_sigsetjmp='undef'
-d_sin6_scope_id='undef'
-d_sitearch='define'
-d_sitecustomize='undef'
-d_sitecustomize='undef'
-d_snprintf='undef'
-d_sockaddr_in6='undef'
-d_sockaddr_sa_len='undef'
-d_sockaddr_storage='undef'
-d_sockatmark='undef'
-d_sockatmarkproto='undef'
-d_socket='define'
-d_socklen_t='undef'
-d_sockpair='undef'
-d_socks5_init='undef'
-d_sqrtl='undef'
-d_srand48_r='undef'
-d_srandom_r='undef'
-d_sresgproto='undef'
-d_sresuproto='undef'
-d_stat='define'
-d_statblks='undef'
-d_statfs_f_flags='undef'
-d_statfs_s='undef'
-d_static_inline='undef'
-d_statvfs='undef'
-d_stdio_cnt_lval='undef'
-d_stdio_ptr_lval='undef'
-d_stdio_ptr_lval_nochange_cnt='undef'
-d_stdio_ptr_lval_sets_cnt='undef'
-d_stdio_stream_array='undef'
-d_stdiobase='undef'
-d_stdstdio='undef'
-d_strcoll='undef'
-d_strerror_l='undef'
-d_strerror_r='undef'
-d_strftime='undef'
-d_strlcat='undef'
-d_strlcpy='undef'
-d_strnlen='undef'
-d_strtod='define'
-d_strtod_l='undef'
-d_strtol='define'
-d_strtold='undef'
-d_strtold_l='undef'
-d_strtoll='undef'
-d_strtoq='undef'
-d_strtoul='define'
-d_strtoull='undef'
-d_strtouq='undef'
-d_strxfrm='undef'
-d_suidsafe='undef'
-d_symlink='undef'
-d_syscall='undef'
-d_syscallproto='undef'
-d_sysconf='undef'
-d_sysernlst=''
-d_syserrlst='undef'
-d_system='define'
-d_tcgetpgrp='undef'
-d_tcsetpgrp='undef'
-d_telldir='define'
-d_telldirproto='define'
-d_tgamma='undef'
-d_thread_safe_nl_langinfo_l='undef'
-d_time='define'
-d_timegm='undef'
-d_times='define'
-d_tm_tm_gmtoff='undef'
-d_tm_tm_zone='undef'
-d_tmpnam_r='undef'
-d_towlower='undef'
-d_towupper='undef'
-d_trunc='undef'
-d_truncate='undef'
-d_truncl='undef'
-d_ttyname_r='undef'
-d_tzname='undef'
-d_u32align='define'
-d_ualarm='undef'
-d_umask='undef'
-d_uname='undef'
-d_union_semun='undef'
-d_unlinkat='undef'
-d_unordered='undef'
-d_unsetenv='undef'
-d_uselocale='undef'
-d_usleep='define'
-d_usleepproto='undef'
-d_ustat='undef'
-d_vendorarch='undef'
-d_vendorbin='undef'
-d_vendorlib='undef'
-d_vfork='undef'
-d_void_closedir='undef'
-d_voidsig='undef'
-d_voidtty=''
-d_vsnprintf='undef'
-d_wait4='undef'
-d_waitpid='undef'
-d_wcrtomb='undef'
-d_wcscmp='undef'
-d_wcstombs='undef'
-d_wcsxfrm='undef'
-d_wctomb='undef'
-d_writev='undef'
-d_xenix='undef'
-db_hashtype='u_int32_t'
-db_prefixtype='size_t'
-db_version_major='0'
-db_version_minor='0'
-db_version_patch='0'
-default_inc_excludes_dot='undef'
-direntrytype='struct dirent'
-dlext='dll'
-dlsrc='dl_symbian.xs'
-doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
-doublekind='4'
-doublemantbits='52'
-doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f'
-doublesize='8'
-drand01="((rand() & 0x7FFF) / (double) ((unsigned long)1 << 15))"
-drand48_r_proto='0'
-dtrace=''
-eagain='EAGAIN'
-ebcdic='undef'
-endgrent_r_proto='0'
-endhostent_r_proto='0'
-endnetent_r_proto='0'
-endprotoent_r_proto='0'
-endpwent_r_proto='0'
-endservent_r_proto='0'
-eunicefix=':'
-exe_ext='.exe'
-fflushNULL='undef'
-fflushall='undef'
-firstmakefile='makefile'
-fpossize='4'
-fpostype=fpos_t
-freetype=void
-full_ar=':'
-full_csh=':'
-full_sed=':'
-getgrent_r_proto='0'
-getgrgid_r_proto='0'
-getgrnam_r_proto='0'
-gethostbyaddr_r_proto='0'
-gethostbyname_r_proto='0'
-gethostent_r_proto='0'
-getlogin_r_proto='0'
-getnetbyaddr_r_proto='0'
-getnetbyname_r_proto='0'
-getnetent_r_proto='0'
-getprotobyname_r_proto='0'
-getprotobynumber_r_proto='0'
-getprotoent_r_proto='0'
-getpwent_r_proto='0'
-getpwnam_r_proto='0'
-getpwuid_r_proto='0'
-getservbyname_r_proto='0'
-getservbyport_r_proto='0'
-getservent_r_proto='0'
-getspnam_r_proto='0'
-gidformat='"lu"'
-gidsign='1'
-gidsize='4'
-gidtype=int
-gmtime_r_proto='0'
-groupstype=int
-h_fcntl='false'
-h_sysfile='true'
-i16size='2'
-i16type='short'
-i32size='4'
-i32type='long'
-i64size='8'
-i64type='int64_t'
-i8size='1'
-i8type='char'
-i_arpainet='undef'
-i_bfd='undef'
-i_bsdioctl=''
-i_crypt='undef'
-i_db='undef'
-i_dbm='undef'
-i_dirent='define'
-i_dlfcn='undef'
-i_execinfo='undef'
-i_fcntl='define'
-i_fenv='undef'
-i_fp='undef'
-i_fp_class='undef'
-i_gdbm='undef'
-i_gdbm_ndbm='undef'
-i_gdbmndbm='undef'
-i_grp='undef'
-i_ieeefp='undef'
-i_inttypes='undef'
-i_langinfo='undef'
-i_libutil='undef'
-i_locale='define'
-i_machcthr='undef'
-i_malloc='undef'
-i_mallocmalloc='undef'
-i_mntent='undef'
-i_ndbm='undef'
-i_netdb='define'
-i_neterrno='undef'
-i_netinettcp='undef'
-i_niin='define'
-i_poll='undef'
-i_prot='undef'
-i_pthread='undef'
-i_pwd='define'
-i_quadmath='undef'
-i_rpcsvcdbm='undef'
-i_sgtty='undef'
-i_shadow='undef'
-i_socks='undef'
-i_stdarg='define'
-i_stdbool='undef'
-i_stdint='undef'
-i_stdlib='define'
-i_sunmath='undef'
-i_sysaccess='undef'
-i_sysdir='undef'
-i_sysfile='undef'
-i_sysfilio='undef'
-i_sysin='undef'
-i_sysioctl='define'
-i_syslog='undef'
-i_sysmman='undef'
-i_sysmode='undef'
-i_sysmount='undef'
-i_sysndir='undef'
-i_sysparam='undef'
-i_syspoll='undef'
-i_sysresrc='undef'
-i_syssecrt='undef'
-i_sysselct='undef'
-i_syssockio='undef'
-i_sysstat='define'
-i_sysstatfs='undef'
-i_sysstatvfs='undef'
-i_systime='define'
-i_systimek='undef'
-i_systimes='define'
-i_systypes='define'
-i_sysuio='undef'
-i_sysun='undef'
-i_sysutsname='undef'
-i_sysvfs='undef'
-i_syswait='undef'
-i_termio='undef'
-i_termios='undef'
-i_time='define'
-i_unistd='define'
-i_ustat='undef'
-i_utime='undef'
-i_varargs='undef'
-i_varhdr='stdarg.h'
-i_vfork='undef'
-i_wchar='undef'
-i_wctype='undef'
-i_xlocale='undef'
-ignore_versioned_solibs='y'
-inc_version_list=''
-inc_version_list_init='0'
-installprefix='\\system'
-installprefixexp='\\system'
-installsitearch='\\system\\libs\\perl\\siteperl\\x.y.z\\thumb-symbian'
-installsitelib='\\system\\libs\\perl\\siteperl\\x.y.z'
-installstyle='lib\\perl5'
-installusrbinperl='undef'
-intsize='4'
-ivdformat='"ld"'
-ivsize='4'
-ivtype='long'
-ld=':'
-lddlflags=''
-ldflags=''
-lib_ext='.a'
-libc='stdlib'
-libm_lib_version='0'
-libperl='libperl.a'
-localtime_r_proto='0'
-longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00'
-longdblkind=0
-longdblmantbits='64'
-longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00'
-longdblsize=8
-longlongsize=8
-longsize='4'
-lseeksize=4
-lseektype=int
-mad='undef'
-make='make'
-malloctype='int*'
-malloctype='void *'
-mmaptype='void *'
-modetype='mode_t'
-modetype=int
-multiarch='undef'
-myarchname='thumb-symbian'
-myuname='symbian'
-need_va_copy='undef'
-netdb_hlen_type='int'
-netdb_host_type='const char *'
-netdb_name_type='const char *'
-netdb_net_type='unsigned long'
-nroff='nroff'
-nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0'
-nv_preserves_uv_bits='0'
-nveformat='"e"'
-nvfformat='"f"'
-nvgformat='"g"'
-nvmantbits='52'
-nvsize='8'
-nvtype='double'
-o_nonblock='O_NONBLOCK'
-obj_ext='.o'
-old_pthread_create_joinable=''
-optimize='-O2'
-orderlib='false'
-osname='symbian'
-osvers='7.0s'
-otherlibdirs=''
-package=''
-path_sep=';'
-perl_static_inline='static'
-phostname='hostname'
-pidtype='int'
-pm_apiversion='5.005'
-privlib='\\system\\libs\\perl\\x.y.z'
-privlibexp='\\system\\libs\\perl\\x.y.z'
-procselfexe=''
-prototype='define'
-ptrsize='4'
-quadkind='4'
-quadtype='int64_t'
-randbits='48'
-randfunc='drand48'
-random_r_proto='0'
-randseedtype='int'
-ranlib=':'
-rd_nodata='-1'
-readdir64_r_proto='0'
-readdir_r_proto='0'
-sGMTIME_max='2147483647'
-sGMTIME_min='0'
-sLOCALTIME_max='2147483647'
-sLOCALTIME_min='0'
-sPRIEUldbl='"llE"'
-sPRIFUldbl='"llF"'
-sPRIGUldbl='"llG"'
-sPRIXU64='"LX"'
-sPRId64='"Ld"'
-sPRIeldbl=''
-sPRIfldbl=''
-sPRIgldbl=''
-sPRIi64='"Li"'
-sPRIo64='"Lo"'
-sPRIu64='"Lu"'
-sPRIx64='"Lx"'
-sSCNfldbl=''
-sched_yield='sched_yield()'
-scriptdir='\\system\\apps\\perl'
-scriptdirexp='\\system\\apps\\perl'
-sdkvers=''
-seedfunc='srand'
-selectminbits='32'
-selecttype=int
-setgrent_r_proto='0'
-sethostent_r_proto='0'
-setlocale_r_proto='0'
-setnetent_r_proto='0'
-setprotoent_r_proto='0'
-setpwent_r_proto='0'
-setservent_r_proto='0'
-sh=':'
-shmattype='void *'
-shortsize=2
-sig_name_init='0'
-sig_num_init='0'
-sig_size='1'
-signal_t=void
-sitearch='\\system\\libs\\perl\\siteperl\\x.y.z\\thumb-symbian'
-sitearchexp='\\system\\libs\\perl\\siteperl\\x.y.z\\thumb-symbian'
-sitelib='\\system\\libs\\perl\\siteperl\\x.y.z'
-sitelib_stem='\\system\\libs\\perl'
-sitelibexp='\\system\\libs\\perl\\siteperl\\x.y.z'
-siteprefix='\\system'
-siteprefixexp='\\system'
-sizesize=4
-sizetype=size_t
-so='o'
-socksizetype='unsigned int'
-srand48_r_proto='0'
-srandom_r_proto='0'
-src=''
-ssizetype=int
-st_ino_sign='1'
-st_ino_size='4'
-startperl=''
-stdchar=char
-stdio_base='((fp)->_IO_read_base)'
-stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)'
-stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
-stdio_filbuf=''
-stdio_ptr='((fp)->_IO_read_ptr)'
-stdio_stream_array=''
-strerror_r_proto='0'
-targetarch='thumb-symbian'
-targetsh=':'
-timetype=time_t
-tmpnam_r_proto='0'
-touch='touch'
-ttyname_r_proto='0'
-u16size='2'
-u16type='unsigned short'
-u32size='4'
-u32type='unsigned long'
-u64size='8'
-u64type='uint64_t'
-u8size='1'
-u8type='unsigned char'
-uidformat='"lu"'
-uidsign='1'
-uidsize='4'
-uidtype=int
-uquadtype='uint64_t'
-use5005threads='undef'
-use64bitall='undef'
-use64bitint='undef'
-usecbacktrace='undef'
-usecrosscompile='undef'
-usedevel='undef'
-usedl='undef'
-usedtrace='undef'
-usefaststdio='undef'
-useithreads='undef'
-usekernprocpathname='undef'
-uselargefiles='undef'
-uselongdouble='undef'
-usemallocwrap='define'
-usemorebits='undef'
-usemultiplicity='undef'
-usemymalloc='n'
-usenm='false'
-usensgetexecutablepath='undef'
-useopcode='true'
-useperlio='define'
-useposix='true'
-usequadmath='undef'
-usereentrant='undef'
-userelocatableinc='undef'
-useshrplib='false'
-usesitecustomize='undef'
-usesocks='undef'
-usethreads='undef'
-usevendorprefix='n'
-usevfork='false'
-uvXUformat='"lX"'
-uvoformat='"lo"'
-uvsize='4'
-uvtype='unsigned long'
-uvuformat='"lu"'
-uvxformat='"lx"'
-vendorarch=''
-vendorarchexp=''
-vendorlib=''
-vendorlib_stem=''
-vendorlibexp=''
-vendorprefix=''
-vendorprefixexp=''
-version='x.y.z'
-versiononly='undef'
-xs_apiversion='5.008'
-zip=''
-PERL_CONFIG_SH='true'
diff --git a/symbian/cwd.pl b/symbian/cwd.pl
deleted file mode 100644
index 3ee402be8d..0000000000
--- a/symbian/cwd.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-use strict;
-use Cwd;
-my $CWD = getcwd();
-$CWD =~ s!^[a-z]:!!i;
-$CWD =~ s!/!\\!g;
-$CWD;
diff --git a/symbian/demo_pl b/symbian/demo_pl
deleted file mode 100644
index 9759347a97..0000000000
--- a/symbian/demo_pl
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/usr/bin/perl -w
-
-#
-# demo_pl
-#
-# A "self-extracting archive" for some demo scripts.
-#
-# hello - the classic
-# helloyou - advanced classic
-# httpget1 - simple sockets
-# httpget2 - simple sockets done complex
-# md5 - core extension
-# time - system call
-# times - more system calls
-#
-
-use strict;
-
-unless (@ARGV && $ARGV[0] =~ /^(?:list|extract|cleanup)$/) {
- die "$0: Usage: $0 [list|extract|cleanup]\n";
-}
-
-my $action = shift;
-my $list = $action eq 'list';
-my $extract = $action eq 'extract';
-my $cleanup = $action eq 'cleanup';
-
-my $fh;
-while (<DATA>) {
- if (/^-- (.+\.pl)$/) {
- if ($cleanup) {
- print "Deleting $1\n";
- unlink $1 or warn "$0: $1: $!\n";
- } elsif ($extract) {
- defined $fh && close($fh);
- open($fh, ">", $1) or die "$0: '$1': $!\n";
- print "Extracting $1\n";
- } elsif ($list) {
- print "$1\n";
- }
- } else {
- print $fh $_ if $extract;
- }
-}
-defined $fh && close($fh);
-exit(0);
-__END__
--- hello.pl
-print "hello world!\n";
--- helloyou.pl
-print "What is your name?\n";
-chomp(my $name = <STDIN>);
-print "Hello, $name!\n";
-print "Amazing fact #1:\n";
-printf "Your name has\n%d character%s!\n",
- length($name), length($name) == 1 ? "" : "s";
-print "Amazing fact #2:\n";
-printf "Your name is\n%s backwards!\n", scalar reverse $name;
--- httpget1.pl
-print "(Using plain sockets)\n";
-use Socket;
-print "Host? ";
-my $host = <STDIN>;
-chomp($host);
-$host = 'www.nokia.com' unless length $host;
-my $port = 80;
-my $iaddr = inet_aton($host) || die "no host: $host";
-my $paddr = sockaddr_in($port, $iaddr);
-my $proto = getprotobyname("tcp");
-socket(S, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
-connect(S, $paddr) || die "connect: $!";
-print "$host:$port:\nConnected.\n";
-select(S); $| = 1; select(STDOUT);
-print S "GET / HTTP/1.0\012\012" || die "GET /: $!";
-my @line;
-print "Receiving...\n";
-while (my $line = <S>) {
- push @line, $line;
-}
-close(S) || die "close: $!";
-printf "Got %d lines.\n", scalar @line;
--- httpget2.pl
-use IO::Socket;
-print "(Using IO::Socket)\n";
-print "Host? ";
-my $host = <STDIN>;
-chomp($host);
-$host = 'www.nokia.com' unless length $host;
-my $port = 80;
-my $remote =
- IO::Socket::INET->new(Proto => "tcp",
- PeerAddr => $host,
- PeerPort => $port);
-print "$host:$port:\nConnected.\n";
-select($remote); $| = 1; select(STDOUT);
-print $remote "GET / HTTP/1.0\012\012" || die "GET /: $!";
-my @line;
-print "Receiving...\n";
-while (my $line = <$remote>) {
- push @line, $line;
-}
-close($remote) || die "close: $!";
-printf "Got %d lines.\n", scalar @line;
--- md5.pl
-use Digest::MD5 'md5_hex';
-print "(Using Digest::MD5)\nMD5 of 'Perl' is:\n";
-print md5_hex('Perl'), "\n";
--- time.pl
-print "Running in $^O\n";
-print scalar localtime, "\n";
--- times.pl
-use Time::HiRes qw(time sleep);
-print CORE::time(), "\n";
-print "Hires\n";
-print time(), "\n";
-print "Sleep 1.5 s...\n";
-sleep(1.5);
-print time(), "\n";
-print "To one million...\n";
-my $t0 = time();
-print $t0, "\n";
-print "Cpu ", scalar times(), "\n";
-for(my $i = 0; $i < 1e6; $i++) {}
-print "Cpu ", scalar times(), "\n";
-my $t1 = time();
-print $t1, "\n";
-print "Wall ", $t1 - $t0, "\n";
-
diff --git a/symbian/ext/Moped/Msg/Msg.mmp b/symbian/ext/Moped/Msg/Msg.mmp
deleted file mode 100644
index 7736d2ab57..0000000000
--- a/symbian/ext/Moped/Msg/Msg.mmp
+++ /dev/null
@@ -1 +0,0 @@
-LIBRARY etel.lib gsmbas.lib
diff --git a/symbian/ext/Moped/Msg/Msg.pkg b/symbian/ext/Moped/Msg/Msg.pkg
deleted file mode 100644
index eb7aed02f5..0000000000
--- a/symbian/ext/Moped/Msg/Msg.pkg
+++ /dev/null
@@ -1,16 +0,0 @@
-; MoDev::Msg installation script
-;
-; The supported languages
-&EN;
-;
-; The installation name and header data
-;
-#{"MoDev::Msg"},(0x0FFFFFFF),0,1,0
-;
-; Platform supported is Series 60
-;
-(0x101F6F88), 0, 0, 0, {"Series60ProductID"}
-; The files to install
-;
-"Msg.pm"-"!:\System\Libs\Perl\5.9.3\MoDev\Msg.pm"
-"\epoc32\release\thumb\urel\Msg.dll"-"!:\System\Libs\Perl\5.9.3\thumb-symbian\Msg.dll"
diff --git a/symbian/ext/Moped/Msg/Msg.pm b/symbian/ext/Moped/Msg/Msg.pm
deleted file mode 100644
index e1aaef8344..0000000000
--- a/symbian/ext/Moped/Msg/Msg.pm
+++ /dev/null
@@ -1,9 +0,0 @@
-package Moped::Msg;
-use strict;
-use vars qw(@ISA $VERSION);
-require DynaLoader;
-@ISA = qw(DynaLoader);
-$VERSION = '0.01';
-bootstrap Moped::Msg;
-1;
-
diff --git a/symbian/ext/Moped/Msg/Msg.xs b/symbian/ext/Moped/Msg/Msg.xs
deleted file mode 100644
index ae47e0a556..0000000000
--- a/symbian/ext/Moped/Msg/Msg.xs
+++ /dev/null
@@ -1,51 +0,0 @@
-#include <eikenv.h>
-#include <e32std.h>
-
-#include "etelbgsm.h" // From Symbian 6.1 SDK (the Communicator SDK)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include "PerlBase.h"
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-#ifdef __cplusplus
-}
-#endif
-
-_LIT(KTsyName, "phonetsy.tsy");
-
-#define XS_SYMBIAN_OR_EMPTY(e, c) errno = (e) = (c); if ((e) != KErrNone) XSRETURN_EMPTY
-
-MODULE = Moped::Msg PACKAGE = Moped::Msg
-
-PROTOTYPES: ENABLE
-
-extern "C" void
-get_gsm_network_info()
- PREINIT:
- TInt error;
- TInt enumphone;
- RTelServer server;
- RBasicGsmPhone phone;
- RTelServer::TPhoneInfo info;
- MBasicGsmPhoneNetwork::TCurrentNetworkInfo networkinfo;
- PPCODE:
- if (GIMME != G_ARRAY)
- XSRETURN_UNDEF;
- XS_SYMBIAN_OR_EMPTY(error, server.Connect());
- XS_SYMBIAN_OR_EMPTY(error, server.LoadPhoneModule(KTsyName));
- XS_SYMBIAN_OR_EMPTY(error, server.EnumeratePhones(enumphone));
- if (enumphone < 1)
- XSRETURN_EMPTY;
- XS_SYMBIAN_OR_EMPTY(error, server.GetPhoneInfo(0, info));
- XS_SYMBIAN_OR_EMPTY(error, phone.Open(server, info.iName));
- XS_SYMBIAN_OR_EMPTY(error, phone.GetCurrentNetworkInfo(networkinfo));
- EXTEND(SP, 4);
- PUSHs(sv_2mortal(newSViv(networkinfo.iNetworkInfo.iId.iMCC)));
- PUSHs(sv_2mortal(newSViv(networkinfo.iNetworkInfo.iId.iMNC)));
- PUSHs(sv_2mortal(newSViv(networkinfo.iLocationAreaCode)));
- PUSHs(sv_2mortal(newSViv(networkinfo.iCellId)));
-
-
diff --git a/symbian/ext/Moped/Msg/README b/symbian/ext/Moped/Msg/README
deleted file mode 100644
index 2d31c298a0..0000000000
--- a/symbian/ext/Moped/Msg/README
+++ /dev/null
@@ -1,49 +0,0 @@
-NOTE: this is just a sample of how building Symbian specific
-extensions COULD work. This is most probably far from the best
-or final way of doing things.
-
-The Moped::Msg currently defines just a single static method,
-get_gsm_network_info(), which returns the GSM network and cell id.
-
-The extension code is in Msg.xs (which gets translated by xsubpp into
-Msg.cpp), the Perl glue code is in Msg.pm. To understand the .xs
-syntax studying perlxstut and perlxs is recommended.
-
-The prerequisites for compiling this extension are:
-
-(1) The Perl for Symbian SDK installed (either done "make sdkinstall",
- or separately installed the perlXYZsdk.zip).
-
-(2) The etelbgsm.h header, which is available for example from
- the Symbian 6.1 SDK (the Communicator SDK). This must be
- copied to ...\epoc32\include.
-
-(3) The etel.lib and the gsmbas.lib, they should come both
- with the 6.1 and 7.0s SDK. The WINS udeb and THUMB urel
- versions of these must be copied to the directories
- ...\epoc32\release\wins\udeb and ...\epoc32\release\thumb\urel,
- respectively.
-
-To compile (assuming Perl 5.9.3 and Series 60 SDK 2.6 for Visual C):
-
- perl \symbian\perl\5.9.3\bin\xsbuild.pl --cpp --extversion=0.1 ext\symbian\Moped\Msg
-
-The --symbian indicates the Symbian and SDK version, the --cplusplus
-indicates that one should generate a .cpp file instead of a .c file.
-
-The xsbuild.pl both configures and builds the extension.
-To clean do "make clean" or "make distclean".
-
-The location.pl demonstrates using the extension.
-
-To create a SIS:
-
- makesis -d%EPOCROOT% ext\Moped\Msg\Msg.pkg
-
-TODO: automate the determination of the EXTVERSION (from .pkg?)
-and of creation of .pkg (the location of the .dll in the build
-and in the target).
-
-
-
-
diff --git a/symbian/ext/Moped/Msg/bld.inf b/symbian/ext/Moped/Msg/bld.inf
deleted file mode 100644
index 121a66a720..0000000000
--- a/symbian/ext/Moped/Msg/bld.inf
+++ /dev/null
@@ -1,4 +0,0 @@
-PRJ_MMPFILES
-Msg.mmp
-PRJ_PLATFORMS
-wins thumb
diff --git a/symbian/ext/Moped/Msg/location.pl b/symbian/ext/Moped/Msg/location.pl
deleted file mode 100644
index 50df335041..0000000000
--- a/symbian/ext/Moped/Msg/location.pl
+++ /dev/null
@@ -1,8 +0,0 @@
-use Moped::Msg;
-my ($MCC, $MNC, $LAC, $Cell) =
- Moped::Msg::get_gsm_network_info();
-print "MCC = $MCC\n";
-print "MNC = $MNC\n";
-print "LAC = $LAC\n";
-print "Cell = $Cell\n";
-
diff --git a/symbian/find_writeable_data.pl b/symbian/find_writeable_data.pl
deleted file mode 100644
index bdb579086d..0000000000
--- a/symbian/find_writeable_data.pl
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/perl -w
-
-#
-# find_writeable_data - find non-const data in Symbian object files
-#
-# Use this when PETRAN tells you "dll has (un)initialised data".
-# Expects to find the Symbian (GNU) nm in the executable path.
-#
-# Copyright (c) 2004-2005 Nokia. All rights reserved.
-#
-# This utility is licensed under the same terms as Perl itself.
-#
-
-use strict;
-
-BEGIN {
- unless (exists $ENV{EPOCROOT}) {
- die "$0: EPOCROOT unset\n";
- }
- if (open(my $fh, "nm --version |")) {
- unless (<$fh> =~ /^GNU nm .*-psion-.*/) {
- die "$0: Cannot find the GNU nm from Symbian\n";
- }
- close($fh);
- } else {
- die "$0: Cannot find any nm in the executable path: $!\n";
- }
- unless (@ARGV && $ARGV[0] =~ /\.mmp$/i) {
- die "$0: Must specify target mmp as the first argument\n";
- }
-}
-
-use Cwd;
-use File::Basename;
-
-my $dir = lc(getcwd());
-my $tgt = basename(shift(@ARGV), ".mmp");
-
-$dir =~ s!/!\\!g;
-$dir =~ s!^c:!c:$ENV{EPOCROOT}epoc32\\build!;
-$dir .= "\\$tgt\\thumb\\urel";
-
-print $dir, "\n";
-
-unless (-d $dir) {
- die "$0: No directory $dir\n";
-}
-
-my @o = glob("$dir\\*.o");
-
-unless (@o) {
- die "$0: No objects in $dir\n";
-}
-
-for my $o (@o) {
- if (open(my $fh, "nm $o |")) {
- my @d;
- while (<$fh>) {
- next if / [TURtr] /;
- push @d, $_;
- }
- close($fh);
- if (@d) {
- $o =~ s!^\Q$dir\E\\!!;
- print "$o:\n";
- print @d;
- }
- } else {
- warn "$0: nm $o failed: $!\n";
- }
-}
-
-exit(0);
diff --git a/symbian/hexdump.pl b/symbian/hexdump.pl
deleted file mode 100644
index d1741f80b9..0000000000
--- a/symbian/hexdump.pl
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/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/install.cfg b/symbian/install.cfg
deleted file mode 100644
index 918d300826..0000000000
--- a/symbian/install.cfg
+++ /dev/null
@@ -1,119 +0,0 @@
-# install.cfg
-#
-# Copyright (c) 2004-2005 Nokia. All Rights Reserved.
-#
-# This file details what library files to include in the perlXYZlib.sis,
-# and what extensions to build for the perlXYZext.sis.
-# The lines beginning with "lib" are # included as-is from the lib/.
-# The lines beginning with "ext" tell either how to build and package
-# the extensions - or not.
-
-#
-# Libraries.
-#
-lib AnyDBM_File.pm
-lib AutoLoader.pm
-lib base.pm
-lib Benchmark.pm
-lib Carp.pm
-lib Carp/Heavy.pm
-lib Cwd.pm
-lib constant.pm
-lib DBM_Filter.pm
-lib Digest/base.pm
-lib DirHandle.pm
-lib Exporter.pm
-lib Exporter/Heavy.pm
-lib File/Basename.pm
-lib File/Compare.pm
-lib File/Copy.pm
-lib File/DosGlob.pm
-lib File/Find.pm
-lib File/Path.pm
-lib File/Spec.pm
-lib File/Spec/Unix.pm
-lib File/Spec/Win32.pm
-lib File/Temp.pm
-lib FileHandle.pm
-lib Filter/Simple.pm
-lib if.pm
-lib integer.pm
-lib IO/Zlib.pm
-lib lib.pm
-lib Net/Cmd.pm
-lib Net/Config.pm
-lib Net/Domain.pm
-lib Net/FTP.pm
-lib Net/FTP/A.pm
-lib Net/FTP/E.pm
-lib Net/FTP/I.pm
-lib Net/FTP/L.pm
-lib Net/FTP/dataconn.pm
-lib Net/NNTP.pm
-lib Net/Netrc.pm
-lib Net/Ping.pm
-lib Net/POP3.pm
-lib Net/SMTP.pm
-lib Net/Time.pm
-lib NEXT.pm
-lib overload.pm
-lib SelectSaver.pm
-lib strict.pm
-lib Symbol.pm
-lib UNIVERSAL.pm
-# lib utf8.pm
-# lib utf8_heavy.pl
-lib vars.pm
-lib warnings.pm
-lib warnings/register.pm
-#
-# Extensions.
-#
-ext attributes
-ext Compress/Raw/Zlib -zlib-src
-ext Cwd
-ext Data/Dumper
-ext Devel/Peek
-ext Digest/MD5
-ext Digest/SHA
-ext Errno
-ext Fcntl CONST
-ext File/Glob CONST
-ext Filter/Util/Call
-ext Hash/Util
-ext IO
-ext List/Util
-ext Math/BigInt/FastCalc
-ext MIME/Base64
-ext PerlIO/scalar
-ext PerlIO/via
-ext SDBM_File -sdbm/db?.c -sdbm/util.c
-ext Socket CONST
-ext Storable
-ext Text/Soundex
-ext Time/HiRes CONST
-ext Time/Piece
-ext XSLoader
-# ext B ERROR
-# ext ByteLoader byterun.c ERROR VERSION
-# ext Devel/DProf nonconst
-# ext Devel/PPPort PORT
-# ext Encode nonconst Encode/encode.h def_t.c encengine.c
-ext I18N/Langinfo PORT
-# ext IPC/SysV PORT
-# ext NDBM_File PORT
-# ext ODBM_File PORT
-# ext Opcode ERROR
-# ext PerlIO/encoding Encode
-# ext POSIX CONST USELESS
-# ext re ERROR
-# ext Sys/Hostname PORT
-# ext Sys/Syslog PORT
-# ext threads PORT
-# ext threads/shared PORT
-# ext Unicode/Normalize nonconst
-# ext Unicode/Collate nonconst
-# ext Win32 USELESS
-# ext XS/APItest USELESS
-# ext XS/Typemap nonconst USELESS
-
diff --git a/symbian/makesis.pl b/symbian/makesis.pl
deleted file mode 100644
index 58199cec77..0000000000
--- a/symbian/makesis.pl
+++ /dev/null
@@ -1,203 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (c) 2004-2005 Nokia. All rights reserved.
-
-use strict;
-use lib "symbian";
-
-do "sanity.pl" or die $@;
-
-my %VERSION = %{ do "version.pl" or die $@ };
-my $VERSION = "$VERSION{REVISION}$VERSION{VERSION}$VERSION{SUBVERSION}";
-my $R_V_SV = "$VERSION{REVISION}.$VERSION{VERSION}.$VERSION{SUBVERSION}";
-
-my ($SYMBIAN_ROOT, $SYMBIAN_VERSION, $SDK_NAME, $SDK_VARIANT, $SDK_VERSION) =
- @{ do "sdk.pl" or die $@ };
-my $UID = do "uid.pl" or die $@;
-my %PORT = %{ do "port.pl" or die $@ };
-
-my $ARM = 'armv5';#'thumb'; # TODO
-my $S60SDK = $ENV{S60SDK}; # from sdk.pl
-my $S80SDK = $ENV{S80SDK}; # from sdk.pl
-my $S90SDK = $ENV{S90SDK}; # from sdk.pl
-
-my $UREL = $ENV{UREL}; # from sdk.pl
-$UREL =~ s/-ARM-/$ARM/;
-
-my $app = '!:\System\Apps\Perl';
-my $lib = '!:\System\Libs';
-
-my @target = @ARGV
- ? @ARGV
- : (
- "miniperl", "perl",
- "perl${VERSION}dll", "perl${VERSION}lib",
- "perl${VERSION}ext"
- );
-
-my %suffix;
-@suffix{ "miniperl", "perl", "perl$VERSION" } = ( "exe", "exe", "dll", );
-
-for my $target (@target) {
- $target = "perl${VERSION}" if $target eq "perl${VERSION}dll";
-
- my %copy;
- my $pkg = "$target.pkg";
- print "\nCreating $pkg...\n";
-
- my $suffix = $suffix{$target} || "";
- my $dst = $suffix eq "dll" ? $lib : $app;
-
- my $srctarget = "$UREL\\$target.$suffix";
-
- if ( $target =~ /^(miniperl|perl|perl${VERSION}(?:dll)?)$/ ) {
- $copy{$srctarget} = "$dst\\$target.$suffix";
- print "\t$target.$suffix\n";
- }
- if ( $target eq "perl${VERSION}lib" ) {
- print "Libraries...\n";
-
- print "\tConfig.pm\n";
- $copy{"lib\\Config.pm"} =
- "$lib\\Perl\\$R_V_SV\\thumb-symbian\\Config.pm";
-
- print "\tConfig_heavy.pl\n";
- $copy{"xlib\\symbian\\Config_heavy.pl"} =
- "$lib\\Perl\\$R_V_SV\\thumb-symbian\\Config_heavy.pl";
-
- print "\tDynaLoader.pm\n";
- $copy{"ext\\DynaLoader\\DynaLoader.pm"} =
- "$lib\\Perl\\$R_V_SV\\DynaLoader.pm";
-
- print "\tErrno.pm\n";
- $copy{"ext\\Errno\\Errno.pm"} = "$lib\\Perl\\$R_V_SV\\Errno.pm";
-
- open( my $cfg, '<', "symbian/install.cfg" )
- or die "$!: symbian/install.cfg: $!\n";
- while (<$cfg>) {
- next unless /^lib\s+(.+)/;
- chomp;
- my $f = $1;
- unless (-f "lib/$f") {
- warn qq[$0: No "lib/$f", skipping...\n];
- next;
- }
- $f =~ s:/:\\:g;
- $copy{"lib\\$f"} = "$lib\\Perl\\$R_V_SV\\$f";
- print "\t$f\n";
- }
- close($cfg);
- }
-
- if ( $target eq "perl${VERSION}ext" ) {
- my @lst = glob("symbian/*.lst");
- print "Extensions...\n";
- print "\t(none found)\n" unless @lst;
- for my $lst (@lst) {
- $lst =~ m:^symbian/(.+)\.:;
- my $ext = $1;
- $ext =~ s!-!::!g;
- print "\t$ext\n";
- if ( open( my $pkg, '<', $lst ) ) {
- while (<$pkg>) {
- if (m!^"(.+)"-"(.+)"$!) {
- my ( $src, $dst ) = ( $1, $2 );
- $copy{$src} = $dst;
- }
- else {
- warn "$0: $lst: $.: unknown syntax\n";
- }
- }
- close($pkg);
- }
- else {
- warn "$0: $lst: $!\n";
- }
- }
- }
-
- for my $file ( keys %copy ) {
- warn "$0: $file does not exist\n" unless -f $file;
- }
-
- my @copy = map { qq["$_"-"$copy{$_}"] } sort keys %copy;
- my $copy = join( "\n", @copy );
-
- my %UID = (
- "miniperl" => 0,
- "perl" => 0,
- "perl${VERSION}" => $UID + 0,
- "perl${VERSION}dll" => $UID + 0,
- "perl${VERSION}ext" => $UID + 1,
- "perl${VERSION}lib" => $UID + 2,
- "perlapp" => $UID + 3,
- "perlrecog" => $UID + 4,
- "perlappmin" => $UID + 5,
- );
-
- die "$0: target has no UID\n" unless defined $UID{$target};
-
- my $uid = sprintf( "0x%08X", $UID{$target} );
-
- my ( $MAJOR, $MINOR, $PATCH ) = ( 0, 0, 0 );
-
- if ( $target =~ m:^perl$VERSION(dll|ext|lib)?$: ) {
- my $pkg = defined $1 ? $1 : "dll";
- $MAJOR = $PORT{$pkg}->{MAJOR};
- $MINOR = $PORT{$pkg}->{MINOR};
- $PATCH = $PORT{$pkg}->{PATCH};
- }
-
- die "$0: Bad version for $target\n"
- unless defined $MAJOR
- && ( $MAJOR eq 0 || $MAJOR > 0 )
- && defined $MINOR
- && ( $MINOR eq 0 || $MINOR > 0 )
- && defined $PATCH
- && ( $PATCH eq 0 || $PATCH > 0 );
-
- my $ProductId =
- defined $S60SDK ?
-qq[;Supports Series 60 v0.9\n(0x101F6F88), 0, 0, 0, {"Series60ProductID"}\n] :
- defined $S80SDK ?
-qq[;Supports Series 80 v2.0\n(0x101F8ED2), 0, 0, 0, {"Series80ProductID"}\n] :
- defined $S90SDK ?
-qq[;Supports Series 90 v1.1\n(0x101FBE05), 0, 0, 0, {"Series90ProductID"}\n] :
- ";Supports Series NN";
-
- open PKG, '>', $pkg or die "$0: failed to create $pkg: $!\n";
- print PKG <<__EOF__;
-; \u$target installation script
-;
-; The supported languages
-&EN;
-;
-; The installation name and header data
-;
-#{"\u$target"},($uid),$MAJOR,$MINOR,$PATCH
-;
-;Localised Vendor name
-%{"Vendor-EN"}
-;
-; Private key and certificate (unused)
-;
-;* "\u$target.key", "\u$target.cer"
-;
-$ProductId
-; The files to install
-;
-$copy
-__EOF__
- close PKG;
-
- print "Created $pkg\n";
-
- print "Running makesis...\n";
-
- unlink("$target.sis");
-
- system("makesis $pkg") == 0
- || die "$0: makesis $pkg failed: $!\n";
-}
-
-exit(0);
diff --git a/symbian/port.pl b/symbian/port.pl
deleted file mode 100644
index 599321dfb1..0000000000
--- a/symbian/port.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- dll => { MAJOR => 0, MINOR => 4, PATCH => 2 },
- ext => { MAJOR => 0, MINOR => 4, PATCH => 2 },
- lib => { MAJOR => 0, MINOR => 4, PATCH => 2 },
-}
-
diff --git a/symbian/sanity.pl b/symbian/sanity.pl
deleted file mode 100644
index 6487c575c3..0000000000
--- a/symbian/sanity.pl
+++ /dev/null
@@ -1,36 +0,0 @@
-use strict;
-
-if (exists $ENV{'!C:'}) {
- print "You are running this under Cygwin, aren't you? (found '!C' in %ENV)\n";
- print "Are you perhaps using Cygwin Perl? (\$^O is '$^O')\n" if $^O =~ /cygwin/;
- print "I'm sorry but only cmd.exe with e.g. the ActivePerl will work.\n";
- exit(1);
-}
-
-unless(# S60 2.x
- $ENV{PATH} =~ m!\\program files\\common files\\symbian\\tools!i
- ||
- # S60 1.2
- $ENV{PATH} =~ m!\\symbian\\6.1\\shared\\epoc32\\tools!i
- ||
- # S80
- $ENV{PATH} =~ m!\\s80_.+?\\epoc32\\!i
- ||
- # UIQ
- $ENV{PATH} =~ m!\\uiq_.+?\\epoc32\\!i
- ) {
- print "I do not think you have installed a Symbian SDK, your PATH is:\n$ENV{PATH}\n";
- exit(1);
-}
-
-unless (-f "symbian/symbianish.h") {
- print "You must run this in the top level directory.\n";
- exit(1);
-}
-
-if ($] < 5.008) {
- print "You must configure with Perl 5.8 or later.\n";
- exit(1);
-}
-
-1;
diff --git a/symbian/sdk.pl b/symbian/sdk.pl
deleted file mode 100644
index c8845e8108..0000000000
--- a/symbian/sdk.pl
+++ /dev/null
@@ -1,216 +0,0 @@
-use strict;
-
-my $SYMBIAN_VERSION;
-my $SYMBIAN_ROOT;
-my $SDK_NAME;
-my $SDK_VARIANT;
-my $SDK_VERSION;
-my $WIN;
-
-if ($ENV{PATH} =~ m!\\Symbian\\(.+?)\\(.+?)\\Epoc32\\gcc\\bin!i) {
- $SYMBIAN_VERSION = $1;
- $SDK_NAME = $2;
- $WIN = ($SDK_NAME =~ m!_CW!i || $SDK_NAME eq '8.1a') ?
- 'winscw' : 'wins';
- $ENV{WIN} = $WIN;
- if ($SDK_NAME =~ m!Series60_v20!) {
- $SDK_VARIANT = 'S60';
- $SDK_VERSION = $ENV{S60SDK} = '2.0';
- } elsif ($SDK_NAME =~ m!Series60_v21!) {
- $SDK_VARIANT = 'S60';
- $SDK_VERSION = $ENV{S60SDK} = '2.1';
- } elsif ($SDK_NAME =~ m!S60_2nd_FP2!) {
- $SDK_VARIANT = 'S60';
- $SDK_VERSION = $ENV{S60SDK} = '2.6';
- } elsif ($SDK_NAME =~ m!S60_2nd_FP3!) {
- $SDK_VARIANT = 'S60';
- $SDK_VERSION = $ENV{S60SDK} = '2.8';
- } elsif ($SDK_NAME =~ m!S80_DP2_0_SDK!) {
- $SDK_VARIANT = 'S80';
- $SDK_VERSION = $ENV{S80SDK} = '2.0';
- } elsif ($SDK_NAME =~ m!Nokia_7710_SDK!) {
- $SDK_VARIANT = 'S90';
- $SDK_VERSION = $ENV{S90SDK} = '1.1';
- }
-} elsif ($ENV{PATH} =~ m!\\S60\\devices\\(.+?)\\epoc32\\gcc\\bin!i) {
- $SDK_VARIANT = 'S60';
- $SDK_NAME = $1;
- $WIN = $ENV{WIN} = 'winscw';
- $SYMBIAN_VERSION = '9.4';
- $SDK_VERSION = $ENV{S60SDK} = '5.0';
- $SYMBIAN_ROOT = $ENV{EPOCROOT};
-} elsif ($ENV{PATH} =~ m!\\Symbian\\UIQ_(\d)(\d)\\Epoc32\\gcc\\bin!i) {
- $SDK_NAME = 'UIQ';
- $SDK_VARIANT = 'UIQ';
- $SDK_VERSION = $ENV{UIQSDK} = "$1.$2";
- if ($SDK_VERSION =~ /^2\./) {
- $SYMBIAN_VERSION = '7.0s';
- } else {
- die "$0: Unknown UIQ version '$SDK_VERSION'\n";
- }
- $WIN = 'winscw'; # This is CodeWarrior, how about Borland?
- $ENV{WIN} = $WIN;
-}
-
-if (open(GCC, "gcc -v 2>&1 |")) {
- while (<GCC>) {
- # print;
- if (/Reading specs from (.+?)\\Epoc32\\/i) {
- $SYMBIAN_ROOT = $1;
- # The S60SDK tells the Series 60 SDK version.
- if ($ENV{S60SDK}) {
- if ($SYMBIAN_ROOT eq 'C:\Symbian\6.1\Shared') { # Visual C.
- $SYMBIAN_ROOT = 'C:\Symbian\6.1\Series60';
- $SDK_VERSION = $ENV{S60SDK} = '1.2';
- } elsif ($SYMBIAN_ROOT eq 'C:\Symbian\Series60_1_2_CW') { # CodeWarrior.
- $SDK_VERSION = $ENV{S60SDK} = '1.2';
- }
- }
- last;
- }
- }
- close GCC;
-} else {
- die "$0: failed to run gcc: $!\n";
-}
-
-die "$0: failed to locate the Symbian SDK\n" unless defined $SYMBIAN_ROOT;
-
-my $UARM = $ENV{UARM} ? $ENV{UARM} : "urel";
-my $UREL = "$SYMBIAN_ROOT\\epoc32\\release\\-ARM-\\$UARM";
-if ($SYMBIAN_ROOT eq 'C:\Symbian\6.1\Series60' && $ENV{WIN} eq 'winscw') {
- $UREL = "C:\\Symbian\\Series60_1_2_CW\\epoc32\\release\\-ARM-\\urel";
-}
-$ENV{UREL} = $UREL;
-$ENV{UARM} = $UARM;
-
-[ $SYMBIAN_ROOT, $SYMBIAN_VERSION, $SDK_NAME, $SDK_VARIANT, $SDK_VERSION ];
-
-# The following is a cheat sheet for the right S60/S80 SDK settings.
-#
-# symbiancommon.bat:
-# set EPOC_BIN=%EPOCROOT%Epoc32\gcc\bin;%EPOCROOT%Epoc32\Tools
-# set MWCW=C:\Program Files\Metrowerks\CodeWarrior for Symbian OEM v2.8
-# set MSVC=C:\Program Files\Microsoft Visual Studio
-# set MSVC_BIN=%MSVC%\VC98\Bin;%MSVC%\Aux\MSDev98\Bin
-# set MSVC_INC=%MSVC%\VC98\atl\include;%MSVC%\VC98\include;%MSVC%\mfc\include;%MSVC%\include
-# set MSVC_LIB=%MSVC%\mfc\lib;%MSVC%\lib
-#
-# Note that if you are using Microsoft Visual Studio 8
-# (for example because you are using the Microsoft Visual C++
-# 2005 Express Edition), the MSVC settings will be different:
-# set MSVC=C:\Program Files\Microsoft Visual Studio 8\VC
-# set MSVC_BIN=%MSVC%\bin
-# set MSVC_INC=%MSVC%\include
-# set MSVC_LIB=%MSVC%\lib
-#
-# s60-1.2-cw:
-#
-# set EPOCROOT=\Symbian\Series60_1_2_CW\
-# symbiancommon
-# set PATH=%EPOC_BIN%;%MSVC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
-# set USERDEFS=%USERDEFS% -D__SERIES60_12__ -D__SERIES60_MAJOR__=1 -D__SERIES60_MINOR__=2 -D__SERIES60_1X__
-#
-# s60-1.2-vc:
-#
-# set EPOCROOT=\Symbian\6.1\Series60\
-# symbiancommon
-# set PATH=\Symbian\6.1\Shared\Epoc32\gcc\bin;\Symbian\6.1\Shared\Epoc32\Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
-# set INCLUDE=%MSVC_INC%
-# set LIB=%MSVC_LIB%
-# set USERDEFS=%USERDEFS% -D__SERIES60_12__ -D__SERIES60_MAJOR__=1 -D__SERIES60_MINOR__=2 -D__SERIES60_1X__
-#
-# s60-2.0-cw:
-#
-# set EPOCROOT=\Symbian\7.0s\Series60_v20_CW\
-# set EPOCDEVICE=Series60_2_0_CW:com.Nokia.Series60_2_0_CW
-# symbiancommon
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
-# set USERDEFS=%USERDEFS% -D__SERIES60_20__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=0 -D__SERIES60_2X__
-#
-# s60-2.0-vc:
-#
-# set EPOCROOT=\Symbian\7.0s\Series60_v20\
-# set EPOCDEVICE=Series60_v20:com.nokia.series60
-# symbiancommon
-# set PATH=%EPOC_BIN%;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
-# set INCLUDE=%MSVC_INC%
-# set LIB=%MSVC_LIB%
-# set USERDEFS=%USERDEFS% -D__SERIES60_20__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=0 -D__SERIES60_2X__
-#
-# s60-2.1-cw:
-#
-# set EPOCROOT=\Symbian\7.0s\Series60_v21_CW\
-# set EPOCDEVICE=Series60_v21_CW:com.Nokia.series60
-# symbiancommon
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
-# set USERDEFS=%USERDEFS% -D__SERIES60_21__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=1 -D__SERIES60_2X__
-#
-# s60-2.6-cw:
-#
-# set EPOCROOT=\Symbian\8.0a\S60_2nd_FP2_CW\
-# set EPOCDEVICE=S60_2nd_FP2_CW:com.nokia.series60
-# symbiancommon
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
-# set USERDEFS=%USERDEFS% -D__SERIES60_26__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=6 -D__SERIES60_2X__ -D__BLUETOOTH_API_V2__
-#
-# s60-2.6-vc:
-#
-# set EPOCROOT=\Symbian\8.0a\S60_2nd_FP2\
-# set EPOCDEVICE=S60_2nd_FP2:com.nokia.Series60
-# symbiancommon
-# set PATH=%EPOC_BIN%;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
-# set INCLUDE=%MSVC_INC%
-# set LIB=%MSVC_LIB%
-# set USERDEFS=%USERDEFS% -D__SERIES60_26__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=6 -D__SERIES60_2X__ -D__BLUETOOTH_API_V2__
-#
-# s60-2.8-cw:
-#
-# set EPOCROOT=\Symbian\8.1a\S60_2nd_FP3\
-# set EPOCDEVICE=S60_2nd_FP3:com.nokia.series60
-# symbiancommon
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
-# set USERDEFS=%USERDEFS% -D__SERIES60_28__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=8 -D__SERIES60_2X__ -D__BLUETOOTH_API_V2__
-#
-# s60-2.8-vc:
-#
-# set EPOCROOT=\Symbian\8.1a\S60_2nd_FP3\
-# set EPOCDEVICE=S60_2nd_FP3:com.nokia.series60
-# symbiancommon
-# set PATH=%EPOC_BIN%;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
-# set USERDEFS=%USERDEFS% -D__SERIES60_28__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=8 -D__SERIES60_2X__ -D__BLUETOOTH_API_V2__
-#
-# s60-5.0 - S60 5th Edition SDK v1.0:
-#
-# set EPOCROOT=\S60\devices\S60_5th_Edition_SDK_v1.0\
-# set PATH=%EPOCROOT%Epoc32\gcc\bin;%EPOCROOT%Epoc32\tools;%PATH%
-#
-# s80-2.0-cw:
-#
-# set EPOCROOT=\Symbian\7.0s\S80_DP2_0_SDK_CW\
-# set EPOCDEVICE=Series80_DP2_0_SDK_CW:com.nokia.Series80
-# symbiancommon
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
-# set USERDEFS=%USERDEFS% -D__SERIES80_20__ -D__SERIES80_MAJOR__=2 -D__SERIES80_MINOR__=0 -D__SERIES80_2X__
-#
-# s80-2.0-vc:
-#
-# set EPOCROOT=\Symbian\7.0s\S80_DP2_0_SDK\
-# set EPOCDEVICE=Series80_DP2_0_SDK:com.nokia.Series80
-# symbiancommon
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
-# set USERDEFS=%USERDEFS% -D__SERIES80_20__ -D__SERIES80_MAJOR__=2 -D__SERIES80_MINOR__=0 -D__SERIES80_2X__
-#
-# UIQ-2.1-vc:
-# set EPOCROOT=\Symbian\UIQ_21\
-# set EPOCDEVICE=
-# set EPOC_BIN=%EPOCROOT%Epoc32\gcc\bin;%EPOCROOT%Epoc32\Tools
-# set MWCW=C:\APPS\codewarrior_3.0
-# set MSVC=C:\Program Files\Microsoft Visual Studio
-# set MSVC_BIN=%MSVC%;%MSVC%\Common\MSDev98\Bin
-# set MSVC_INC=%MSVC%\VC98\atl\include;%MSVC%\mfc\include;%MSVC%\include
-# set MSVC_LIB=%MSVC%\mfc\lib;%MSVC%\lib
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
-# set USERDEFS=%USERDEFS% -D__UIQ_21__ -D__UIQ_MAJOR__=2 -D__UIQ_MINOR__=1 -D__UIQ_2X__
-#
-# EOF
diff --git a/symbian/sisify.pl b/symbian/sisify.pl
deleted file mode 100644
index 7b5506c13f..0000000000
--- a/symbian/sisify.pl
+++ /dev/null
@@ -1,410 +0,0 @@
-#!/usr/bin/perl -w
-
-#
-# sisify.pl - package Perl scripts or Perl libraries into SIS files
-#
-# Copyright (c) 2004-2005 Nokia. All rights reserved.
-# The sisify.pl utility is licensed under the same terms as Perl itself.
-#
-
-require 5.008;
-
-use strict;
-
-use vars qw($VERSION);
-
-$VERSION = '0.2';
-
-use Getopt::Long;
-use File::Temp qw/tempdir/;
-use File::Find;
-use File::Basename qw/basename dirname/;
-use Cwd qw/getcwd/;
-
-BEGIN {
- # This utility has been developed in Windows under cmd.exe with
- # the Series 60 2.6 SDK installed, but for the makesis utility
- # in UNIX/Linux, try e.g. one of the following:
- # http://gnupoc.sourceforge.net/
- # http://symbianos.org/~andreh/ You
- # will also need the 'uidcrc' utility.
- die "$0: Looks like Cygwin, aborting.\n" if exists $ENV{'!C:'};
-}
-
-sub die_with_usage {
- if (@_) {
- warn "$0: $_\n" for @_;
- }
- die <<__USAGE__;
-$0: Usage:
-$0 [--variant=S60|S80|UIQ] [ --uid=hhhhhhhh ] [ --version=a.b.c ] [ --library=x.y.z ] [ some.pl | Some.pm | somefile | dir ... ]
-The uid is the Symbian app uid for the SIS.
-The version is the version of the SIS.
-The library is the version of Perl under which to install. If using this,
-only specify directories for packaging.
-__USAGE__
-}
-
-my $SisUid;
-my $SisVersion;
-my $Library;
-my @SisPl;
-my @SisPm;
-my @SisDir;
-my @SisOther;
-my $AppName;
-my $Debug;
-my $ShowPkg;
-my $Variant;
-
-my $SisUidDefault = 0x0acebabe;
-my $SisVersionDefault = '0.0.0';
-my $VariantDefault = 'S60';
-
-my %Variant = qw(S60 1 S80 1 UIQ 1);
-
-die_with_usage()
- unless GetOptions(
- 'variant=s' => \$Variant,
- 'uid=s' => \$SisUid,
- 'version=s' => \$SisVersion,
- 'debug' => \$Debug,
- 'showpkg' => \$ShowPkg,
- 'library=s' => \$Library,
- 'appname=s' => \$AppName,
- );
-die_with_usage("Need to specify what to sisify")
- unless @ARGV;
-
-unless (defined $Variant) {
- warn "$0: Defaulting to $VariantDefault\n";
- $Variant = $VariantDefault;
-}
-
-unless (exists $Variant{$Variant}) {
- die "$0: Unknown variant '$Variant'\n";
-}
-
-for my $i (@ARGV) {
- if ($i =~ /\.pl$/i) {
- push @SisPl, $i;
- } elsif ($i =~ /\.pm$/i) {
- push @SisPm, $i;
- } elsif (-f $i) {
- push @SisOther, $i;
- } elsif (-d $i) {
- push @SisDir, $i;
- } else {
- die_with_usage("Unknown sisifiable '$i'");
- }
-}
-
-sub do_system {
- my $cwd = getcwd();
- print qq{\# system("@_") [cwd "$cwd"]\n};
- return system("@_") == 0;
-}
-
-die_with_usage("Must specify something to sisify")
- unless @SisPl || @SisPm || @SisOther || @SisDir;
-
-die_with_usage("With the lib option set, specify only directories")
- if defined $Library && ((@SisPl || @SisPm || @SisOther) || @SisDir == 0);
-
-die_with_usage("Lib must define the Perl 5 version as 5.x.y")
- if defined $Library && $Library !~ /^5.\d+\.\d+$/;
-
-die_with_usage("With the lib option unset, specify at least one .pl file")
- if (! defined $Library && @SisPl == 0);
-
-if (!defined $AppName) {
- if (defined $Library) {
- $AppName = $SisDir[0];
- $AppName =~ tr!/!-!;
- } elsif (@SisPl > 0 && $SisPl[0] =~ /^(.+)\.pl$/i) {
- $AppName = basename($1);
- }
-}
-
-die_with_usage("Must either specify appname or at least one .pl file or the lib option")
- unless defined $AppName || defined $Library;
-
-print "[app name '$AppName']\n" if $Debug;
-
-unless (defined $SisUid) {
- $SisUid = $SisUidDefault;
- printf "[default app uid '0x%08x']\n", $SisUid;
-} elsif ($SisUid =~ /^(?:0x)?([0-9a-f]{8})$/i) {
- $SisUid = hex($1);
-} else {
- die_with_usage("Bad uid '$SisUid'");
-}
-$SisUid = sprintf "0x%08x", $SisUid;
-
-die_with_usage("Bad uid '$SisUid'")
- if $SisUid !~ /^0x[0-9a-f]{8}$/i;
-
-unless (defined $SisVersion) {
- $SisVersion = $SisVersionDefault;
- print "[default app version '$SisVersionDefault']\n";
-} elsif ($SisVersion !~ /^\d+\.\d+\.\d+$/) {
- die_with_usage("Bad version '$SisVersion'")
-}
-
-my $tempdir = tempdir( CLEANUP => 1 );
-
-print "[temp directory '$tempdir']\n" if $Debug;
-
-for my $file (@SisPl, @SisPm, @SisOther) {
- print "[copying file '$file']\n" if $Debug;
- die_with_usage("$0: File '$file': $!") unless -f $file;
- my $dir = dirname($file);
- do_system("mkdir $tempdir\\$dir") unless $dir eq '.';
- do_system("copy $file $tempdir");
-}
-if (@SisPl) {
- do_system("copy $SisPl[0] $tempdir\\default.pl")
- unless $SisPl[0] eq "default.pl";
-}
-for my $dir (@SisDir) {
- print "[copying directory '$dir']\n" if $Debug;
- do_system("copy $dir $tempdir");
-}
-
-my $SisVersionCommas = $SisVersion;
-
-$SisVersionCommas =~ s/\./\,/g;
-
-my @pkg;
-
-push @pkg, qq[&EN;];
-push @pkg, qq[#{"$AppName"},($SisUid),$SisVersionCommas];
-push @pkg, qq[(0x101F6F88), 0, 0, 0, {"Series60ProductID"}];
-
-my $OWD = getcwd();
-
-$OWD =~ s!/!\\!g;
-
-chdir($tempdir) or die "$0: chdir('$tempdir')\n";
-
-if (@SisPl) {
- if (open(my $fi, "<", "default.pl")) {
- my $fn = "default.pl.new";
- if (open(my $fo, ">", $fn)) {
- while (<$fi>) {
- last unless /^\#/;
- print $fo $_;
- }
- print $fo "use lib qw(\\system\\apps\\$AppName \\system\\apps\\$AppName\\lib);\n";
- printf $fo qq[# %d "$SisPl[0]"\n], $.;
- print $fo $_;
- while (<$fi>) {
- print $fo $_;
- }
- close($fo);
- } else {
- die "$0: open '>$fn': $!\n";
- }
- close($fi);
- rename($fn, "default.pl") or die "$0: rename $fn default.pl: $!\n";
- # system("cat -nvet default.pl");
- } else {
- die "$0: open 'default.pl': $!\n";
- }
-}
-
-
-my @c;
-find(
- sub {
- if (-f $_) {
- $File::Find::name =~ s!^\./!!;
- push @c, $File::Find::name;
- }
- }
- ,
- ".");
-
-for my $i (sort @c) {
- my $j = $i;
- $j =~ s!/!\\!g;
- push @pkg, defined $Library ? qq["$j"-"!:\\System\\Libs\\Perl\\siteperl\\$Library\\$j"] : qq["$j"-"!:\\system\\apps\\$AppName\\$j"];
-}
-
-sub hex2data {
- pack("H*", shift); # symbian\hexdump.pl to create the hexdumps.
-}
-
-my $APPHEX;
-my $RSCHEX;
-
-unless ($Library) {
- # If we package an application we will need both a launching native
- # Symbian application and a resource file for it. The resource file
- # we can get easily from a stub but for the native app we need to
- # patch in the right Symbian app uids and executable checksums.
-
- &init_hex; # Initialized $APPHEX and $RSCHEX.
-
- die "$0: No app template found\n" unless defined $APPHEX && defined $RSCHEX;
-
- my $app = hex2data($APPHEX);
- my $uidcrc;
- my $uids = "0x10000079 0x100039CE $SisUid";
-
- my $cmd = "uidcrc $uids |";
-
- if (open(my $fh, '<', $cmd)) {
- my $line = <$fh>;
- close($fh);
- # 0x10000079 0x100039ce 0x0acebabe 0xc82b1900
- $line =~ s/\r?\n$//;
- if ($line =~ /^$uids (0x[0-9a-f]{8})$/i) {
- $uidcrc = hex($1);
- } else {
- die "$0: uidcrc returned '$line'\n";
- }
- } else {
- die qq[$0: open '$cmd' failed: $!\n];
- }
-
- my $uid = hex($SisUid);
-
- my $oldchk = unpack('V', substr($app, 24, 4));
- my $newchk = ($uid + $oldchk) & 0xFFFFFFFF;
-
- # printf "# uid = 0x%08x\n", $uid;
- # printf "# uidcrc = 0x%08x\n", $uidcrc;
- # printf "# oldchk = 0x%08x\n", $oldchk;
- # printf "# newchk = 0x%08x\n", $newchk;
-
- substr($app, 8, 4) = pack('V', $uid);
- substr($app, 12, 4) = pack('V', $uidcrc);
- substr($app, 24, 4) = pack('V', $newchk);
-
- my $UID_OFFSET = 0x0C7C; # This is where the uid is in the $app.
- substr($app, $UID_OFFSET, 4) = substr($app, 8, 4); # Copy the uid also here.
-
- if (open(my $fh, '>', "$AppName.app")) {
- binmode($fh);
- print $fh $app;
- close($fh);
- } else {
- die qq[$0: open '>$AppName.app' failed: $!\n];
- }
-
- push @pkg, qq["$AppName.app"-"!:\\system\\apps\\$AppName\\$AppName.app"];
-
- if (open(my $fh, '>', "$AppName.rsc")) {
- binmode($fh);
- print $fh hex2data($RSCHEX);
- close($fh);
- } else {
- die qq[$0: open '>$AppName.rsc' failed: $!\n];
- }
- push @pkg, qq["$AppName.rsc"-"!:\\system\\apps\\$AppName\\$AppName.rsc"];
-}
-
-if ($ShowPkg) {
- for my $l (@pkg) {
- print $l, "\r\n";
- }
-} else {
- my $fn = "$AppName.pkg";
- if (open(my $fh, '>', $fn)) {
- for my $l (@pkg) {
- print $fh "$l\r\n"; # Note CRLF!
- }
- close($fh);
- } else {
- die qq[$0: Failed to open "$fn" for writing: $!\n];
- }
- my $sis = "$AppName.SIS";
- unlink($sis);
- do_system("dir");
- do_system("makesis $fn");
- unless (-f $sis) {
- die qq[$0: failed to create "$sis"\n];
- }
- do_system("copy $AppName.sis $OWD");
- chdir($OWD);
- system("dir $sis");
- print "\n=== Now transfer $sis to your device ===\n";
-}
-
-exit(0);
-
-# To create the hex: print unpack("H*", $data);
-
-sub init_hex {
- # This is Symbian application executable skeleton.
- # You can create the ...\epoc32\release\thumb\urel\foo.app
- # 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.
- # 'make sisify_hex' to create the perlappmin.hex for this hexdump.
- if ($Variant eq 'S60') {
- $APPHEX = <<__APP__;
-79000010ce390010f61520108581107645504f4300200000b6b005db000000000100bf00c025ed22d7e2e000030000019828000000000000001000000000100000200000000000000100000000000010000000000a0000001029000001000000402600007c0000000000000014290000802c0000000000005e01000000b501f0bbfa02bc0847000001480068704700004421001000b5011c024801f0f5fc01bc004700006421001084b030b50390049105920693204903a801f0ecfc041c0025002c06d103a8002101f0eafc00885c282bd0022c2ad103a8002101f0e1fc0088402806d903a8002101f0dafc00885a280dd903a8002101f0d3fc0088602815d903a8002101f0ccfc00887a280ed803a8012101f0c5fc00883a2807d103a8022101f0befc00885c2800d10125281c30bc08bc04b018470000cc22001084b030b50390049105920693204903a801f0a2fc041c0025002c06d103a8002101f0a0fc00885c282bd0022c2ad103a8002101f097fc0088402806d903a8002101f090fc00885a280dd903a8002101f089fc0088602815d903a8002101f082fc00887a280ed803a8012101f07bfc00883a2807d103a8022101f074fc00885c2800d10125281c30bc08bc04b018470000ac22001030b584b001f096fa009001916d4602ac0849201c01f062fc281c211c01f064fc0021002800d10121081c04b030bc02bc08470000d81d001030b584b001f07afa009001916d4602ac0849201c01f046fc281c211c01f048fc0021002800d10121081c04b030bc02bc08470000e41d0010f0b52c4ca54486ab18600f1c151c012668468021490001f035fc82ac2649201c01f024fc6846211c2a1c01f031fc684601f0d4fc002855d084ac2049201c01f015fc6846211c2a1c01f022fc684601f0c5fc002846d086a8291c01f0e3f900280fd087ac1649201c01f000fc6846211c2a1c01f00dfc684601f0b0fc002800d10026002e2ed086a8391c2a1c012301f0cff9061c002e17d189ac0a49201c01f0e5fb6846211c2a1c01f0f2fb684601f09bfc17e0ccfdfffff01d00105c1e00107c1e00109c1e00108bac0949201c01f0cdfb6846211c321c2b1c01f0d9fb684601f088fc8d239b009d44f0bc01bc0047b81e001084b0f0b557464e464546e0b484b00c900d910e920f934ea800684e904fa80068814601f0c3fb4c466468a0460c980001070900264e9c0294484601f0b7fbbc4200dbc1e10ca8029901f0b6fb007820281cd00ca8029901f0affb0078092815d00ca8029901f0a8fb00780a280ed00ca8029901f0a1fb00780d2807d00ca8029901f09afb00780c2800d09de1029cbc4200db99e10ca8211c01f08efb007820281bd00ca8029901f087fb0078092814d00ca8029901f080fb00780a280dd00ca8029901f079fb00780d2806d00ca8029901f072fb00780c2803d1029c01340294d4e7029cbc4200db6ee10ca8211c01f063fb0078402806d90ca8029901f05cfb00785a280fd90ca8029901f055fb0078602800d858e10ca8029901f04dfb00787a2800d950e1029cbc4200db04e10ca8211c01f041fb0078402806d90ca8029901f03afb00785a2823d90ca8029901f033fb0078602806d90ca8029901f02cfb00787a2815d90ca8029901f025fb00782f2806d90ca8029901f01efb0078392807d90ca8029901f017fb00785f2800d0d2e0029cbc4243da0ca8211c01f00cfb0078402806d90ca8029901f005fb00785a2822d90ca8029901f0fefa0078602806d90ca8029901f0f7fa00787a2814d90ca8029901f0f0fa00782f2806d90ca8029901f0e9fa0078392806d90ca8029901f0e2fa00785f2812d1464510da311c0136484601f0b2fa039002990c1c013402940ca801f0d0fa0078039c2080b8e7029c0134a246ba4500db7ce70ca8029901f0c2fa00783a2800d074e70ca8514601f0bafa00783a2800d06ce7464500db69e7311c0136484601f088fa5c210180029c02340294bc4266da0ca8211c01f0a3fa0078402806d90ca8029901f09cfa00785a280fd90ca8029901f095fa0078602800d847e70ca8029901f08dfa00787a2800d93fe7029cbc4245da0ca8211c01f082fa0078402806d90ca8029901f07bfa00785a2823d90ca8029901f074fa0078602806d90ca8029901f06dfa00787a2815d90ca8029901f066fa00782f2806d90ca8029901f05ffa0078392807d90ca8029901f058fa00785f2800d00ae7464500db07e7311c0136484601f026fa039002990c1c013402940ca801f044fa0078039c2080b6e7029cbc4244da0ca8211c01f039fa007820281bd00ca8029901f032fa0078092814d00ca8029901f02bfa00780a280dd00ca8029901f024fa00780d2806d00ca8029901f01dfa00780c2803d1029c01340294d5e7029cbc421ada0ca8211c01f00ffa00783b2813d1f01c404510da4846311c01f00bfa6c460449201c01f0e0f94846211c01f008fa012002e0d81d0010002004b038bc9846a146aa46f0bc08bc04b0184783b0f0b54f464646c0b44d4ca544071c8824e4006c4421604a4c6c4422608924e4006c442360a920c000684406688225ed006d448424e4006c4425604249206801f0def98820c00068448424e4006c44216801f0dbf9814601204c46c44200d1a1e040a88021490001f0a4f9c224a4006c44a0468422520040468821c900694401f0caf9484607303e9040ac3f94c6a96846f82201f0c0f944462068c3a90968c4aa1268c5ab1b68fff7bcfd00287ad040468021490001f0b5f9301c00f0a0ff8322d2006a44106051608321c9006944404601f0adf91d49404601f0aff9381c01f076f9216809010909409800010009013009187868814251da0026b146c224a4006c44a046444620680001000981451eda311c0136381c01f03af98424e4006c442060c2a8494601f058f900788424e4006c44256828800124a144e3e70000dcfbffff44040000041f0010e0220010311c0136381c01f01bf95c2101800024a146409800010009814515da311c0136381c01f00df98424e4006c44206040a8494601f005f900888424e4006c44256828800124a144e4e7381c311c01e0381c002101f021f9044b9d4418bc9846a146f0bc08bc03b018472404000084b070b586b00a900b910c920d9300260aa8022101f03af9009001916d4602ac0e49201c01f00ef9281c211c01f034f900280cd104ac0a49201c01f003f90aa8211c01f005f90121c84200d00126301c06b070bc08bc04b018470000141f0010181f001081b0f0b54f464646c0b4644ca54480460e1ccd24e4006c442260d124e4006c442360f220c0006844076840a88021490001f0b0f8301c00f0d3fecb22d2006a4410605160cd24e4006c44206800f0cefecc22d2006a4410605160ca25ed006d44cd24e4006c4425604d49206801f086f84c4bcd24e4006c442568cb22d2006a44cc20c0006844009040a8216801f088f80024a146c225ad006d44cd24e4006c442560206840a900f0a7fecd24e4006c442068fff711fc00281ad1caac84225200201cd121c900694401f096f8cea96846f82201f091f82068cba90968ccaa1268cdab1b68fff75aff002801d10124a1464c46200600284ad040a8002101f064f8c2ac201c40a900f077fe201cfff7c8fb00283cd08623db006b4423485861321c01ca1860214c6c44a446032101246442a14601ca64460434a446043c206001394945f6d11a485861311c18318920c00068448222920001f04ff8c2ac84225200201cd121c900694401f046f88620c00068443f90c5a96846fc2201f03df82168c3a80268c4a8036840a8fff729fe4098000100280ed1002012e0000094f9ffff281f0010cc220010082300103404000040250010381c414640aafff7a9fb0120044b9d4418bc9846a146f0bc08bc01b0184700006c06000083b0f0b5474680b4354ca544051ceb24e4006c442160334c6c442260ec24e4006c44236000260027822292007ea8291c00f0f6ff82a96846fc22520000f0f0ff7e987f99809a819bfff7aafa002838d08024e4006c44a0464046291c00f0e0fd4046fff74dfb00282ad14046291c00f0d7fd4046fff728fb061c002e20d18424e4006c4484225200201ceb21c900694400f0c6ff8621c90069446846f82200f0bfff20681049694409688522d2006a4412680e4b6b441b68fff784fe002800d00127380600284dd07ea88021490000f075ff002e0ed0e624e4006c4404490de0c0f8ffff5c070000240400002c040000481f0010e724e4006c441749201c00f051ff7ea8211c2a1c00f05eff7ea801f013f800281dd0a524e4006c4482229200201c291c00f07cffa721c90069446846fc22520000f074ff2068084969440968a622d2006a441268054b6b441b6800f01ffa012007e00000741f00102c050000340500000020e823db009d4408bc9846f0bc08bc03b01847f0b5474680b4244ca54480460f1c7ea800f050fd8320c000684400f04bfdc720c00068448021490000f00cff7ea8391c0022002300f044fd381c002100f0f0fe0088402806d9381c002100f0e9fe00885a280dd9381c002100f0e2fe008860281cd9381c002100f0dbfe00887a2815d8381c012100f0d4fe00883a280ed1381c022100f0cdfe00885c2807d18320c0006844391c14e0000048eeffff842424016c4400f0b3fc806900f04afd011c0a68201c126a00f066fc8320c0006844211c0022002300f0fcfcb6256d0045442868002803d100f09afc1c302860574d6d4400215648684401606960b620400040440168281c3a1c002300f0eafc061c002e00d0fde08420000168448021490000f0d1fe842109016944281c00f0e1fc061c281c00f0e3fc002e00d0dde0444c6c4482229200201c391c00f0b6fe414969446846fc22520000f0affe20683e4969440968a52212016a4412683c4b6b441b68fff7acf9002800d184e0c52212016a448320c00068443649516100681060354e6e440321344b6b4401256d4201cb01c60139a942fad131485061314868448621c90069448222920000f07efee7231b016b447ea9264858617e981860294d6d440322fe2464006c44a4460126764264460434a446043c206801c5013ab242f6d11e4858611831204868448222920000f05bfec5252d016d44e72636016e44842109016944194c6c4484225200201c00f04bfeb620400040440068006841901449694468468222520000f03efe2368381c291c321cfff73cfd37e0000098110000480a0000580a00004c0a0000540a000008230010540c00001c04000040250010680c0000740e0000880e00009010000094100000842109016944c52424016c4484225200201c00f00ffe134969446846fc2200f009fe2168104868440268104868440368381cfff7effd0021002800d101210806002835d0c724e4006c448d256d016d440749281c00f0b0fd201c291c3a1c00f0bdfd22e05c0c0000540c0000580c00008c1f0010c724e4006c44024d6d4402490ae00000a8110000b41f0010c724e4006c440f4d6d440f49281c00f08dfd201c291c321c3b1c00f099fd201c00f048fe4446a06a00280fd000f06efb816900290dd008688268081c032100f021fb06e0b0110000dc1f0010404600f0fdfb034b9d4408bc9846f0bc01bc0047b8110000f0b5071c0e1c244878612448b8612448f8612448b8642448f86424483860b42464003d192968002910d0786800f0e2fb2968002905d008688268081c032100f0effab4246400391900200860b62464003d192868002803d000f098fd00202860b96a002905d008688268081c032100f0d7fa094878610948b8610948f8610948b8640948f8640a483860381c311c00f01bfef0bc01bc0047c82500102c2600101c260010fc25001008260010942300101823001084b030b51d4ca5449c909d919e929f9301200021002200f0cdfd041c96a901a800f060fd002808d10090201c9ca90222002300f0c5fd00f05bfd96a80068002813d014a88021490000f0f0fc14ad97ac0b49201c00f0defc96a80268281c211c00f0eafc281c00f09ffd00f047fd99239b009d4430bc08bc04b018479cfdffff3420001010b5094ca544041c68468022520000f039fd201c6946fff7a5fd82239b009d4410bc01bc00470000f8fdfffff0b5474680b4324ca544071c8846022952d100f031fb011c0a687ea8126a00f04dfa8026f6006e44301c00f0dffa2949301c7eaa002300f0dffac425ed006d44281c00f0f5fa244c6c440021224868440160201c042100f0f1fa301c00f0f4fa011c201c2a1c00f0f5fa002824d1301c00f0eafa011c8420000168448022520000f0eafc8521090169446846fc22520000f0a6fc84200001684400680f49694409680f4a6a4412680e4b6b441b68fff74fff381c00f0e6fa00204446002c00d10120094b9d4408bc9846f0bc02bc0847b4f5ffff48210010480a000044080000480800004c0800004c0a000010b5b62464000019016010bc01bc0047f0b50b4ca5440b4c6c4421607ea88021490000f035fc074c6c442468064d6019052800d92ce180000449401800688746c8f7ffff3408000000fcffff0812001020120010501200107c12001000130010b8130010cc13001009490a4b0320009000220192042002900392049302200590062006907ea80522092300f007fcbbe0842100107821001001200021002200f0bbfc8022d2006a44131c054970c970c30321002300f0befc00f052fcebe00000882000101a4868448021490000f0e0fb174f6f44174c6c441749201c00f0ccfb381c211c00f048fc381c00f0abfc002800d1d0e0114c6c4482229200201c391c00f0f8fb0e4969446846fc22520000f0f1fb2068c321c90069440968094a6a441268c423db006b441b68fff79bfeb2e00c0400001c0800009420001014060000240600001c06000000f086f98569254c6c442549201c00f08ffb24492f1c6037201c3a1c802300f073fc002800d192e08020c0006844c021490000f0c1fb8025ed006d44281c391c00f060f901200021002200f041fc061c0c2000f055fb041c00f0f0fb124a6a44124911486844016054600f4868444168006800f0e9fb0e4820600e486060281c00f0eafba060301c0321221c002300f02dfc022000f0e6fb59e0000024080000b42000109c2000102c080000f5190010181f00105020001003497ea800f04afb7ea800f0f3fb42e0042200108020c00068448021490000f037fbc120c00068448021490000f030fb1349144b8024e4006c44032000900022019204200290039204930220059006200690201c0522092300f020fb201c00f0c9fb094800f0a8fbc124e4006c440749201c00f013fb201c00f0bcfb0be00000842100107821001040420f00042200100120fef7e5fd024b9d44f0bc01bc00473808000030b5051c242000f08bfb041c002c04d0291c00f0e5fb03482060201c30bc02bc084700004c240010f0b54f464646c0b4b820400000f074fb071c002f2ad000f065f91848b8641848f864184ca1467c61174ca046bc61174efe61174dbd64174cfc64174838604c467c614446bc61134cfc6414483860381c6030802100f0b6fa4c467c614446bc61fe61bd640b4cfc640d483860381c18bc9846a146f0bc02bc08470000202500102c250010c82500102c2600101c260010fc25001008260010502500101823001094230010f0b50d1c171c1c1c00f06ef88669301c211cfff73dfe002d05d03068426d301c391c00f01df80020f0bc02bc0847000010b58b20800000f013fb041c002c03d000f004f902482060201c10bc02bc0847e4240010002070470047704708477047104770471847704720477047284770473047704738477047404770474847704750477047584770476047704770477047014b1b681847c04640260010014b1b681847c04648260010014b1b681847c0464c260010014b1b681847c04644260010014b1b681847c0468c26001040b4024e3668b44640bc604788260010014b1b681847c04690260010014b1b681847c046a8260010014b1b681847c046a0260010014b1b681847c04694260010014b1b681847c04698260010014b1b681847c046a4260010014b1b681847c0469c260010014b1b681847c046b4260010014b1b681847c046b8260010014b1b681847c046ac260010014b1b681847c046b0260010014b1b681847c046cc260010014b1b681847c046c4260010014b1b681847c046d4260010014b1b681847c046ec260010014b1b681847c046f426001040b4024e3668b44640bc6047e826001040b4024e3668b44640bc6047e0260010014b1b681847c046e4260010014b1b681847c046bc260010014b1b681847c046f0260010014b1b681847c046c0260010014b1b681847c046d0260010014b1b681847c046c8260010014b1b681847c046dc260010014b1b681847c046d8260010014b1b681847c046f8260010014b1b681847c04628270010014b1b681847c04674270010014b1b681847c046c0270010014b1b681847c046bc270010014b1b681847c046d4270010014b1b681847c04684270010014b1b681847c04634270010014b1b681847c04644270010014b1b681847c046a4270010014b1b681847c04670270010014b1b681847c04614270010014b1b681847c04648270010014b1b681847c046b0270010014b1b681847c04688270010014b1b681847c0468c270010014b1b681847c04610270010014b1b681847c04660270010014b1b681847c04600270010014b1b681847c0467c270010014b1b681847c04630270010014b1b681847c046fc260010014b1b681847c04690270010014b1b681847c04658270010014b1b681847c04618270010014b1b681847c04624270010014b1b681847c04668270010014b1b681847c0469c270010014b1b681847c046a8270010014b1b681847c04694270010014b1b681847c0462c270010014b1b681847c04654270010014b1b681847c04650270010014b1b681847c04678270010014b1b681847c04680270010014b1b681847c046ac270010014b1b681847c046c827001040b4024e3668b44640bc60476c270010014b1b681847c0466427001040b4024e3668b44640bc60474c270010014b1b681847c046a0270010014b1b681847c0460c270010014b1b681847c04638270010014b1b681847c0460427001040b4024e3668b44640bc604798270010014b1b681847c04620270010014b1b681847c0461c270010014b1b681847c0465c270010014b1b681847c046c4270010014b1b681847c04608270010014b1b681847c0463c270010014b1b681847c046cc270010014b1b681847c046d027001040b4024e3668b44640bc604740270010014b1b681847c046b8270010014b1b681847c046b4270010014b1b681847c046dc270010014b1b681847c046d8270010014b1b681847c04620280010014b1b681847c0460c280010014b1b681847c046f8270010014b1b681847c04650280010014b1b681847c046fc270010014b1b681847c0464828001040b4024e3668b44640bc604714280010014b1b681847c04638280010014b1b681847c046f4270010014b1b681847c04634280010014b1b681847c046f0270010014b1b681847c0464c280010014b1b681847c04610280010014b1b681847c046e0270010014b1b681847c04654280010014b1b681847c04604280010014b1b681847c046ec270010014b1b681847c0461c280010014b1b681847c04600280010014b1b681847c04658280010014b1b681847c0463c280010014b1b681847c04640280010014b1b681847c04624280010014b1b681847c04644280010014b1b681847c04608280010014b1b681847c0461828001040b4024e3668b44640bc604730280010014b1b681847c0462c280010014b1b681847c04628280010014b1b681847c046e8270010014b1b681847c046e4270010014b1b681847c0465c280010014b1b681847c04660280010014b1b681847c04674280010014b1b681847c0466c280010014b1b681847c04684280010014b1b681847c04688280010014b1b681847c0467028001040b4024e3668b44640bc60477c28001040b4024e3668b44640bc604778280010014b1b681847c0466428001040b4024e3668b44640bc604780280010014b1b681847c0468c280010014b1b681847c04668280010014b1b681847c04680260010014b1b681847c04684260010014b1b681847c04664260010014b1b681847c04670260010014b1b681847c04654260010014b1b681847c0465c26001040b4024e3668b44640bc604750260010014b1b681847c0467c260010014b1b681847c04678260010014b1b681847c0466c260010014b1b681847c04668260010014b1b681847c04658260010014b1b681847c04660260010014b1b681847c046742600107047000000b5084a4261084a8261084ac261084a8264084ac264084a0260fff799ff01bc00470000c82500102c2600101c260010fc250010082600101823001000b5fff75dfe01bc0047000000b5fff75dfe01bc0047000000b5fff751fe01bc0047000000b5fff74bfe01bc0047000010b581b0039c14380094fff7e1fd01b010bc01bc0047000000b51438fff7b2ff01bc004700b51438fff7dafd01bc004700b51838fff724fe02bc084700b51c38fff718fe02bc084700b51c38fff70cfe02bc084700b54838fff788ff01bc004700b54c38fff788ff01bc0047ffffffff00000000ffffffff000000004421001064210010cc220010ac2200102e0070006d000000d81d00102e0070006c000000e41d001025005300200069007300200075006e0074007200750073007400650064002e00200049006e007300740061006c006c0020006f006e006c007900200069006600200079006f0075002000740072007500730074002000700072006f00760069006400650072002e000000000049006e007300740061006c006c002000610073002000250053003f00000000005200650070006c0061006300650020006f006c0064002000250053003f00000049006e007300740061006c006c0065006400200025005300000000004600610069006c00750072006500200025006400200069006e007300740061006c006c0069006e00670020002500530000000000f01d00105c1e00107c1e00109c1e0010b81e0010d81d00107061636b61676500041f0010e0220010232100007065726c00000000141f0010181f001025005300250053002500530000000000281f0010cc22001008230010402500105200650061006c006c0079002000720075006e0020006d006f00640075006c0065002000250053003f000000520075006e002000250053003f000000481f0010741f00104600610069006c0065006400200066006f0072002000660069006c006500200025005300000000004500720072006f0072002000250064002000720065006100640069006e00670020002500530000004500720072006f00720020002500640020006f00700065006e0069006e006700200025005300000008230010402500108c1f0010b41f0010dc1f0010c82500102c2600101c260010fc2500100826001018230010942300104500720072006f0072002000250064000000000034200010482100102d6c65007072696e74202752756e6e696e6720696e20272c20245e4f2c20225c6e222c207363616c6172206c6f63616c74696d6500000000181f0010502000105420001043003a005c000000090000004f006e0065006c0069006e00650072003a0000004f006e0065006c0069006e00650072000000000084210010782100108820001094200010b42000109c200010f5190010181f00105020001004220010081200104c240010202500102c250010c82500102c2600101c260010fc2500100826001050250010182300109423001010240010a8240010e4240010c82500102c2600101c260010fc2500100826001018230010f61520100a000000640065006600610075006c0074002e0070006c0000000000070000005000650072006c0041007000700000000300000053003600300000003c0000005000650072006c002000250064002e00250064002e00250064002c002000530079006d006200690061006e00200070006f00720074002000250064002e00250064002e00250064002c0020006200750069006c007400200066006f0072002000250053002000530044004b002000250064002e0025006400000000005100000043006f007000790072006900670068007400200031003900380037002d00320030003000350020004c0061007200720079002000570061006c006c00200061006e00640020006f00740068006500720073002c002000530079006d006200690061006e00200070006f0072007400200043006f00700079007200690067006800740020004e006f006b0069006100200032003000300034002d00320030003000350000000d0000005c00530079007300740065006d005c004d00610069006c005c000000060000005c005000650072006c005c0000000000200000005c73797374656d5c6c6962735c7065726c5c736974657065726c5c352e392e33000000000000000000000000951b0010951b00100000000000000000e11c0010491c0010551c0010811700108d1700101d16001029160010611c0010351600106d1c001099170010411600104d160010191c0010a517001001190010b1170010251c0010bd17001011190010c9170010791c0010d5170010e1170010ed170010f9170010891c0010951c0010951b00100000000000000000690f0010491c0010551c0010811700108d1700101d16001029160010611c0010351600106d1c001099170010411600104d160010191c0010a5170010cd100010b1170010251c0010bd170010a1100010c9170010791c0010d5170010e1170010ed170010f9170010891c0010951c0010c911001000000000000000001d1d0010a11c001005180010951b0010ad1c001011180010b91500101d1800102918001035180010411800104d180010951b00100000000000000000291d00105918001065180010c5150010711800107d1800108918001095180010a1180010dd1c0010ad180010b9180010d1150010dd150010c5180010d1180010dd1800108514001029150010e9180010f51800100000000000000000351d0010a11c001005180010951b0010ad1c001011180010b91500101d1800102918001035180010411800104d180010951b00100000000000000000411d0010a11c0010051800100d000010ad1c001011180010b91500101d1800102918001035180010411800104d1800105d1400100000000000000000951b00100000000000000000951b0010591600106516001000000000000000002d170010391700100000000000000000311c0010491c0010551c0010811700108d1700101d16001029160010611c0010351600106d1c001099170010411600104d1600109d190010a517001001190010b1170010a9190010bd17001011190010c9170010791c0010d5170010e1170010ed170010f9170010891c0010951c0010ecffffff00000000651d00103919001045190010511900105d1900106d190010791900104d1d001085190010711d001091190010b8ffffff00000000a11d0010b4ffffff00000000ad1d00105916001065160010e4ffffff00000000951d0010891d0010e8ffffff000000007d1d0010711600107d16001003000000060000001b00000047000000ee020000f502000022030000230300002503000028030000b6040000d2040000e6040000f304000044050000480500000008000005080000110000002900000004000000520000005a0000006000000065000000bb000000df000000ff0000000001000024010000250100000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e600000011000000140000001e0000001f00000028000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004c00000050000000510000005200000054000000560000006400000074000000790000007a0000007c0000008200000085000000860000008c0000008e0000008f00000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c6000000c8000000cc000000ce000000d5000000d6000000de000000e0000000e2000000fd0000000801000022010000280100000300000006000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000fb000000ae010000c1010000d301000074020000770200002903000038030000390300005303000059030000e7030000ea0300007c0400008c0400000205000003050000690500007f05000097050000e00500002e0600004b060000040000000600000007000000080000000a0000004b0000007f0500008205000083050000af050000d005000000000000591500006c030000a40200000400000003000000060000001b00000047000000b90200000e000000ee020000f502000022030000230300002503000028030000b6040000d2040000e6040000f304000044050000480500000008000005080000cd020000020000001100000029000000e00200000100000004000000f70200000a000000520000005a0000006000000065000000bb000000df000000ff0000000001000024010000250100000a0300000f0000000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e60000001e0300003800000011000000140000001e0000001f00000028000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004c00000050000000510000005200000054000000560000006400000074000000790000007a0000007c0000008200000085000000860000008c0000008e0000008f00000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c6000000c8000000cc000000ce000000d5000000d6000000de000000e0000000e2000000fd000000080100002201000028010000340300000200000003000000060000004903000021000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000fb000000ae010000c1010000d301000074020000770200002903000038030000390300005303000059030000e7030000ea0300007c0400008c0400000205000003050000690500007f05000097050000e00500002e0600004b0600005d0300000b000000040000000600000007000000080000000a0000004b0000007f0500008205000083050000af050000d00500004150504152435b31303030336133645d2e444c4c0041564b4f4e5b31303030353663365d2e444c4c004241464c5b31303030336130665d2e444c4c0043484152434f4e565b31303030336231315d2e444c4c00434f4e455b31303030336134315d2e444c4c0045465352565b31303030333965345d2e444c4c0045494b434f52455b31303030343839325d2e444c4c004553544c49425b31303030336230625d2e444c4c0045555345525b31303030333965355d2e444c4c005045524c3539332e444c4c00000000c0030000d2010000000000004000000014302830bc3050318831c0317c32803284328832b4327c36dc37e037ac38b038543a583a5c3a643a7c3be43b543e603ee83e003f4c3f000000100000bc0100000030043008300c301030143018309c30a031043208320c321032143218321c3248324c327832f032a033a433ac33b033b433c83338343c34443480340035043508350c351035143518351c35203524357835c035cc35d835e435f03500360c361836243630363c364836543660366c367836843690369c36a836b436c036d036e036ec36f836043710371c372837343740374c375837643770377c3788379437a037ac37b837c437d037dc37e837f43700380c381838243830383c384838543860386c387838843890389c38a838b438c038cc38d838e438f038fc380c3918392839343940394c3958396839743980398c399839a439b039bc39c839d839e439f039fc39083a143a203a2c3a383a443a503a603a6c3a783a843a903a9c3aa83ab43ac03acc3ad83ae43af03afc3a083b143b203b2c3b383b443b543b603b6c3b783b843b903b9c3ba83bb43bc03bcc3bd83be83bf83b043c143c203c2c3c383c443c503c5c3c683c743c843c903c9c3ca83cb43cc03ccc3cd83c043d083d0c3d103d143d183dc83dcc3dd03dd43de03dec3dec3ef03ef43ef83efc3e003f0c3f103f203f243f383f3c3f403f443f843f883f000000200000c4010000043008300c301030143018301c302030243028302c30303048304c3088308c309030c830cc30d030d430d830dc30e030e430e830ec30f030f430f830fc300031043108310c311031143118311c312031243128312c313031343138313c314031103314332033243328332c333033343338333c334033443348334c335033543358335c336033643368336c337033743378337c338033843388338c3390339c33a033a433a833ac33b033b433b833bc33c033c433c833cc33d033d433d833dc33e033e433e833ec33f033f433f833fc330034043408340c3418341c342034243428342c343034343438343c34403444344834543458345c346034643468346c347034743478347c348034843488348c349034943498349c34a034a434b034b434b834bc34c034c434c834cc34d034d434d834dc34e034ec34f034f434f834fc340035043508350c351035143518351c352835343538353c3548354c3558355c356035643568356c357035743578357c358035843588358c359035943598359c35a035a435a835ac35b035b435b835bc35c035c435d035d435d835dc35e035e435e835ec35f035f435f835043610361436183624362836343638363c36
-__APP__
- }
-
- # This is Symbian application resource skeleton.
- # You can create the ...\epoc32\data\z\system\apps\PerlApp\PerlApp.rsc
- # by compiling the PerlApp.cpp.
- # The following resource has been compiled using the Series 60 SDK 2.6
- # for Visual C.
- # 'make sisify_hex' to create the perlrscmin.hex for this hexdump.
- if ($Variant eq 'S60') {
- $RSCHEX = <<__RSC__;
-6b4a1f10000000005fde04001ca360de01b80010000400000001f0e54d0000000004f0e54d00000000000000001a00cc0800000000010005f0e54d000000000000ffffffff0000000000000000000f0500000400000000000000000000050541626f7574170000ffffffff00000000010400000000000000000000040454696d65170000ffffffff00000000020400000000000000000000030352756e170000ffffffff0000000003040000000000000000000008084f6e656c696e6572170000ffffffff000000000404000000000000000000000909436f707972696768740e0000ffffffff00000000000000000120000000000000001400cc0801006816000100000000000100000000ffffffff00ffffffff0000000000000000ffff000000000000000120000000000000002400cc0801006816000100000000000100000000ffffffff00ffffffff0000000000000000ffff000000000000004122000000000000001400cc08010069160000050000000001000000000000000001000000040007000800ff020100ffffffff00000000000000000000ffff000000000000004122000000000000001400cc08010074160007000000000054160000ffffffff000000000000ffff00000000000000000000000015001d001d0035004d00ef0026015d01a301d201d701
-__RSC__
- }
-
- # This is Symbian application executable skeleton.
- # You can create the ...\epoc32\release\thumb\urel\foo.app
- # 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.
- # 'make sisify_hex' to create the perlappmin.hex for this hexdump.
- if ($Variant eq 'S80') {
- $APPHEX = <<__APP__;
-79000010ce390010f61520108581107645504f4300200000b088df82000000000100bb00806c8dc7d6e2e00003000001bc2500000000000000100000000010000020000000000000010000000000001000000000090000003426000001000000902300007c00000000000000382600005c290000000000005e01000000b501f07bfa02bc084700000148006870470000b01f001000b5011c024801f0c9fc01bc00470000d01f001084b030b50390049105920693204903a801f0c0fc041c0025002c06d103a8002101f0befc00885c282bd0022c2ad103a8002101f0b5fc0088402806d903a8002101f0aefc00885a280dd903a8002101f0a7fc0088602815d903a8002101f0a0fc00887a280ed803a8012101f099fc00883a2807d103a8022101f092fc00885c2800d10125281c30bc08bc04b0184700003821001084b030b50390049105920693204903a801f076fc041c0025002c06d103a8002101f074fc00885c282bd0022c2ad103a8002101f06bfc0088402806d903a8002101f064fc00885a280dd903a8002101f05dfc0088602815d903a8002101f056fc00887a280ed803a8012101f04ffc00883a2807d103a8022101f048fc00885c2800d10125281c30bc08bc04b0184700001821001030b584b001f04afa009001916d4602ac0849201c01f036fc281c211c01f038fc0021002800d10121081c04b030bc02bc08470000801c001030b584b001f02efa009001916d4602ac0849201c01f01afc281c211c01f01cfc0021002800d10121081c04b030bc02bc084700008c1c0010f0b52c4ca54486ab18600f1c151c012668468021490001f009fc82ac2649201c01f0f8fb6846211c2a1c01f005fc684601f0a8fc002855d084ac2049201c01f0e9fb6846211c2a1c01f0f6fb684601f099fc002846d086a8291c01f0a3f900280fd087ac1649201c01f0d4fb6846211c2a1c01f0e1fb684601f084fc002800d10026002e2ed086a8391c2a1c012301f08ff9061c002e17d189ac0a49201c01f0b9fb6846211c2a1c01f0c6fb684601f06ffc17e0ccfdffff981c0010041d0010241d0010441d00108bac0949201c01f0a1fb6846211c321c2b1c01f0adfb684601f05cfc8d239b009d44f0bc01bc0047601d001084b0f0b557464e464546e0b484b00c900d910e920f934ea800684e904fa80068814601f097fb4c466468a0460c980001070900264e9c0294484601f08bfbbc4200dbc1e10ca8029901f08afb007820281cd00ca8029901f083fb0078092815d00ca8029901f07cfb00780a280ed00ca8029901f075fb00780d2807d00ca8029901f06efb00780c2800d09de1029cbc4200db99e10ca8211c01f062fb007820281bd00ca8029901f05bfb0078092814d00ca8029901f054fb00780a280dd00ca8029901f04dfb00780d2806d00ca8029901f046fb00780c2803d1029c01340294d4e7029cbc4200db6ee10ca8211c01f037fb0078402806d90ca8029901f030fb00785a280fd90ca8029901f029fb0078602800d858e10ca8029901f021fb00787a2800d950e1029cbc4200db04e10ca8211c01f015fb0078402806d90ca8029901f00efb00785a2823d90ca8029901f007fb0078602806d90ca8029901f000fb00787a2815d90ca8029901f0f9fa00782f2806d90ca8029901f0f2fa0078392807d90ca8029901f0ebfa00785f2800d0d2e0029cbc4243da0ca8211c01f0e0fa0078402806d90ca8029901f0d9fa00785a2822d90ca8029901f0d2fa0078602806d90ca8029901f0cbfa00787a2814d90ca8029901f0c4fa00782f2806d90ca8029901f0bdfa0078392806d90ca8029901f0b6fa00785f2812d1464510da311c0136484601f086fa039002990c1c013402940ca801f0a4fa0078039c2080b8e7029c0134a246ba4500db7ce70ca8029901f096fa00783a2800d074e70ca8514601f08efa00783a2800d06ce7464500db69e7311c0136484601f05cfa5c210180029c02340294bc4266da0ca8211c01f077fa0078402806d90ca8029901f070fa00785a280fd90ca8029901f069fa0078602800d847e70ca8029901f061fa00787a2800d93fe7029cbc4245da0ca8211c01f056fa0078402806d90ca8029901f04ffa00785a2823d90ca8029901f048fa0078602806d90ca8029901f041fa00787a2815d90ca8029901f03afa00782f2806d90ca8029901f033fa0078392807d90ca8029901f02cfa00785f2800d00ae7464500db07e7311c0136484601f0faf9039002990c1c013402940ca801f018fa0078039c2080b6e7029cbc4244da0ca8211c01f00dfa007820281bd00ca8029901f006fa0078092814d00ca8029901f0fff900780a280dd00ca8029901f0f8f900780d2806d00ca8029901f0f1f900780c2803d1029c01340294d5e7029cbc421ada0ca8211c01f0e3f900783b2813d1f01c404510da4846311c01f0dff96c460449201c01f0b4f94846211c01f0dcf9012002e0801c0010002004b038bc9846a146aa46f0bc08bc04b0184783b0f0b54f464646c0b44d4ca544071c8824e4006c4421604a4c6c4422608924e4006c442360a920c000684406688225ed006d448424e4006c4425604249206801f0b2f98820c00068448424e4006c44216801f0aff9814601204c46c44200d1a1e040a88021490001f078f9c224a4006c44a0468422520040468821c900694401f09ef9484607303e9040ac3f94c6a96846f82201f094f944462068c3a90968c4aa1268c5ab1b68fff7bcfd00287ad040468021490001f089f9301c00f054ff8322d2006a44106051608321c9006944404601f081f91d49404601f083f9381c01f04af9216809010909409800010009013009187868814251da0026b146c224a4006c44a046444620680001000981451eda311c0136381c01f00ef98424e4006c442060c2a8494601f02cf900788424e4006c44256828800124a144e3e70000dcfbffff44040000ac1d00104c210010311c0136381c01f0eff85c2101800024a146409800010009814515da311c0136381c01f0e1f88424e4006c44206040a8494601f0d9f800888424e4006c44256828800124a144e4e7381c311c01e0381c002101f0f5f8044b9d4418bc9846a146f0bc08bc03b018472404000084b070b586b00a900b910c920d9300260aa8022101f00ef9009001916d4602ac0e49201c01f0e2f8281c211c01f008f900280cd104ac0a49201c01f0d7f80aa8211c01f0d9f80121c84200d00126301c06b070bc08bc04b018470000bc1d0010c01d001081b0f0b54f464646c0b4644ca54480460e1ccd24e4006c442260d124e4006c442360f220c0006844076840a88021490001f084f8301c00f087fecb22d2006a4410605160cd24e4006c44206800f082fecc22d2006a4410605160ca25ed006d44cd24e4006c4425604d49206801f05af84c4bcd24e4006c442568cb22d2006a44cc20c0006844009040a8216801f05cf80024a146c225ad006d44cd24e4006c442560206840a900f05bfecd24e4006c442068fff711fc00281ad1caac84225200201cd121c900694401f06af8cea96846f82201f065f82068cba90968ccaa1268cdab1b68fff75aff002801d10124a1464c46200600284ad040a8002101f038f8c2ac201c40a900f02bfe201cfff7c8fb00283cd08623db006b4423485861321c01ca1860214c6c44a446032101246442a14601ca64460434a446043c206001394945f6d11a485861311c18318920c00068448222920001f023f8c2ac84225200201cd121c900694401f01af88620c00068443f90c5a96846fc2201f011f82168c3a80268c4a8036840a8fff729fe4098000100280ed1002012e0000094f9ffffd01d001038210010742100103404000038230010381c414640aafff7a9fb0120044b9d4418bc9846a146f0bc08bc01b0184700006c06000083b0f0b5474680b4354ca544051ceb24e4006c442160334c6c442260ec24e4006c44236000260027822292007ea8291c00f0caff82a96846fc22520000f0c4ff7e987f99809a819bfff7aafa002838d08024e4006c44a0464046291c00f094fd4046fff74dfb00282ad14046291c00f08bfd4046fff728fb061c002e20d18424e4006c4484225200201ceb21c900694400f09aff8621c90069446846f82200f093ff20681049694409688522d2006a4412680e4b6b441b68fff784fe002800d00127380600284dd07ea88021490000f049ff002e0ed0e624e4006c4404490de0c0f8ffff5c070000240400002c040000f01d0010e724e4006c441749201c00f025ff7ea8211c2a1c00f032ff7ea800f0e7ff00281dd0a524e4006c4482229200201c291c00f050ffa721c90069446846fc22520000f048ff2068084969440968a622d2006a441268054b6b441b6800f00dfa012007e000001c1e00102c050000340500000020e823db009d4408bc9846f0bc08bc03b01847f0b5474680b4244ca54480460f1c7ea800f004fd8320c000684400f0fffcc720c00068448021490000f0e0fe7ea8391c0022002300f0f8fc381c002100f0c4fe0088402806d9381c002100f0bdfe00885a280dd9381c002100f0b6fe008860281cd9381c002100f0affe00887a2815d8381c012100f0a8fe00883a280ed1381c022100f0a1fe00885c2807d18320c0006844391c14e0000048eeffff842424016c4400f073fc806900f0fefc011c0a68201c126a00f026fc8320c0006844211c0022002300f0b0fca0256d0045442868002803d100f05afc1c302860574d6d4400215648684401606960a020400040440168281c3a1c002300f09efc061c002e00d0fde08420000168448021490000f0a5fe842109016944281c00f095fc061c281c00f097fc002e00d0dde0444c6c4482229200201c391c00f08afe414969446846fc22520000f083fe20683e4969440968a52212016a4412683c4b6b441b68fff7acf9002800d184e0c52212016a448320c00068443649516100681060354e6e440321344b6b4401256d4201cb01c60139a942fad131485061314868448621c90069448222920000f052fee7231b016b447ea9264858617e981860294d6d440322fe2464006c44a4460126764264460434a446043c206801c5013ab242f6d11e4858611831204868448222920000f02ffec5252d016d44e72636016e44842109016944194c6c4484225200201c00f01ffea020400040440068006841901449694468468222520000f012fe2368381c291c321cfff73cfd37e0000098110000480a0000580a00004c0a0000540a000074210010540c00001c04000038230010680c0000740e0000880e00009010000094100000842109016944c52424016c4484225200201c00f0e3fd134969446846fc2200f0ddfd2168104868440268104868440368381cfff7effd0021002800d101210806002835d0c724e4006c448d256d016d440749281c00f084fd201c291c3a1c00f091fd22e05c0c0000540c0000580c0000341e0010c724e4006c44024d6d4402490ae00000a81100005c1e0010c724e4006c440f4d6d440f49281c00f061fd201c291c321c3b1c00f06dfd201c00f01cfe4446606a00280fd000f02efb816900290dd008688268081c032100f0e1fa06e0b0110000841e0010404600f0b1fb034b9d4408bc9846f0bc01bc0047b8110000f0b5071c0e1c1e4878611e48b8611e4838609e2464003d192968002910d0786800f09cfb2968002905d008688268081c032100f0b5fa9e246400391900200860a02464003d192868002803d000f072fd00202860796a002905d008688268081c032100f09dfa064878610648b86107483860381c311c00f077fbf0bc01bc0047482300107c230010f42100108421001084b030b51d4ca5449c909d919e929f9301200021002200f0b3fd041c96a901a800f046fd002808d10090201c9ca90222002300f0abfd00f041fd96a80068002813d014a88021490000f0d6fc14ad97ac0b49201c00f0c4fc96a80268281c211c00f0d0fc281c00f085fd00f02dfd99239b009d4430bc08bc04b018479cfdffffd01e001010b5094ca544041c68468022520000f01ffd201c6946fff7b7fd82239b009d4410bc01bc00470000f8fdfffff0b5474680b4324ca544071c8846022952d100f0f7fa011c0a687ea8126a00f01ffa8026f6006e44301c00f0a5fa2949301c7eaa002300f0a5fac425ed006d44281c00f0bbfa244c6c440021224868440160201c042100f0b7fa301c00f0bafa011c201c2a1c00f0bbfa002824d1301c00f0b0fa011c8420000168448022520000f0d0fc8521090169446846fc22520000f08cfc84200001684400680f49694409680f4a6a4412680e4b6b441b68fff74fff381c00f0acfa00204446002c00d10120094b9d4408bc9846f0bc02bc0847b4f5ffffb41f0010480a000044080000480800004c0800004c0a000010b5a02464000019016010bc01bc0047f0b50b4ca5440b4c6c4421607ea88021490000f01bfc074c6c442468064d6019052800d92ae180000449401800688746c8f7ffff3408000000fcffffe4110010fc1100102c12001058120010dc12001094130010a813001009490a4b032000900022019204200290039204930220059006927ea80522092300f0eefbbce00000f01f0010e41f001001200021002200f0a1fc8022d2006a44131c054970c970c30321002300f0a4fc00f038fce9e00000241f00101a4868448021490000f0c6fb174f6f44174c6c441749201c00f0b2fb381c211c00f02efc381c00f091fc002800d1cee0114c6c4482229200201c391c00f0defb0e4969446846fc22520000f0d7fb2068c321c90069440968094a6a441268c423db006b441b68fff79bfeb0e00c0400001c080000301f001014060000240600001c06000000f058f98569254c6c442549201c00f075fb24492f1c3437201c3a1c802300f059fc002800d190e08020c0006844c021490000f0a7fb8025ed006d44281c391c00f032f901200021002200f027fc061c0c2000f03bfb041c00f0d6fb124a6a44124911486844016054600f4868444168006800f0cffb0e4820600e486060281c00f0d0fba060301c0321221c002300f013fc022000f0ccfb57e0000024080000481f0010381f00102c0800009d190010c01d0010ec1e001003497ea800f030fb7ea800f0d9fb40e0702000108020c00068448021490000f01dfbc120c00068448021490000f016fb1249134b8024e4006c4403200090002201920420029003920493022005900692201c0522092300f007fb201c00f0b0fb084800f08ffbc124e4006c440649201c00f0fafa201c00f0a3fb0ae0f01f0010e41f001040420f00702000100120fef7f9fd024b9d44f0bc01bc00473808000030b5051c242000f073fb041c002c04d0291c00f049f903482060201c30bc02bc084700006422001070b5a220400000f05ffb061c002e10d000f03cf9094d7561094cb46109483060301c3430802100f0b5fa7561b46106483060301c70bc02bc08470000482300107c23001084210010f4210010f0b50d1c171c1c1c00f06ef88669301c211cfff76bfe002d05d03068026d301c391c00f01df80020f0bc02bc0847000010b58b20800000f027fb041c002c03d000f004f902482060201c10bc02bc0847fc220010002070470047704708477047104770471847704720477047284770473047704738477047404770474847704750477047584770476047704770477047014b1b681847c04690230010014b1b681847c04698230010014b1b681847c0469c230010014b1b681847c04694230010014b1b681847c046a423001040b4024e3668b44640bc6047a0230010014b1b681847c046a8230010014b1b681847c046c0230010014b1b681847c046b8230010014b1b681847c046ac230010014b1b681847c046b0230010014b1b681847c046bc230010014b1b681847c046b4230010014b1b681847c046c4230010014b1b681847c046c8230010014b1b681847c046dc230010014b1b681847c046d4230010014b1b681847c046e4230010014b1b681847c046fc230010014b1b681847c0460424001040b4024e3668b44640bc6047f823001040b4024e3668b44640bc6047f0230010014b1b681847c046f4230010014b1b681847c046cc230010014b1b681847c04600240010014b1b681847c046d0230010014b1b681847c046e0230010014b1b681847c046d8230010014b1b681847c046ec230010014b1b681847c046e8230010014b1b681847c04608240010014b1b681847c04634240010014b1b681847c04690240010014b1b681847c046d8240010014b1b681847c046dc240010014b1b681847c046e4240010014b1b681847c046e0240010014b1b681847c046f0240010014b1b681847c046f8240010014b1b681847c0469c240010014b1b681847c046a4240010014b1b681847c046ec240010014b1b681847c0465c240010014b1b681847c04640240010014b1b681847c04650240010014b1b681847c0468c240010014b1b681847c0462024001040b4024e3668b44640bc604748240010014b1b681847c04654240010014b1b681847c046cc240010014b1b681847c046a8240010014b1b681847c046ac240010014b1b681847c0467c240010014b1b681847c0461c240010014b1b681847c04678240010014b1b681847c04670240010014b1b681847c04610240010014b1b681847c04698240010014b1b681847c0463c240010014b1b681847c0460c240010014b1b681847c046b0240010014b1b681847c04668240010014b1b681847c04624240010014b1b681847c04630240010014b1b681847c04680240010014b1b681847c046bc240010014b1b681847c046c4240010014b1b681847c046b4240010014b1b681847c04638240010014b1b681847c04664240010014b1b681847c04660240010014b1b681847c04694240010014b1b681847c046a0240010014b1b681847c046c8240010014b1b681847c046f424001040b4024e3668b44640bc604788240010014b1b681847c0467424001040b4024e3668b44640bc60474c240010014b1b681847c0468424001040b4024e3668b44640bc604758240010014b1b681847c046c0240010014b1b681847c04618240010014b1b681847c04644240010014b1b681847c0461424001040b4024e3668b44640bc6047b8240010014b1b681847c0462c240010014b1b681847c04628240010014b1b681847c0466c240010014b1b681847c046e8240010014b1b681847c046d4240010014b1b681847c046d0240010014b1b681847c04600250010014b1b681847c046fc240010014b1b681847c04644250010014b1b681847c04630250010014b1b681847c0461c250010014b1b681847c04674250010014b1b681847c04620250010014b1b681847c0466c25001040b4024e3668b44640bc604738250010014b1b681847c0465c250010014b1b681847c04618250010014b1b681847c04658250010014b1b681847c04614250010014b1b681847c04670250010014b1b681847c04634250010014b1b681847c04604250010014b1b681847c04678250010014b1b681847c04628250010014b1b681847c04610250010014b1b681847c04640250010014b1b681847c04624250010014b1b681847c0467c250010014b1b681847c04660250010014b1b681847c04664250010014b1b681847c04648250010014b1b681847c04668250010014b1b681847c0462c250010014b1b681847c0463c25001040b4024e3668b44640bc604754250010014b1b681847c04650250010014b1b681847c0464c250010014b1b681847c0460c250010014b1b681847c04608250010014b1b681847c04680250010014b1b681847c04684250010014b1b681847c04698250010014b1b681847c04690250010014b1b681847c046a8250010014b1b681847c046ac250010014b1b681847c0469425001040b4024e3668b44640bc6047a025001040b4024e3668b44640bc60479c250010014b1b681847c0468825001040b4024e3668b44640bc6047a4250010014b1b681847c046b0250010014b1b681847c0468c2500107047000000b5054a4261054a8261054a0260fff771fd01bc00470000482300107c2300108421001000b5fff7c5fe01bc0047000000b5fff7b9fe01bc0047000000b5fff7b3fe01bc0047000010b581b0039c14380094fff769fe01b010bc01bc0047000000b51438fff75afe01bc004700b51438fff762fe01bc004700b51838fff746fe02bc0847ffffffff00000000ffffffff00000000b01f0010d01f001038210010182100102e0070006d000000801c00102e0070006c0000008c1c001025005300200069007300200075006e0074007200750073007400650064002e00200049006e007300740061006c006c0020006f006e006c007900200069006600200079006f0075002000740072007500730074002000700072006f00760069006400650072002e000000000049006e007300740061006c006c002000610073002000250053003f00000000005200650070006c0061006300650020006f006c0064002000250053003f00000049006e007300740061006c006c0065006400200025005300000000004600610069006c00750072006500200025006400200069006e007300740061006c006c0069006e00670020002500530000000000981c0010041d0010241d0010441d0010601d0010801c00107061636b61676500ac1d00104c210010232100007065726c00000000bc1d0010c01d001025005300250053002500530000000000d01d00103821001074210010382300105200650061006c006c0079002000720075006e0020006d006f00640075006c0065002000250053003f000000520075006e002000250053003f000000f01d00101c1e00104600610069006c0065006400200066006f0072002000660069006c006500200025005300000000004500720072006f0072002000250064002000720065006100640069006e00670020002500530000004500720072006f00720020002500640020006f00700065006e0069006e00670020002500530000007421001038230010341e00105c1e0010841e0010482300107c23001084210010f42100104500720072006f00720020002500640000000000d01e0010b41f00102d6c65007072696e74202752756e6e696e6720696e20272c20245e4f2c20225c6e222c207363616c6172206c6f63616c74696d6500000000c01d0010ec1e0010f01e001043003a005c0000000500000043006f00640065003a0000004f006e0065006c0069006e006500720000000000f01f0010e41f0010241f0010301f0010481f0010381f00109d190010c01d0010ec1e001070200010e411001064220010482300107c23001084210010f4210010c0220010fc220010482300107c23001084210010f61520100a000000640065006600610075006c0074002e0070006c0000000000070000005000650072006c0041007000700000000300000053003800300000003c0000005000650072006c002000250064002e00250064002e00250064002c002000530079006d006200690061006e00200070006f00720074002000250064002e00250064002e00250064002c0020006200750069006c007400200066006f0072002000250053002000530044004b002000250064002e0025006400000000005100000043006f007000790072006900670068007400200031003900380037002d00320030003000350020004c0061007200720079002000570061006c006c00200061006e00640020006f00740068006500720073002c002000530079006d006200690061006e00200070006f0072007400200043006f00700079007200690067006800740020004e006f006b0069006100200032003000300034002d00320030003000350000000d0000005c00530079007300740065006d005c004d00610069006c005c000000060000005c005000650072006c005c0000000000200000005c73797374656d5c6c6962735c7065726c5c736974657065726c5c352e392e330000000000000000000000003d1b00103d1b00100000000000000000dd1b0010011700100d17001019170010251700109d150010a915001031170010b51500103d17001049170010c1150010cd150010c11b001055170010cd180010cd1b001061170010dd1800106d170010791700108917001095170010a1170010ad1700103d1b00100000000000000000690f0010011700100d17001019170010251700109d150010a915001031170010b51500103d17001049170010c1150010cd150010c11b001055170010a9100010cd1b0010611700107d1000106d170010791700108917001095170010a1170010ad170010a51100100000000000000000011c00102518001031180010451500103d1800104918001055180010611800106d180010d91b00107918001085180010511500105d150010911800109d180010a91800105d140010a9140010b5180010c118001000000000000000000d1c0010b9170010c51700103d1b0010d1170010dd17001039150010e9170010f5170010011800100d180010191800103d1b00100000000000000000191c0010b9170010c51700100d000010d1170010dd17001039150010e9170010f5170010011800100d1800101918001035140010000000000000000095160010a1160010ecffffff000000003d1c0010211900102d19001039190010451900105519001061190010251c00106d190010491c001079190010e8ffffff00000000551c0010d9150010e515001003000000060000001b00000047000000110000002900000004000000520000005a0000006000000065000000bb000000df000000ff000000000100000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e600000011000000140000001e0000001f000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004e0000005000000051000000520000005400000055000000560000006400000074000000790000007a0000007c0000007d0000007f000000820000008300000085000000860000008c0000008e0000008f0000009000000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000d6000000d9000000db000000de000000e0000000e2000000e5000000fb000000fd000000fe0000000300000006000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000fb000000ae010000c1010000d301000074020000770200002903000038030000390300005303000059030000e7030000ea0300007c0400008c0400000205000003050000690500007f05000097050000e00500002e0600004b060000040000000600000008000000090000000b0000004c000000800500008305000084050000b0050000d105000000000000d914000024030000700200000400000003000000060000001b0000004700000085020000020000001100000029000000980200000100000004000000af02000008000000520000005a0000006000000065000000bb000000df000000ff00000000010000c20200000f0000000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e6000000d60200003d00000011000000140000001e0000001f000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004e0000005000000051000000520000005400000055000000560000006400000074000000790000007a0000007c0000007d0000007f000000820000008300000085000000860000008c0000008e0000008f0000009000000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000d6000000d9000000db000000de000000e0000000e2000000e5000000fb000000fd000000fe000000ec0200000200000003000000060000000103000021000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000fb000000ae010000c1010000d301000074020000770200002903000038030000390300005303000059030000e7030000ea0300007c0400008c0400000205000003050000690500007f05000097050000e00500002e0600004b060000150300000b000000040000000600000008000000090000000b0000004c000000800500008305000084050000b0050000d10500004150504152435b31303030336133645d2e444c4c004241464c5b31303030336130665d2e444c4c0043484152434f4e565b31303030336231315d2e444c4c00434f4e455b31303030336134315d2e444c4c0045465352565b31303030333965345d2e444c4c0045494b434f52455b31303030343839325d2e444c4c004553544c49425b31303030336230625d2e444c4c0045555345525b31303030333965355d2e444c4c005045524c3539332e444c4c000000000803000075010000000000004800000014302830bc3050318831c0317c32803284328832b4327c36dc37e037ac38b038543a583a5c3a643a7c3be43b543e603ee83e003f4c3fe83fec3ff03ff43f000000100000cc01000078307c31e031e431e831ec31f031f431f831243228325432cc327c33803388338c339033a433103414341c34583498349c34a034a434f83440354c3558356435703580358c359835a435b035bc35c835d435e035ec35f835043610361c36283638364836543660366c367836843690369c36a836b436c036cc36d836e436f036fc360837143720372c373837443750375c3768377437843790379c37a837b437c037cc37d837e437f037fc370838143820382c383838443850385c386838743880388c389838a438b038bc38c838d838e438f438003910391c3928393439403950395c396839743980398c399839a439b039bc39c839d439e039ec39f839083a143a203a2c3a383a443a503a5c3a683a743a803a8c3a983aa43ab03abc3ac83ad43ae03aec3afc3a083b143b203b2c3b383b443b503b5c3b683b743b803b903ba03bac3bbc3bc83bd43bf43bf83bfc3b703c743c783c7c3c883c943c943d983d9c3da03da43da83db43db83dc83dcc3de03de43de83dec3d2c3e303eac3eb03eb43eb83ebc3ec03ec43ec83ecc3ee43ee83e243f283f2c3f5c3f603f643f683f6c3f703f743f783f7c3f803f843f883f8c3f903f943f983f9c3fa03fa43fa83fac3f000000200000f40000007c3180318c319031943198319c31a031a431a831ac31b031b431b831bc31c031c431c831cc31d031d431d831dc31e031e431e831ec31f031fc310032043208320c321032143218321c322032243228322c323032343238323c324032443248324c325032543258325c3260326c327032743278327c328032843288328c329032943298329c32a032a432a832ac32b032b432b832bc32c832cc32d032d432d832dc32e032e432e832ec32f032f432f832043308330c331033143318331c332033243328332c3330333433403344335033543358335c336033643368336c33703374337833843388338c330000__APP__
- }
-
- # This is Symbian application resource skeleton.
- # You can create the ...\epoc32\data\z\system\apps\PerlApp\PerlApp.rsc
- # by compiling the PerlApp.cpp.
- # The following resource has been compiled using the Series 80 SDK 2.0
- # for Visual C.
- # 'make sisify_hex' to create the perlrscmin.hex for this hexdump.
- if ($Variant eq 'S80') {
- $RSCHEX = <<__RSC__;
-6b4a1f10000000005fde04001ca360de01b800780400000001f0e54d0000000005f0e54d000000000000000004f0e54d000000000010010000005000000000000400000204030352756e0900ffffffff00030408084f6e656c696e65720900ffffffff000504050541626f75740900ffffffff0000010404457869740500ffffffff0007010006f0e54d07074f7074696f6e73110000000000ffffffff0000000000000000000f0500000400000000000000000000050541626f7574170000ffffffff00000000010400000000000000000000040454696d65170000ffffffff00000000020400000000000000000000030352756e170000ffffffff0000000003040000000000000000000008084f6e656c696e6572170000ffffffff000000000404000000000000000000000909436f707972696768740e0000ffffffff00000000000000000003010005055469746c65110000000064b0f3000000000001000200060650726f6d70740f00080000000000000a00010080000014001c001c0034008200a50047017b01
-__RSC__
- }
-
- # This is Symbian application executable skeleton.
- # You can create the ...\epoc32\release\thumb\urel\foo.app
- # by compiling the PerlApp.cpp with PerlMinSample defined in PerlApp.h.
- # The following executable has been compiled using the UIQ SDK 2.1
- # for CodeWarrior.
- # 'make sisify_hex' to create the perlappmin.hex for this hexdump.
- if ($Variant eq 'UIQ') {
- $APPHEX = <<__APP__;
-79000010ce390010f61520108581107645504f4300200000cb7c2694000000000100af004044957dd6e2e000030000008c25000000000000001000000000100000200000000000000100000000000010000000000a0000000426000001000000502300007c000000000000000826000058290000000000005e01000000b501f031fa02bc084700000148006870470000401f001000b5011c024801f0c7fb01bc00470000601f001084b030b50390049105920693204903a801f0befb041c0025002c06d103a8002101f0bcfb00885c282bd0022c2ad103a8002101f0b3fb0088402806d903a8002101f0acfb00885a280dd903a8002101f0a5fb0088602815d903a8002101f09efb00887a280ed803a8012101f097fb00883a2807d103a8022101f090fb00885c2800d10125281c30bc08bc04b018470000c820001084b030b50390049105920693204903a801f074fb041c0025002c06d103a8002101f072fb00885c282bd0022c2ad103a8002101f069fb0088402806d903a8002101f062fb00885a280dd903a8002101f05bfb0088602815d903a8002101f054fb00887a280ed803a8012101f04dfb00883a2807d103a8022101f046fb00885c2800d10125281c30bc08bc04b018470000a820001030b584b001f0eef9009001916d4602ac0849201c01f034fb281c211c01f036fb0021002800d10121081c04b030bc02bc084700001c1c001030b584b001f0d2f9009001916d4602ac0849201c01f018fb281c211c01f01afb0021002800d10121081c04b030bc02bc08470000281c0010f0b52c4ca54486ab18600f1c151c012668468021490001f007fb82ac2649201c01f0f6fa6846211c2a1c01f003fb684601f0a0fb002855d084ac2049201c01f0e7fa6846211c2a1c01f0f4fa684601f091fb002846d086a8291c01f053f900280fd087ac1649201c01f0d2fa6846211c2a1c01f0dffa684601f07cfb002800d10026002e2ed086a8391c2a1c012301f03ff9061c002e17d189ac0a49201c01f0b7fa6846211c2a1c01f0c4fa684601f067fb17e0ccfdffff341c0010a01c0010c01c0010e01c00108bac0949201c01f09ffa6846211c321c2b1c01f0abfa684601f054fb8d239b009d44f0bc01bc0047fc1c001084b0f0b557464e464546e0b484b00c900d910e920f934ea800684e904fa80068814601f095fa4c466468a0460c980001070900264e9c0294484601f089fabc4200dbc1e10ca8029901f088fa007820281cd00ca8029901f081fa0078092815d00ca8029901f07afa00780a280ed00ca8029901f073fa00780d2807d00ca8029901f06cfa00780c2800d09de1029cbc4200db99e10ca8211c01f060fa007820281bd00ca8029901f059fa0078092814d00ca8029901f052fa00780a280dd00ca8029901f04bfa00780d2806d00ca8029901f044fa00780c2803d1029c01340294d4e7029cbc4200db6ee10ca8211c01f035fa0078402806d90ca8029901f02efa00785a280fd90ca8029901f027fa0078602800d858e10ca8029901f01ffa00787a2800d950e1029cbc4200db04e10ca8211c01f013fa0078402806d90ca8029901f00cfa00785a2823d90ca8029901f005fa0078602806d90ca8029901f0fef900787a2815d90ca8029901f0f7f900782f2806d90ca8029901f0f0f90078392807d90ca8029901f0e9f900785f2800d0d2e0029cbc4243da0ca8211c01f0def90078402806d90ca8029901f0d7f900785a2822d90ca8029901f0d0f90078602806d90ca8029901f0c9f900787a2814d90ca8029901f0c2f900782f2806d90ca8029901f0bbf90078392806d90ca8029901f0b4f900785f2812d1464510da311c0136484601f084f9039002990c1c013402940ca801f0a2f90078039c2080b8e7029c0134a246ba4500db7ce70ca8029901f094f900783a2800d074e70ca8514601f08cf900783a2800d06ce7464500db69e7311c0136484601f05af95c210180029c02340294bc4266da0ca8211c01f075f90078402806d90ca8029901f06ef900785a280fd90ca8029901f067f90078602800d847e70ca8029901f05ff900787a2800d93fe7029cbc4245da0ca8211c01f054f90078402806d90ca8029901f04df900785a2823d90ca8029901f046f90078602806d90ca8029901f03ff900787a2815d90ca8029901f038f900782f2806d90ca8029901f031f90078392807d90ca8029901f02af900785f2800d00ae7464500db07e7311c0136484601f0f8f8039002990c1c013402940ca801f016f90078039c2080b6e7029cbc4244da0ca8211c01f00bf9007820281bd00ca8029901f004f90078092814d00ca8029901f0fdf800780a280dd00ca8029901f0f6f800780d2806d00ca8029901f0eff800780c2803d1029c01340294d5e7029cbc421ada0ca8211c01f0e1f800783b2813d1f01c404510da4846311c01f0ddf86c460449201c01f0b2f84846211c01f0daf8012002e01c1c0010002004b038bc9846a146aa46f0bc08bc04b0184783b0f0b54f464646c0b44d4ca544071c8824e4006c4421604a4c6c4422608924e4006c442360a920c000684406688225ed006d448424e4006c4425604249206801f0b0f88820c00068448424e4006c44216801f0adf8814601204c46c44200d1a1e040a88021490001f076f8c224a4006c44a0468422520040468821c900694401f09cf8484607303e9040ac3f94c6a96846f82201f092f844462068c3a90968c4aa1268c5ab1b68fff7bcfd00287ad040468021490001f087f8301c00f0f8fe8322d2006a44106051608321c9006944404601f07ff81d49404601f081f8381c01f048f8216809010909409800010009013009187868814251da0026b146c224a4006c44a046444620680001000981451eda311c0136381c01f00cf88424e4006c442060c2a8494601f02af800788424e4006c44256828800124a144e3e70000dcfbffff44040000481d0010dc200010311c0136381c00f0edff5c2101800024a146409800010009814515da311c0136381c00f0dfff8424e4006c44206040a8494600f0d7ff00888424e4006c44256828800124a144e4e7381c311c01e0381c002100f0f3ff044b9d4418bc9846a146f0bc08bc03b018472404000084b070b586b00a900b910c920d9300260aa8022101f00cf8009001916d4602ac0e49201c00f0e0ff281c211c01f006f800280cd104ac0a49201c00f0d5ff0aa8211c00f0d7ff0121c84200d00126301c06b070bc08bc04b018470000581d00105c1d001081b0f0b54f464646c0b4644ca54480460e1ccd24e4006c442260d124e4006c442360f220c0006844076840a88021490000f082ff301c00f02bfecb22d2006a4410605160cd24e4006c44206800f026fecc22d2006a4410605160ca25ed006d44cd24e4006c4425604d49206800f058ff4c4bcd24e4006c442568cb22d2006a44cc20c0006844009040a8216800f05aff0024a146c225ad006d44cd24e4006c442560206840a900f0fffdcd24e4006c442068fff711fc00281ad1caac84225200201cd121c900694400f068ffcea96846f82200f063ff2068cba90968ccaa1268cdab1b68fff75aff002801d10124a1464c46200600284ad040a8002100f036ffc2ac201c40a900f0cffd201cfff7c8fb00283cd08623db006b4423485861321c01ca1860214c6c44a446032101246442a14601ca64460434a446043c206001394945f6d11a485861311c18318920c00068448222920000f021ffc2ac84225200201cd121c900694400f018ff8620c00068443f90c5a96846fc2200f00fff2168c3a80268c4a8036840a8fff729fe4098000100280ed1002012e0000094f9ffff6c1d0010c82000100421001034040000f8220010381c414640aafff7a9fb0120044b9d4418bc9846a146f0bc08bc01b0184700006c06000083b0f0b5474680b4354ca544051ceb24e4006c442160334c6c442260ec24e4006c44236000260027822292007ea8291c00f0c8fe82a96846fc22520000f0c2fe7e987f99809a819bfff7aafa002838d08024e4006c44a0464046291c00f038fd4046fff74dfb00282ad14046291c00f02ffd4046fff728fb061c002e20d18424e4006c4484225200201ceb21c900694400f098fe8621c90069446846f82200f091fe20681049694409688522d2006a4412680e4b6b441b68fff784fe002800d00127380600284dd07ea88021490000f047fe002e0ed0e624e4006c4404490de0c0f8ffff5c070000240400002c0400008c1d0010e724e4006c441749201c00f023fe7ea8211c2a1c00f030fe7ea800f0dffe00281dd0a524e4006c4482229200201c291c00f04efea721c90069446846fc22520000f046fe2068084969440968a622d2006a441268054b6b441b6800f00dfa012007e00000b81d00102c050000340500000020e823db009d4408bc9846f0bc08bc03b01847f0b5474680b4244ca54480460f1c7ea800f0a8fc8320c000684400f0a3fcc720c00068448021490000f0defd7ea8391c0022002300f09cfc381c002100f0c2fd0088402806d9381c002100f0bbfd00885a280dd9381c002100f0b4fd008860281cd9381c002100f0adfd00887a2815d8381c012100f0a6fd00883a280ed1381c022100f09ffd00885c2807d18320c0006844391c14e0000048eeffff842424016c4400f023fc806900f0a2fc011c0a68201c126a00f0dcfb8320c0006844211c0022002300f054fca6256d0045442868002803d100f00afc1c302860574d6d4400215648684401606960a620400040440168281c3a1c002300f042fc061c002e00d0fde08420000168448021490000f0a3fd842109016944281c00f039fc061c281c00f03bfc002e00d0dde0444c6c4482229200201c391c00f088fd414969446846fc22520000f081fd20683e4969440968a52212016a4412683c4b6b441b68fff7acf9002800d184e0c52212016a448320c00068443649516100681060354e6e440321344b6b4401256d4201cb01c60139a942fad131485061314868448621c90069448222920000f050fde7231b016b447ea9264858617e981860294d6d440322fe2464006c44a4460126764264460434a446043c206801c5013ab242f6d11e4858611831204868448222920000f02dfdc5252d016d44e72636016e44842109016944194c6c4484225200201c00f01dfda620400040440068006841901449694468468222520000f010fd2368381c291c321cfff73cfd37e0000098110000480a0000580a00004c0a0000540a000004210010540c00001c040000f8220010680c0000740e0000880e00009010000094100000842109016944c52424016c4484225200201c00f0e1fc134969446846fc2200f0dbfc2168104868440268104868440368381cfff7effd0021002800d101210806002835d0c724e4006c448d256d016d440749281c00f082fc201c291c3a1c00f08ffc22e05c0c0000540c0000580c0000d01d0010c724e4006c44024d6d4402490ae00000a8110000f81d0010c724e4006c440f4d6d440f49281c00f05ffc201c291c321c3b1c00f06bfc201c00f014fd4446606a00280fd000f0defa816900290dd008688268081c032100f097fa06e0b0110000201e0010404600f055fb034b9d4408bc9846f0bc01bc0047b8110000f0b5071c0e1c1e4878611e48b8611e483860a42464003d192968002910d0786800f040fb2968002905d008688268081c032100f06bfaa4246400391900200860a62464003d192868002803d000f070fc00202860796a002905d008688268081c032100f053fa064878610648b86107483860381c311c00f0edfcf0bc01bc0047082300103c230010942100101421001084b030b51d4ca5449c909d919e929f9301200021002200f0abfc041c96a901a800f044fc002808d10090201c9ca90222002300f0a3fc00f03ffc96a80068002813d014a88021490000f0d4fb14ad97ac0b49201c00f0c2fb96a80268281c211c00f0cefb281c00f07dfc00f02bfc99239b009d4430bc08bc04b018479cfdffff6c1e001010b5094ca544041c68468022520000f01dfc201c6946fff7b7fd82239b009d4410bc01bc00470000f8fdfffff0b5474680b4324ca544071c8846022952d100f09bfa011c0a687ea8126a00f0d5f98026f6006e44301c00f049fa2949301c7eaa002300f049fac425ed006d44281c00f05ffa244c6c440021224868440160201c042100f05bfa301c00f05efa011c201c2a1c00f05ffa002824d1301c00f054fa011c8420000168448022520000f0cefb8521090169446846fc22520000f08afb84200001684400680f49694409680f4a6a4412680e4b6b441b68fff74fff381c00f050fa00204446002c00d10120094b9d4408bc9846f0bc02bc0847b4f5ffff441f0010480a000044080000480800004c0800004c0a000010b5a62464000019016010bc01bc0047f0b50c4ca544fb24e4006c44216007a88021490000f018fbfb24e4006c442468054d6019052800d9dee08000034940180068874624f8ffff00fcffffe4110010fc1100102c1200108c13001054120010041300101813001009490a4b03200090002201920420029003920493022005900120069007a80522092300f0ebfa73e0801f0010741f001001200021002200f099fb89aa131c054970c970c30321002300f09efb00f038fba1e00000c01e001000f04cf98569f924e4006c442349201c00f0b6fa22492f1c4037201c3a1c802300f08efb002800d189e08ca8c021490000f0eafa8cad281c391c00f029f901200021002200f066fb061c0c2000f080fa041c00f015fbfa22d2006a441149fa20c000684401605460fa20c00068444168006800f00bfb0c4820600c486060281c00f00cfba060301c0321221c002300f04ffb022000f008fb51e00000dc1e0010cc1e0010991700105c1d0010881e0010034907a800f076fa07a800f019fb3ee000200010eea88021490000f065fab820c00068448021490000f05efa1249134beeac032000900022019204200290039204930220059001200690201c0522092300f050fa201c00f0f3fa094800f0d2fab824e4006c440749201c00f043fa201c00f0e6fa0be00000801f0010741f001040420f00002000100120fef743fe024b9d44f0bc01bc0047dc07000030b5051c242000f0b5fa041c002c04d0291c00f031f903482060201c30bc02bc084700001422001070b5a820400000f0a1fa061c002e10d000f0f6fa094d7561094cb46109483060301c4030802100f0fdf97561b46106483060301c70bc02bc08470000082300103c2300101421001094210010f0b50d1c171c1c1c00f068f88669301c211cfff7b5fe002d05d03068026d301c391c00f01df80020f0bc02bc0847000010b58c20800000f069fa041c002c03d000f0befa02482060201c10bc02bc0847b4220010002070470047704708477047104770471847704720477047284770473047704738477047404770474847704750477047584770476047704770477047014b1b681847c04654230010014b1b681847c04658230010014b1b681847c04650230010014b1b681847c0466023001040b4024e3668b44640bc60475c230010014b1b681847c04664230010014b1b681847c04674230010014b1b681847c04670230010014b1b681847c04668230010014b1b681847c0466c230010014b1b681847c04678230010014b1b681847c0467c230010014b1b681847c04690230010014b1b681847c04688230010014b1b681847c04698230010014b1b681847c046b0230010014b1b681847c046b823001040b4024e3668b44640bc6047ac23001040b4024e3668b44640bc6047a4230010014b1b681847c046a8230010014b1b681847c04680230010014b1b681847c046b4230010014b1b681847c04684230010014b1b681847c04694230010014b1b681847c0468c230010014b1b681847c046a0230010014b1b681847c0469c230010014b1b681847c046bc230010014b1b681847c046dc230010014b1b681847c0460c240010014b1b681847c04638240010014b1b681847c046e8230010014b1b681847c046c8230010014b1b681847c04630240010014b1b681847c046f8230010014b1b681847c046cc230010014b1b681847c046d8230010014b1b681847c04604240010014b1b681847c04620240010014b1b681847c04628240010014b1b681847c04618240010014b1b681847c046e0230010014b1b681847c046f4230010014b1b681847c046f0230010014b1b681847c04610240010014b1b681847c04614240010014b1b681847c0462c240010014b1b681847c0464024001040b4024e3668b44640bc604708240010014b1b681847c0460024001040b4024e3668b44640bc6047ec230010014b1b681847c04624240010014b1b681847c046c4230010014b1b681847c046e4230010014b1b681847c046c023001040b4024e3668b44640bc60471c240010014b1b681847c046d4230010014b1b681847c046d0230010014b1b681847c046fc230010014b1b681847c0463c240010014b1b681847c04634240010014b1b681847c04648240010014b1b681847c04644240010014b1b681847c04688240010014b1b681847c04674240010014b1b681847c04664240010014b1b681847c046b8240010014b1b681847c04668240010014b1b681847c046b024001040b4024e3668b44640bc60477c240010014b1b681847c046a0240010014b1b681847c04660240010014b1b681847c0469c240010014b1b681847c0465c240010014b1b681847c046b4240010014b1b681847c04678240010014b1b681847c0464c240010014b1b681847c046bc240010014b1b681847c04670240010014b1b681847c04658240010014b1b681847c04684240010014b1b681847c0466c240010014b1b681847c046c0240010014b1b681847c046a4240010014b1b681847c046a8240010014b1b681847c0468c240010014b1b681847c046ac240010014b1b681847c0468024001040b4024e3668b44640bc604798240010014b1b681847c04694240010014b1b681847c04690240010014b1b681847c04654240010014b1b681847c04650240010014b1b681847c046c4240010014b1b681847c046c8240010014b1b681847c046d8240010014b1b681847c046d0240010014b1b681847c046e8240010014b1b681847c046ec240010014b1b681847c046d424001040b4024e3668b44640bc6047e024001040b4024e3668b44640bc6047dc24001040b4024e3668b44640bc6047e4240010014b1b681847c046f0240010014b1b681847c046cc240010014b1b681847c0464c250010014b1b681847c046f4240010014b1b681847c04604250010014b1b681847c04628250010014b1b681847c04634250010014b1b681847c0463c250010014b1b681847c04640250010014b1b681847c04618250010014b1b681847c04608250010014b1b681847c04624250010014b1b681847c04610250010014b1b681847c04630250010014b1b681847c0462c25001040b4024e3668b44640bc604720250010014b1b681847c0461c250010014b1b681847c04644250010014b1b681847c04648250010014b1b681847c04614250010014b1b681847c046f8240010014b1b681847c046fc240010014b1b681847c04600250010014b1b681847c04674250010014b1b681847c04664250010014b1b681847c04670250010014b1b681847c0466c250010014b1b681847c04650250010014b1b681847c04660250010014b1b681847c04678250010014b1b681847c04668250010014b1b681847c04654250010014b1b681847c0467c250010014b1b681847c04658250010014b1b681847c0465c250010014b1b681847c0463825001040b4024e3668b44640bc60470c250010014b1b681847c046802500107047000000b5054a4261054a8261054a0260fff719ff01bc00470000082300103c2300101421001000b5fff7f5fd01bc0047000000b5fff7ddff01bc0047000000b5fff7d7ff01bc0047000010b581b0039c14380094fff79ffd01b010bc01bc0047000000b51438fff7b6ff01bc004700b51438fff798fd01bc004700b51838fff7b0ff02bc0847ffffffff00000000ffffffff00000000401f0010601f0010c8200010a82000102e0070006d0000001c1c00102e0070006c000000281c001025005300200069007300200075006e0074007200750073007400650064002e00200049006e007300740061006c006c0020006f006e006c007900200069006600200079006f0075002000740072007500730074002000700072006f00760069006400650072002e000000000049006e007300740061006c006c002000610073002000250053003f00000000005200650070006c0061006300650020006f006c0064002000250053003f00000049006e007300740061006c006c0065006400200025005300000000004600610069006c00750072006500200025006400200069006e007300740061006c006c0069006e00670020002500530000000000341c0010a01c0010c01c0010e01c0010fc1c00101c1c00107061636b61676500481d0010dc200010232100007065726c00000000581d00105c1d0010250053002500530025005300000000006c1d0010c820001004210010f82200105200650061006c006c0079002000720075006e0020006d006f00640075006c0065002000250053003f000000520075006e002000250053003f0000008c1d0010b81d00104600610069006c0065006400200066006f0072002000660069006c006500200025005300000000004500720072006f0072002000250064002000720065006100640069006e00670020002500530000004500720072006f00720020002500640020006f00700065006e0069006e006700200025005300000004210010f8220010d01d0010f81d0010201e0010082300103c23001014210010942100104500720072006f007200200025006400000000006c1e0010441f00102d6c65007072696e74202752756e6e696e6720696e20272c20245e4f2c20225c6e222c207363616c6172206c6f63616c74696d65000000005c1d0010881e00108c1e00100500000043006f00640065003a0000004f006e0065006c0069006e006500720000000000801f0010741f0010c01e0010dc1e0010cc1e0010991700105c1d0010881e001000200010e411001014220010082300103c230010142100109421001070220010b4220010082300103c23001014210010f61520100a000000640065006600610075006c0074002e0070006c0000000000070000005000650072006c0041007000700000000300000055004900510000003c0000005000650072006c002000250064002e00250064002e00250064002c002000530079006d006200690061006e00200070006f00720074002000250064002e00250064002e00250064002c0020006200750069006c007400200066006f0072002000250053002000530044004b002000250064002e0025006400000000005100000043006f007000790072006900670068007400200031003900380037002d00320030003000350020004c0061007200720079002000570061006c006c00200061006e00640020006f00740068006500720073002c002000530079006d006200690061006e00200070006f0072007400200043006f00700079007200690067006800740020004e006f006b0069006100200032003000300034002d00320030003000350000000d0000005c00530079007300740065006d005c004d00610069006c005c000000060000005c005000650072006c005c0000000000200000005c73797374656d5c6c6962735c7065726c5c736974657065726c5c352e392e330000000000000000000000002d1900102d1900100000000000000000791b0010e1190010ed190010f9190010051a0010fd14001009150010111a00101d1a0010291a0010351a0010411a001015150010a519001025160010f1160010b11900104d1a00100117001031160010591a0010691a00103d160010751a0010811a00108d1a0010991a0010a51a0010b11a00102d1900100000000000000000690f0010e1190010ed190010f9190010051a0010fd14001009150010111a00101d1a0010291a0010351a0010411a001015150010a519001025160010a9100010b11900104d1a00107d10001031160010591a0010691a00103d160010751a0010811a00108d1a0010991a0010a51a0010b11a0010a511001000000000000000009d1b00104916001055160010a5140010611600106d160010791600108516001091160010751b00109d160010a9160010b1140010bd140010b5160010c1160010cd160010c913001015140010d9160010e51600100000000000000000a91b0010bd1a0010c91a00102d190010d51a0010e11a0010ed1a0010f91a0010051b0010111b00101d1b0010291b00102d190010351b0010411b00100000000000000000b51b0010bd1a0010c91a00100d000010d51a0010e11a0010ed1a0010f91a0010051b0010111b00101d1b0010291b0010a1130010351b0010411b00100000000000000000dd150010e9150010ecffffff00000000d91b00102917001035170010411700104d1700105d17001069170010c11b001075170010e51b001081170010e8ffffff00000000f11b0010211500102d150010060000001b00000047000000110000002900000004000000520000006000000065000000df000000ff000000000100000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e6000000110000001f00000030000000330000003400000040000000410000004200000043000000440000004b0000005100000054000000560000006400000074000000790000007c00000082000000850000008c0000008e000000920000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000db000000e2000000fd0000000300000006000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000ae010000c1010000d301000074020000770200002903000038030000390300005303000059030000e7030000ea0300007c0400008c0400000205000003050000690500007f05000097050000e00500002e0600004b0600000600000008000000090000000b0000004c000000800500008305000084050000b0050000d1050000010000000d0000000e0000000f00000010000000750000007a0000008600000087000000900000009d000000a6000000b2000000b3000000bd000000d4000000e3000000e4000000020100001701000021010000220100008d0100009c0100009d0100009e0100009f010000a0010000a1010000a2010000a3010000a4010000a5010000a6010000a7010000a80100000000000045140000500300008802000003000000060000001b000000470000009d020000020000001100000029000000b00200000100000004000000c702000006000000520000006000000065000000df000000ff00000000010000da0200000f0000000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e6000000ee02000022000000110000001f00000030000000330000003400000040000000410000004200000043000000440000004b0000005100000054000000560000006400000074000000790000007c00000082000000850000008c0000008e000000920000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000db000000e2000000fd000000040300000200000003000000060000001903000020000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000ae010000c1010000d301000074020000770200002903000038030000390300005303000059030000e7030000ea0300007c0400008c0400000205000003050000690500007f05000097050000e00500002e0600004b0600002d0300000a0000000600000008000000090000000b0000004c000000800500008305000084050000b0050000d10500003903000024000000010000000d0000000e0000000f00000010000000750000007a0000008600000087000000900000009d000000a6000000b2000000b3000000bd000000d4000000e3000000e4000000020100001701000021010000220100008d0100009c0100009d0100009e0100009f010000a0010000a1010000a2010000a3010000a4010000a5010000a6010000a7010000a80100004150504152435b31303030336133645d2e444c4c004241464c5b31303030336130665d2e444c4c0043484152434f4e565b31303030336231315d2e444c4c00434f4e455b31303030336134315d2e444c4c0045465352565b31303030333965345d2e444c4c0045494b434f52455b31303030343839325d2e444c4c004553544c49425b31303030336230625d2e444c4c0045555345525b31303030333965355d2e444c4c005045524c3539332e444c4c0051494b43544c5b31303030356663395d2e444c4c0000002403000083010000000000004800000014302830bc3050318831c0317c32803284328832b4327c36dc37e037ac38b038543a583a5c3a643a7c3be43b543e603ee83e003f4c3fe83fec3ff03ff43f000000100000d001000078307c31e031e431e831ec31f031f431f831243228325032f032f432f832fc32003314337c3380338833c433043408340c3410346434ac34b834c434d034e034ec34f834043510351c352835343540354c35583564357035803590359c35a835b435c035cc35d835e435f035fc350836143620362c363836443650365c366836743680368c369836a436b036bc36c836d436e036ec36fc3608371837243730373c3748375837643770377c3788379437a037ac37b837c437d037dc37e837f437043810381c382838343840384c385838643870387c3888389438a038ac38b838c438d038dc38ec38f838043910391c392839343940394c3958396439703980399039a039ac39b839c439d039dc39e839f439003a0c3a183a243a303a3c3a483a543a643a703a7c3a883a943aa03aac3ab83ac43ad03adc3ae83af43a003b0c3b183b243b303b3c3b483b543b643b703b903b943b983b0c3c103c143c183c243c303c303d343d383d3c3d403d443d503d543d643d683d7c3d803d843d883dc83dcc3d483e4c3e503e543e583e5c3e603e643e683e803e843ec03ec43ec83ef03ef43ef83efc3e003f043f083f0c3f103f143f183f1c3f203f243f283f2c3f303f343f383f3c3f0000002000000c0100000c3110311c312031243128312c313031343138313c314031443148314c315031543158315c316031643168316c317031743178317c318031843188318c3190319c31a031a431a831ac31b031b431b831bc31c031c431c831cc31d031d431d831dc31e031e431e831ec31f031f431f831fc310032043208320c3210321c322032243228322c323032343238323c324032443248324c325032543258325c326032643268326c3278327c328032843288328c329032943298329c32a032a432a832ac32b032bc32c032c432c832cc32d032d432d832dc32e032e432e832ec32f032f432003304331033143318331c332033243328332c33303334333833443348334c330000
-__APP__
- }
-
- # This is Symbian application resource skeleton.
- # You can create the ...\epoc32\data\z\system\apps\PerlApp\PerlApp.rsc
- # by compiling the PerlApp.cpp.
- # The following resource has been compiled using the UIQ 2.1 SDK
- # for CodeWarrior.
- # 'make sisify_hex' to create the perlrscmin.hex for this hexdump.
- if ($Variant eq 'UIQ') {
- $RSCHEX = <<__RSC__;
-6b4a1f10000000005fde04001ca360de019a00f8030400000001f0e54d0000000004f0e54d04f0e54d0000000000000000000000000007010005f0e54d07074f7074696f6e73110000000000ffffffff0000000000000000000f0400000400000000000000000000050541626f7574170000ffffffff00000000010400000000000000000000040454696d65170000ffffffff0000000003040000000000000000000008084f6e656c696e6572170000ffffffff000000000404000000000000000000000909436f707972696768740e0000ffffffff000000000000000000050100000005055469746c6511460014000000000064b0f30001000200060650726f6d707411000800000000000000000a0001008000000005000000000d0d4f4b202f2043616e63656c203f0e460014000000000008f0e54d00000015010000000200feff00000000000000000000000002024f6b1a00ffffffff000000000101ffff000000000000000000000000060643616e63656c0b00ffffffff0000000001010005000000000a0a596573202f204e6f203f0e46001400000000000af0e54d00000015010000000200feff00000000000000000000000003035965732900ffffffff000000000101ffff000000000000000000000000024e006f0000ffffffff00000000010115001d001d0035005800de0016013a018201a301e801
-__RSC__
- }
-}
diff --git a/symbian/symbian_dll.cpp b/symbian/symbian_dll.cpp
deleted file mode 100644
index a1e61a4603..0000000000
--- a/symbian/symbian_dll.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * symbian_dll.cpp
- *
- * Copyright (c) Nokia 2004-2005. All rights reserved.
- * This code is licensed under the same terms as Perl itself.
- *
- */
-
-#define SYMBIAN_DLL_CPP
-#include <e32base.h>
-#include "PerlBase.h"
-
-#ifdef __SERIES60_3X__
-EXPORT_C GLDEF_C TInt E32Dll(/*TDllReason aReason*/) { return KErrNone; }
-#else
-EXPORT_C GLDEF_C TInt E32Dll(TDllReason /*aReason*/) { return KErrNone; }
-#endif
-
-extern "C" {
- EXPORT_C void* symbian_get_vars(void) { return Dll::Tls(); }
- EXPORT_C void symbian_set_vars(const void *p) { Dll::SetTls((TAny*)p); }
- EXPORT_C void symbian_unset_vars(void) { Dll::SetTls(0); }
-}
-
diff --git a/symbian/symbian_proto.h b/symbian/symbian_proto.h
deleted file mode 100644
index 7226663de0..0000000000
--- a/symbian/symbian_proto.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * symbian_proto.h
- *
- * Copyright (c) Nokia 2004-2005. All rights reserved.
- * This code is licensed under the same terms as Perl itself.
- *
- */
-
-#ifndef SYMBIAN_PROTO_H
-#define SYMBIAN_PROTO_H
-
-#include <sys/types.h>
-#include <sys/times.h>
-
-#if defined(PERL_CORE) || defined(PERL_EXT)
-
-/* We can't include the <string.h> unconditionally
- * since it has prototypes conflicting with the gcc builtins. */
-extern void *memchr(const void *s, int c, size_t n);
-#ifndef PERL_IN_DL_SYMBIAN_XS
-/* dl_symbian.xs needs to see the C++ prototype of memset() instead */
-extern void *memset(void *s, int c, size_t n);
-extern size_t strlen(const char *s);
-#endif
-extern void *memmove(void *dst, const void *src, size_t n);
-extern char *strcat(char *dst, const char *src);
-extern char *strchr(const char *s, int c);
-extern char *strerror(int errnum);
-extern int strncmp(const char *s1, const char *s2, size_t n);
-extern char *strrchr(const char *s, int c);
-
-extern int setmode(int fd, long flags);
-
-#ifndef __GNUC__
-#define memcpy _e32memcpy /* GCC intrinsic */
-extern void *memcpy(const void *s1, const void *s2, size_t n);
-extern int strcmp(const char *s1, const char *s2);
-extern char* strcpy(char *dst, const char *src);
-extern char* strncpy(char *dst, const char *src, size_t n);
-#endif
-
-#endif /* PERL_CORE || PERL_EXT */
-
-#if defined(SYMBIAN_DLL_CPP) || defined(SYMBIAN_UTILS_CPP) || defined(PERLBASE_CPP) || defined(PERLUTIL_CPP)
-# define PERL_SYMBIAN_START_EXTERN_C extern "C" {
-# define PERL_SYMBIAN_IMPORT_C IMPORT_C /* Declarations have IMPORT_C, definitions have EXPORT_C. */
-# define PERL_SYMBIAN_END_EXTERN_C }
-#else
-# define PERL_SYMBIAN_START_EXTERN_C
-# define PERL_SYMBIAN_IMPORT_C
-# define PERL_SYMBIAN_END_EXTERN_C
-#endif
-
-PERL_SYMBIAN_START_EXTERN_C
-PERL_SYMBIAN_IMPORT_C int symbian_sys_init(int *argcp, char ***argvp);
-PERL_SYMBIAN_IMPORT_C void init_os_extras(void);
-PERL_SYMBIAN_IMPORT_C void* symbian_get_vars(void);
-PERL_SYMBIAN_IMPORT_C void symbian_set_vars(const void *);
-PERL_SYMBIAN_IMPORT_C void symbian_unset_vars(void);
-PERL_SYMBIAN_IMPORT_C SSize_t symbian_read_stdin(const int fd, char *b, int n);
-PERL_SYMBIAN_IMPORT_C SSize_t symbian_write_stdout(const int fd, const char *b, int n);
-PERL_SYMBIAN_IMPORT_C char* symbian_get_error_string(const int error);
-PERL_SYMBIAN_IMPORT_C void symbian_sleep_usec(const long usec);
-PERL_SYMBIAN_IMPORT_C int symbian_get_cpu_time(long* sec, long* usec);
-PERL_SYMBIAN_IMPORT_C clock_t symbian_times(struct tms* buf);
-PERL_SYMBIAN_IMPORT_C int symbian_usleep(unsigned int usec);
-PERL_SYMBIAN_IMPORT_C int symbian_do_aspawn(void* vreally, void *vmark, void* sp);
-PERL_SYMBIAN_IMPORT_C int symbian_do_spawn(const char* command);
-PERL_SYMBIAN_IMPORT_C int symbian_do_spawn_nowait(const char* command);
-PERL_SYMBIAN_END_EXTERN_C
-
-#endif /* !SYMBIAN_PROTO_H */
-
diff --git a/symbian/symbian_stubs.c b/symbian/symbian_stubs.c
deleted file mode 100644
index 314bd5772c..0000000000
--- a/symbian/symbian_stubs.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * symbian_stubs.c
- *
- * Copyright (c) Nokia 2004-2005. All rights reserved.
- * This code is licensed under the same terms as Perl itself.
- *
- */
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "symbian_stubs.h"
-
-static int setENOSYS(void) { errno = ENOSYS; return -1; }
-
-uid_t getuid(void) { return setENOSYS(); }
-gid_t getgid(void) { return setENOSYS(); }
-uid_t geteuid(void) { return setENOSYS(); }
-gid_t getegid(void) { return setENOSYS(); }
-
-int setuid(uid_t uid) { return setENOSYS(); }
-int setgid(gid_t gid) { return setENOSYS(); }
-int seteuid(uid_t uid) { return setENOSYS(); }
-int setegid(gid_t gid) { return setENOSYS(); }
-
-int execv(const char* path, char* const argv []) { return setENOSYS(); }
-int execvp(const char* path, char* const argv []) { return setENOSYS(); }
-
-#ifndef USE_PERLIO
-FILE *popen(const char *command, const char *mode) { return 0; }
-int pclose(FILE *stream) { return setENOSYS(); }
-#endif
-int pipe(int fd[2]) { return setENOSYS(); }
-
-int setmode(int fd, long flags) { return -1; }
-
-_sig_func_ptr signal(int signum, _sig_func_ptr handler) { return (_sig_func_ptr)setENOSYS(); }
-int kill(pid_t pid, int signum) { return setENOSYS(); }
-pid_t wait(int *status) { return setENOSYS(); }
-
-#if PERL_VERSION <= 8
-void Perl_my_setenv(pTHX_ char *var, char *val) { }
-#else
-void Perl_my_setenv(pTHX_ const char *var, const char *val) { }
-#endif
-
-bool Perl_do_exec(pTHX_ const char *cmd) { return FALSE; }
-bool Perl_do_exec3(pTHX_ const char *cmd, int fd, int flag) { return FALSE; }
-
-int Perl_do_spawn(pTHX_ char *cmd) { return symbian_do_spawn(cmd); }
-int Perl_do_aspawn(pTHX_ SV *really, SV** mark, SV **sp) { return symbian_do_aspawn(really, mark, sp); }
-
-static const struct protoent protocols[] = {
- { "tcp", 0, 6 },
- { "udp", 0, 17 }
-};
-
-/* The protocol field (the last) is left empty to save both space
- * and time because practically all services have both tcp and udp
- * allocations in IANA. */
-static const struct servent services[] = {
- { "http", 0, 80, 0 }, /* Optimization. */
- { "https", 0, 443, 0 },
- { "imap", 0, 143, 0 },
- { "imaps", 0, 993, 0 },
- { "smtp", 0, 25, 0 },
- { "irc", 0, 194, 0 },
-
- { "ftp", 0, 21, 0 },
- { "ssh", 0, 22, 0 },
- { "tftp", 0, 69, 0 },
- { "pop3", 0, 110, 0 },
- { "sftp", 0, 115, 0 },
- { "nntp", 0, 119, 0 },
- { "ntp", 0, 123, 0 },
- { "snmp", 0, 161, 0 },
- { "ldap", 0, 389, 0 },
- { "rsync", 0, 873, 0 },
- { "socks", 0, 1080, 0 }
-};
-
-struct protoent* getprotobynumber(int number) {
- int i;
- for (i = 0; i < sizeof(protocols)/sizeof(struct protoent); i++)
- if (protocols[i].p_proto == number)
- return (struct protoent*)(&(protocols[i]));
- return 0;
-}
-
-struct protoent* getprotobyname(const char* name) {
- int i;
- for (i = 0; i < sizeof(protocols)/sizeof(struct protoent); i++)
- if (strEQ(name, protocols[i].p_name))
- return (struct protoent*)(&(protocols[i]));
- return 0;
-}
-
-struct servent* getservbyname(const char* name, const char* proto) {
- int i;
- for (i = 0; i < sizeof(services)/sizeof(struct servent); i++)
- if (strEQ(name, services[i].s_name))
- return (struct servent*)(&(services[i]));
- return 0;
-}
-
-struct servent* getservbyport(int port, const char* proto) {
- int i;
- for (i = 0; i < sizeof(services)/sizeof(struct servent); i++)
- if (services[i].s_port == port)
- return (struct servent*)(&(services[i]));
- return 0;
-}
-
diff --git a/symbian/symbian_stubs.h b/symbian/symbian_stubs.h
deleted file mode 100644
index ab6b9616cd..0000000000
--- a/symbian/symbian_stubs.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * symbian_stubs.h
- *
- * Copyright (c) Nokia 2004-2005. All rights reserved.
- * This code is licensed under the same terms as Perl itself.
- *
- */
-
-#ifndef PERL_SYMBIAN_STUBS_H
-#define PERL_SYMBIAN_STUBS_H
-
-int execv(const char* path, char* const argv []);
-int execvp(const char* path, char* const argv []);
-
-#ifndef USE_PERLIO
-FILE *popen(const char *command, const char *mode);
-int pclose(FILE *stream);
-#endif
-int pipe(int fd[2]);
-
-#endif /* PERL_SYMBIAN_STUBS_H */
-
diff --git a/symbian/symbian_utils.cpp b/symbian/symbian_utils.cpp
deleted file mode 100644
index 9749361ed0..0000000000
--- a/symbian/symbian_utils.cpp
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * symbian_utils.cpp
- *
- * Copyright (c) Nokia 2004-2005. All rights reserved.
- * This code is licensed under the same terms as Perl itself.
- *
- */
-
-#define SYMBIAN_UTILS_CPP
-#include <e32base.h>
-#include <e32std.h>
-#include <utf.h>
-#include <hal.h>
-
-#include <eikenv.h>
-
-#include <string.h>
-#include <ctype.h>
-
-#include "PerlUi.h"
-#include "PerlBase.h"
-#include "PerlUtil.h"
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-extern "C" {
- EXPORT_C int symbian_sys_init(int *argcp, char ***argvp)
- {
-#ifdef PERL_GLOBAL_STRUCT /* Avoid unused variable warning. */
- dVAR;
-#endif
- (void)times(&PL_timesbase);
- return 0;
- }
- XS(XS_PerlApp_TextQuery) // Can't be made static because of XS().
- {
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "PerlApp::TextQuery: no arguments, please");
- SP -= items;
- // TODO: parse arguments for title, prompt, and maxsize.
- // Suggested syntax:
- // TextQuery(title => ..., prompt => ..., maxsize => ...)
- // For an example see e.g. universal.c:XS_PerlIO_get_layers().
- _LIT(KTitle, "Title");
- _LIT(KPrompt, "Prompt");
- HBufC* cData = HBufC::New(KPerlUiOneLinerSize);
- TBool cSuccess = EFalse;
- if (cData) {
- TPtr cPtr(cData->Des());
- if (CPerlUi::TextQueryDialogL(KTitle,
- KPrompt,
- cPtr,
- KPerlUiOneLinerSize)) {
- ST(0) = sv_2mortal(PerlUtil::newSvPVfromTDesC16(*cData));
- cSuccess = ETrue;
- }
- delete cData;
- }
- if (cSuccess)
- XSRETURN(1);
- else
- XSRETURN_UNDEF;
- }
- EXPORT_C void init_os_extras(void)
- {
- dTHX;
- char *file = __FILE__;
- dXSUB_SYS;
- newXS("PerlApp::TextQuery", XS_PerlApp_TextQuery, file);
- }
- EXPORT_C SSize_t symbian_read_stdin(const int fd, char *b, int n)
- {
-#ifdef PERL_GLOBAL_STRUCT /* Avoid unused variable warning. */
- dVAR;
-#endif
- if(!PL_appctx)
- ((CPerlBase*)PL_appctx) = CPerlBase::NewInterpreter();
- return ((CPerlBase*)PL_appctx)->ConsoleRead(fd, b, n);
- }
- EXPORT_C SSize_t symbian_write_stdout(const int fd, const char *b, int n)
- {
-#ifdef PERL_GLOBAL_STRUCT /* Avoid unused variable warning. */
- dVAR;
-#endif
- if(!PL_appctx)
- ((CPerlBase*)PL_appctx) = CPerlBase::NewInterpreter();
- return ((CPerlBase*)PL_appctx)->ConsoleWrite(fd, b, n);
- }
- static const char NullErr[] = "";
- EXPORT_C char* symbian_get_error_string(TInt error)
- {
- // CTextResolver seems to be unreliable, so we roll our own
- // at least for the basic Symbian errors (this does not cover
- // the various subsystems).
- dTHX;
- if (error >= 0)
- return strerror(error);
- error = -error; // flip
- const TInt KErrStringMax = 256;
- typedef struct {
- const char* kerr;
- const char* desc;
- } kerritem;
- static const kerritem kerrtable[] = {
- { "None", /* 0 */ "No error"},
- { "NotFound", /* -1 */ "Unable to find the specified object"},
- { "General", /* -2 */ "General (unspecified) error"},
- { "Cancel", /* -3 */ "The operation was cancelled"},
- { "NoMemory", /* -4 */ "Not enough memory"},
- { "NotSupported", /* -5 */ "The operation requested is not supported"},
- { "Argument", /* -6 */ "Bad request"},
- { "TotalLossOfPrecision",
- /* -7 */ "Total loss of precision"},
- { "BadHandle", /* -8 */ "Bad object"},
- { "Overflow", /* -9 */ "Overflow"},
- { "Underflow", /* -10 */ "Underflow"},
- { "AlreadyExists", /* -11 */ "Already exists"},
- { "PathNotFound", /* -12 */ "Unable to find the specified folder"},
- { "Died", /* -13 */ "Closed"},
- { "InUse", /* -14 */
- "The specified object is currently in use by another program"},
- { "ServerTerminated", /* -15 */ "Server has closed"},
- { "ServerBusy", /* -16 */ "Server busy"},
- { "Completion", /* -17 */ "Completion error"},
- { "NotReady", /* -18 */ "Not ready"},
- { "Unknown", /* -19 */ "Unknown error"},
- { "Corrupt", /* -20 */ "Corrupt"},
- { "AccessDenied", /* -21 */ "Access denied"},
- { "Locked", /* -22 */ "Locked"},
- { "Write", /* -23 */ "Failed to write"},
- { "DisMounted", /* -24 */ "Wrong disk present"},
- { "Eof", /* -25 */ "Unexpected end of file"},
- { "DiskFull", /* -26 */ "Disk full"},
- { "BadDriver", /* -27 */ "Bad device driver"},
- { "BadName", /* -28 */ "Bad name"},
- { "CommsLineFail", /* -29 */ "Comms line failed"},
- { "CommsFrame", /* -30 */ "Comms frame error"},
- { "CommsOverrun", /* -31 */ "Comms overrun error"},
- { "CommsParity", /* -32 */ "Comms parity error"},
- { "TimedOut", /* -33 */ "Timed out"},
- { "CouldNotConnect",/* -34 */ "Failed to connect"},
- { "CouldNotDisconnect",
- /* -35 */ "Failed to disconnect"},
- { "Disconnected", /* -36 */ "Disconnected"},
- { "BadLibraryEntryPoint",
- /* -37 */ "Bad library entry point"},
- { "BadDescriptor", /* -38 */ "Bad descriptor"},
- { "Abort", /* -39 */ "Interrupted"},
- { "TooBig", /* -40 */ "Too big"},
- { "DivideByZero", /* -41 */ "Divide by zero"},
- { "BadPower", /* -42 */ "Batteries too low"},
- { "DirFull", /* -43 */ "Folder full"},
- { "KErrHardwareNotAvailable",
- /* -44 */ "Hardware is not available"},
- { "SessionClosed", /* -45 */ "Session was closed"},
- { "PermissionDenied",
- /* -46 */ "Permission denied"}
- };
- const TInt n = sizeof(kerrtable) / sizeof(kerritem *);
- TBuf8<KErrStringMax> buf8;
- if (error >= 0 && error < n) {
- const char *kerr = kerrtable[error].kerr;
- const char *desc = kerrtable[error].desc;
- const TPtrC8 kerrp((const unsigned char *)kerr, strlen(kerr));
- const TPtrC8 descp((const unsigned char *)desc, strlen(desc));
- TBuf8<KErrStringMax> ckerr;
- TBuf8<KErrStringMax> cdesc;
- ckerr.Copy(kerrp);
- cdesc.Copy(descp);
- buf8.Format(_L8("K%S (%d) %S"), &ckerr, error, &cdesc);
-
- } else {
- buf8.Format(_L8("Symbian error %d"), error);
- }
- SV* sv = Perl_get_sv(aTHX_ "\005", TRUE); /* $^E or ${^OS_ERROR} */
- if (!sv)
- return (char*)NullErr;
- sv_setpv(sv, (const char *)buf8.PtrZ());
- return SvPV_nolen(sv);
- }
- EXPORT_C void symbian_sleep_usec(const long usec)
- {
- User::After((TTimeIntervalMicroSeconds32) usec);
- }
-#define PERL_SYMBIAN_CLK_TCK 100
- EXPORT_C int symbian_get_cpu_time(long* sec, long* usec)
- {
- // The RThread().GetCpuTime() does not seem to work?
- // (it always returns KErrNotSupported)
- // TTimeIntervalMicroSeconds ti;
- // TInt err = me.GetCpuTime(ti);
- dTHX;
- TInt periodus; /* tick period in microseconds */
- if (HAL::Get(HALData::ESystemTickPeriod, periodus) != KErrNone)
- return -1;
- TUint tick = User::TickCount();
- if (PL_timesbase.tms_utime == 0) {
- PL_timesbase.tms_utime = tick;
- PL_clocktick = PERL_SYMBIAN_CLK_TCK;
- }
- tick -= PL_timesbase.tms_utime;
- TInt64 tickus = TInt64(tick) * TInt64(periodus);
- TInt64 tmps = tickus / 1000000;
-#ifdef __SERIES60_3X__
- if (sec) *sec = I64LOW(tmps);
- if (usec) *usec = I64LOW(tickus) - I64LOW(tmps) * 1000000;
-#else
- if (sec) *sec = tmps.Low();
- if (usec) *usec = tickus.Low() - tmps.Low() * 1000000;
-#endif //__SERIES60_3X__
- return 0;
- }
- EXPORT_C int symbian_usleep(unsigned int usec)
- {
- if (usec >= 1000000) {
- errno = EINVAL;
- return -1;
- }
- symbian_sleep_usec((const long) usec);
- return 0;
- }
-#define SEC_USEC_TO_CLK_TCK(s, u) \
- (((s) * PERL_SYMBIAN_CLK_TCK) + (u / (1000000 / PERL_SYMBIAN_CLK_TCK)))
- EXPORT_C clock_t symbian_times(struct tms *tmsbuf)
- {
- long s, u;
- if (symbian_get_cpu_time(&s, &u) == -1) {
- errno = EINVAL;
- return -1;
- } else {
- tmsbuf->tms_utime = SEC_USEC_TO_CLK_TCK(s, u);
- tmsbuf->tms_stime = 0;
- tmsbuf->tms_cutime = 0;
- tmsbuf->tms_cstime = 0;
- return tmsbuf->tms_utime;
- }
- }
- class CProcessWait : public CActive
- {
- public:
- CProcessWait() : CActive(EPriorityStandard) {
- CActiveScheduler::Add(this);
- }
-#ifdef __WINS__
- TInt Wait(RThread& aProcess)
-#else
- TInt Wait(RProcess& aProcess)
-#endif
- {
- aProcess.Logon(iStatus);
- aProcess.Resume();
- SetActive();
- CActiveScheduler::Start();
- return iStatus.Int();
- }
- private:
- void DoCancel() {;}
- void RunL() {
- CActiveScheduler::Stop();
- }
- };
- class CSpawnIoRedirect : public CBase
- {
- public:
- CSpawnIoRedirect();
- // NOTE: there is no real implementation of I/O redirection yet.
- protected:
- private:
- };
- CSpawnIoRedirect::CSpawnIoRedirect()
- {
- }
- typedef enum {
- ESpawnNone = 0x00000000,
- ESpawnWait = 0x00000001
- } TSpawnFlag;
- static int symbian_spawn(const TDesC& aFilename,
- const TDesC& aCommand,
- const TSpawnFlag aFlag,
- const CSpawnIoRedirect& aIoRedirect) {
- TInt error = KErrNone;
-#ifdef __WINS__
- const TInt KStackSize = 0x1000;
- const TInt KHeapMin = 0x1000;
- const TInt KHeapMax = 0x100000;
- RThread proc;
- RLibrary lib;
- HBufC* command = aCommand.Alloc();
- error = lib.Load(aFilename);
- if (error == KErrNone) {
- TThreadFunction func = (TThreadFunction)(lib.Lookup(1));
- if (func)
- error = proc.Create(aFilename,
- func,
- KStackSize,
-#ifdef __SERIES60_3X__
- KHeapMin,
- KHeapMax,
- (TAny*)command,
-#else
- (TAny*)command,
- &lib,
- RThread().Heap(),
- KHeapMin,
- KHeapMax,
-#endif
- EOwnerProcess);
- else
- error = KErrNotFound;
- lib.Close();
- }
- else
- delete command;
-#else
- RProcess proc;
- error = proc.Create(aFilename, aCommand);
-#endif
- if (error == KErrNone) {
- if ((TInt)aFlag & (TInt)ESpawnWait) {
- CProcessWait* w = new CProcessWait();
- if (w) {
- error = w->Wait(proc);
- delete w;
- } else
- error = KErrNoMemory;
- } else
- proc.Resume();
- proc.Close();
- }
- return error;
- }
- static int symbian_spawner(const char *command, TSpawnFlag aFlags)
- {
- TBuf<KMaxFileName> aFilename;
- TBuf<KMaxFileName> aCommand;
- TSpawnFlag aSpawnFlags = ESpawnWait;
- CSpawnIoRedirect iord;
- char *p = (char*)command;
-
- // The recognized syntax is: "cmd [args] [&]". Since one
- // cannot pass more than (an argv[0] and) an argv[1] to a
- // Symbian process anyway, not much is done to the cmd or
- // the args, only backslash quoting.
-
- // Strip leading whitespace.
- while (*p && isspace(*p)) p++;
- if (*p) {
- // Build argv[0].
- while (*p && !isspace(*p) && *p != '&') {
- if (*p == '\\') {
- if (p[1]) {
- aFilename.Append(p[1]);
- p++;
- }
-
- }
- else
- aFilename.Append(*p);
- p++;
- }
-
- if (*p) {
- // Skip whitespace between argv[0] and argv[1].
- while(*p && isspace(*p)) p++;
- // Build argv[1].
- if (*p) {
- char *a = p;
- char *b = p + 1;
-
- while (*b) b++;
- if (isspace(b[-1])) {
- b--;
- while (b > a && isspace(*b)) b--;
- b++;
- }
- if (b > a && b[-1] == '&') {
- // Parse backgrounding in any case,
- // but turn it off only if wanted.
- if ((aFlags & ESpawnWait))
- aSpawnFlags =
- (TSpawnFlag) (aSpawnFlags & ~ESpawnWait);
- b--;
- if (isspace(b[-1])) {
- b--;
- while (b > a && isspace(*b)) b--;
- b++;
- }
- }
- for (p = a; p < b; p++) {
- if (*p == '\\') {
- if (p[1])
- aCommand.Append(p[1]);
- p++;
- }
- else
- aCommand.Append(*p);
- }
- }
- // NOTE: I/O redirection is not yet done.
- // Implementing that may require a separate server.
- }
- }
- int spawned = symbian_spawn(aFilename, aCommand, aSpawnFlags, iord);
- return spawned == KErrNone ? 0 : -1;
- }
- EXPORT_C int symbian_do_spawn(const char *command)
- {
- return symbian_spawner(command, ESpawnWait);
- }
- EXPORT_C int symbian_do_spawn_nowait(const char *command)
- {
- return symbian_spawner(command, ESpawnNone);
- }
- EXPORT_C int symbian_do_aspawn(void* vreally, void* vmark, void* sp)
- {
- return -1;
- }
-}
-
diff --git a/symbian/symbianish.h b/symbian/symbianish.h
deleted file mode 100644
index 3b0ddb3f3c..0000000000
--- a/symbian/symbianish.h
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * symbianish.h
- *
- * Copyright (c) Nokia 2004-2005. All rights reserved.
- * This code is licensed under the same terms as Perl itself.
- *
- */
-
-#include "symbian/symbian_port.h"
-
-/*
- * The following symbols are defined if your operating system supports
- * functions by that name. All Unixes I know of support them, thus they
- * are not checked by the configuration script, but are directly defined
- * here.
- */
-
-#ifndef PERL_MICRO
-
-/* HAS_IOCTL:
- * This symbol, if defined, indicates that the ioctl() routine is
- * available to set I/O characteristics
- */
-#define HAS_IOCTL / **/
-
-/* HAS_UTIME:
- * This symbol, if defined, indicates that the routine utime() is
- * available to update the access and modification times of files.
- */
-/* #define HAS_UTIME / **/
-
-/* HAS_GROUP
- * This symbol, if defined, indicates that the getgrnam() and
- * getgrgid() routines are available to get group entries.
- * The getgrent() has a separate definition, HAS_GETGRENT.
- */
-#undef HAS_GROUP /**/
-
-/* HAS_PASSWD
- * This symbol, if defined, indicates that the getpwnam() and
- * getpwuid() routines are available to get password entries.
- * The getpwent() has a separate definition, HAS_GETPWENT.
- */
-#undef HAS_PASSWD /**/
-
-#undef HAS_KILL
-#undef HAS_WAIT
-
-#endif /* !PERL_MICRO */
-
-/* USEMYBINMODE
- * This symbol, if defined, indicates that the program should
- * use the routine my_binmode(FILE *fp, char iotype) to insure
- * that a file is in "binary" mode -- that is, that no translation
- * of bytes occurs on read or write operations.
- */
-#undef USEMYBINMODE
-
-/* Stat_t:
- * This symbol holds the type used to declare buffers for information
- * returned by stat(). It's usually just struct stat. It may be necessary
- * to include <sys/stat.h> and <sys/types.h> to get any typedef'ed
- * information.
- */
-#define Stat_t struct stat
-
-/* USE_STAT_RDEV:
- * This symbol is defined if this system has a stat structure declaring
- * st_rdev
- */
-#define USE_STAT_RDEV /**/
-
-/* ACME_MESS:
- * This symbol, if defined, indicates that error messages should be
- * should be generated in a format that allows the use of the Acme
- * GUI/editor's autofind feature.
- */
-#undef ACME_MESS /**/
-
-/* UNLINK_ALL_VERSIONS:
- * This symbol, if defined, indicates that the program should arrange
- * to remove all versions of a file if unlink() is called. This is
- * probably only relevant for VMS.
- */
-/* #define UNLINK_ALL_VERSIONS / **/
-
-/* VMS:
- * This symbol, if defined, indicates that the program is running under
- * VMS. It is currently automatically set by cpps running under VMS,
- * and is included here for completeness only.
- */
-/* #define VMS / **/
-
-/* ALTERNATE_SHEBANG:
- * This symbol, if defined, contains a "magic" string which may be used
- * as the first line of a Perl program designed to be executed directly
- * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG
- * begins with a character other then #, then Perl will only treat
- * it as a command line if it finds the string "perl" in the first
- * word; otherwise it's treated as the first line of code in the script.
- * (IOW, Perl won't hand off to another interpreter via an alternate
- * shebang sequence that might be legal Perl code.)
- */
-/* #define ALTERNATE_SHEBANG "#!" / **/
-
-#include <signal.h>
-#define ABORT() abort()
-
-/*
- * fwrite1() should be a routine with the same calling sequence as fwrite(),
- * but which outputs all of the bytes requested as a single stream (unlike
- * fwrite() itself, which on some systems outputs several distinct records
- * if the number_of_items parameter is >1).
- */
-#define fwrite1 fwrite
-
-#define Stat(fname,bufptr) stat((fname),(bufptr))
-#define Fstat(fd,bufptr) fstat((fd),(bufptr))
-#define Fflush(fp) fflush(fp)
-#define Mkdir(path,mode) mkdir((path),(mode))
-
-#ifndef PERL_SYS_TERM_BODY
-#define PERL_SYS_TERM_BODY() HINTS_REFCNT_TERM; OP_REFCNT_TERM; \
- PERLIO_TERM; MALLOC_TERM; CloseSTDLIB(); \
- LOCALE_TERM; ENV_TERM;
-
-#endif
-
-#define BIT_BUCKET "NUL:"
-
-#define dXSUB_SYS dNOOP
-
-#define NO_ENVIRON_ARRAY
-
-int kill(pid_t pid, int signo);
-pid_t wait(int *status);
-
-#ifdef PERL_GLOBAL_STRUCT_PRIVATE
-# undef PERL_GET_VARS
-# undef PERL_SET_VARS
-# undef PERL_UNSET_VARS
-# define PERL_GET_VARS() symbian_get_vars()
-# define PERL_SET_VARS(v) symbian_set_vars(v)
-# define PERL_UNSET_VARS(v) symbian_unset_vars()
-#endif /* #ifdef PERL_GLOBAL_STRUCT_PRIVATE */
-
-#define PERL_CALLCONV EXPORT_C /* for proto.h */
-
-#ifndef PERL_CORE
-#define PERL_CORE /* for WINS builds under VC */
-#endif
-
-#ifdef USE_PERLIO
-#define PERL_NEED_APPCTX /* need storing the PerlBase* */
-#define PERLIO_STD_SPECIAL
-#define PERLIO_STD_IN(f, b, n) symbian_read_stdin(f, b, n)
-#define PERLIO_STD_OUT(f, b, n) symbian_write_stdout(f, b, n)
-/* The console (the STD*) streams are seen by Perl in UTF-8. */
-#define PERL_SYMBIAN_CONSOLE_UTF8
-
-#endif
-
-#undef Strerror
-#undef strerror
-#define Strerror(eno) ((eno) < 0 ? symbian_get_error_string(eno) : strerror(eno))
-
-#define PERL_NEED_TIMESBASE
-
-#define times(b) symbian_times(b)
-#define usleep(u) symbian_usleep(u)
-
-#define PERL_SYS_INIT_BODY(c, v) symbian_sys_init(c, v)
-
-#ifdef __SERIES60_1X__
-# error "Unfortunately Perl does not work in S60 1.2 (see FAQ-0929)"
-#endif
-
-#ifdef _MSC_VER
-
-/* The Symbian SDK insists on the /W4 flag for Visual C.
- * The Perl sources are not _that_ clean (Perl builds for Win32 use
- * the /W3 flag, and gcc builds always use -Wall, so the sources are
- * quite clean). To avoid a flood of warnings let's shut up most
- * (for VC 6.0 SP 5). */
-
-#pragma warning(disable: 4054) /* function pointer to data pointer */
-#pragma warning(disable: 4055) /* data pointer to function pointer */
-#pragma warning(disable: 4100) /* unreferenced formal parameter */
-#pragma warning(disable: 4101) /* unreferenced local variable */
-#pragma warning(disable: 4102) /* unreferenced label */
-#pragma warning(disable: 4113) /* prototype difference */
-#pragma warning(disable: 4127) /* conditional expression is constant */
-#pragma warning(disable: 4132) /* const object should be initialized */
-#pragma warning(disable: 4133) /* incompatible types */
-#pragma warning(disable: 4189) /* initialized but not referenced */
-#pragma warning(disable: 4244) /* conversion from ... possible loss ... */
-#pragma warning(disable: 4245) /* signed/unsigned char */
-#pragma warning(disable: 4310) /* cast truncates constant value */
-#pragma warning(disable: 4505) /* function has been removed */
-#pragma warning(disable: 4510) /* default constructor could not ... */
-#pragma warning(disable: 4610) /* struct ... can never be instantiated */
-#pragma warning(disable: 4701) /* used without having been initialized */
-#pragma warning(disable: 4702) /* unreachable code */
-#pragma warning(disable: 4706) /* assignment within conditional */
-#pragma warning(disable: 4761) /* integral size mismatch */
-
-#endif /* _MSC_VER */
-
-#ifdef __MWERKS__
-/* No good way of using the CodeWarrior #pragma unused(varname) with Perl
- * source code (e.g. PERL_UNUSED_DECL doesn't work with the pragma syntax).
- * Therefore we brutally turn off these particular warnings since there
- * is a lot of this in Perl code (pTHX, for example). TOther compilers
- * will have to detect these naughty bits. */
-#pragma warn_unusedarg off
-#pragma warn_unusedvar off
-#pragma warn_emptydecl off
-#endif
diff --git a/symbian/uid.pl b/symbian/uid.pl
deleted file mode 100644
index 6eae8a9bcb..0000000000
--- a/symbian/uid.pl
+++ /dev/null
@@ -1 +0,0 @@
-0x102015F3
diff --git a/symbian/version.pl b/symbian/version.pl
deleted file mode 100644
index f4208f873f..0000000000
--- a/symbian/version.pl
+++ /dev/null
@@ -1,22 +0,0 @@
-use strict;
-
-my %VERSION;
-
-if (open(PATCHLEVEL_H, "<", "patchlevel.h")) {
- while (<PATCHLEVEL_H>) {
- if (/#define\s+PERL_(REVISION|VERSION|SUBVERSION)\s+(\d+)/) {
- $VERSION{$1} = $2;
- }
- }
- close PATCHLEVEL_H;
-} else {
- die "$0: patchlevel.h: $!\n";
-}
-
-die "$0: Perl release looks funny.\n"
- unless (defined $VERSION{REVISION} && $VERSION{REVISION} == 5 &&
- defined $VERSION{VERSION} && $VERSION{VERSION} >= 8 &&
- defined $VERSION{SUBVERSION});
-
-
-\%VERSION;
diff --git a/symbian/xsbuild.pl b/symbian/xsbuild.pl
deleted file mode 100644
index 5ccd7c379e..0000000000
--- a/symbian/xsbuild.pl
+++ /dev/null
@@ -1,976 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-
-use Getopt::Long;
-use File::Basename;
-use Cwd;
-
-unshift @INC, dirname $0 || '.';
-do "sanity.pl" or die $@;
-
-my $CoreBuild = -d "ext" && -f "perl.h" && -d "symbian" && -f "perl.c";
-
-my $SymbianVersion;
-
-if (exists $ENV{EPOCROOT}) {
- if ($ENV{EPOCROOT} =~ m!\\Symbian\\UIQ_21\\$!i) {
- $SymbianVersion = '7.0s'; # TODO: other UIQ versions
- } elsif ($ENV{EPOCROOT} =~ m!\\Symbian\\(.+?)\\!i) {
- $SymbianVersion = $1;
- }
-}
-
-$SymbianVersion = $ENV{XSBUILD_SYMBIAN_VERSION}
- if exists $ENV{XSBUILD_SYMBIAN_VERSION};
-
-my $PerlVersion = $ENV{XSBUILD_PERL_VERSION};
-my $CSuffix = '.c';
-my $CPlusPlus;
-my $Config;
-my $Build;
-my $Clean;
-my $DistClean;
-my $Sis;
-
-sub usage {
- die <<__EOF__;
-$0: Usage: $0 [--symbian=version] [--perl=version]
- [--extversion=x.y]
- [--csuffix=csuffix] [--cplusplus|--cpp]
- [--win=win] [--arm=arm]
- [--config|--build|--clean|--distclean|--sis] ext
-__EOF__
-}
-
-my $CWD;
-my $SDK;
-my $VERSION;
-my $R_V_SV;
-my $PERLSDK;
-my $WIN = 'wins';
-my $ARM = 'thumb';
-my $BUILDROOT = getcwd();
-
-if ( !defined $PerlVersion && $0 =~ m:\\symbian\\perl\\(.+)\\bin\\xsbuild.pl:i )
-{
- $PerlVersion = $1;
-}
-
-if ( !defined $SymbianVersion) {
- ($SymbianVersion) = ($ENV{PATH} =~ m!\\Symbian\\(.+?)\\!i);
-}
-
-my ($SYMBIAN_ROOT, $SYMBIAN_VERSION, $SDK_NAME, $SDK_VARIANT, $SDK_VERSION);
-
-if ($CoreBuild) {
- do "sanity.pl" or die $@;
- my %VERSION = %{ do "version.pl" or die $@ };
- ($SYMBIAN_ROOT, $SYMBIAN_VERSION, $SDK_NAME, $SDK_VARIANT, $SDK_VERSION) =
- @{ do "sdk.pl" or die $@ };
- $VERSION = "$VERSION{REVISION}$VERSION{VERSION}$VERSION{SUBVERSION}";
- $R_V_SV = "$VERSION{REVISION}.$VERSION{VERSION}.$VERSION{SUBVERSION}";
- $BUILDROOT = do "cwd.pl" or die $@;
- $PerlVersion = $R_V_SV;
-}
-
-my %CONF;
-
-usage()
- unless GetOptions(
- 'symbian=s' => \$SymbianVersion,
- 'perl=s' => \$PerlVersion,
- 'extversion=s' => \$CONF{EXTVERSION},
- 'csuffix=s' => \$CSuffix,
- 'cplusplus|cpp' => \$CPlusPlus,
- 'win=s' => \$WIN,
- 'arm=s' => \$ARM,
- 'config' => \$Config,
- 'build' => \$Build,
- 'clean' => \$Clean,
- 'distclean' => \$DistClean,
- 'sis' => \$Sis
- );
-
-usage() unless @ARGV;
-
-$CSuffix = '.cpp' if $CPlusPlus;
-$Build = !( $Config || $Clean || $DistClean ) || $Sis unless defined $Build;
-
-die "$0: Symbian version undefined\n" unless defined $SymbianVersion;
-
-$SymbianVersion =~ s:/:\\:g;
-
-#die "$0: Symbian version '$SymbianVersion' not found\n"
-# unless -d "\\Symbian\\$SymbianVersion";
-
-die "$0: Perl version undefined\n" unless defined $PerlVersion;
-
-$PERLSDK = "$SYMBIAN_ROOT\\Perl\\$PerlVersion";
-
-die "$0: Perl version '$PerlVersion' not found\n"
- if !$CoreBuild && !-d $PERLSDK;
-
-print "Configuring with Symbian $SymbianVersion and Perl $PerlVersion...\n";
-
-$R_V_SV = $PerlVersion;
-
-$VERSION = $PerlVersion unless defined $VERSION;
-
-$VERSION =~ tr/.//d if defined $VERSION;
-
-$ENV{SDK} = $SYMBIAN_ROOT; # For the Errno extension
-$ENV{CROSS} = 1; # For the Encode extension (unbuilt now)
-
-my $UARM = 'urel';
-my $UREL = "$SYMBIAN_ROOT\\epoc32\\release\\-ARM-\\$UARM";
-my $SRCDBG;
-if (exists $ENV{UREL}) {
- $UREL = $ENV{UREL}; # from sdk.pl
- $UREL =~ s/-ARM-/$ARM/;
- $UARM = $ENV{UARM}; # from sdk.pl
- $SRCDBG = $UARM eq 'udeb' ? "SRCDBG" : "";
-}
-
-my %EXTCFG;
-
-sub write_bld_inf {
- my ($base) = @_;
- print "\tbld.inf\n";
- open( BLD_INF, '>', 'bld.inf' ) or die "$0: bld.inf: $!\n";
- print BLD_INF <<__EOF__;
-PRJ_MMPFILES
-$base.mmp
-PRJ_PLATFORMS
-$WIN $ARM
-__EOF__
- close(BLD_INF);
-}
-
-sub system_echo {
- my $cmd = shift;
- print "xsbuild: ", $cmd, "\n";
- return system($cmd);
-}
-
-sub run_PL {
- my ( $PL, $dir, $file ) = @_;
- if ( defined $file ) {
- print "\t(Running $dir\\$PL to create $file)\n";
- unlink($file);
- }
- else {
- print "\t(Running $dir\\$PL)\n";
- }
- my $cmd;
- $ENV{PERL_CORE} = 1 if $CoreBuild;
- system_echo("perl -I$BUILDROOT\\lib -I$BUILDROOT\\xlib\\symbian -I$BUILDROOT\\t\\lib $PL") == 0
- or warn "$0: $PL failed.\n";
- if ( defined $file ) { -s $file or die "$0: No $file created.\n" }
-}
-
-sub read_old_multi {
- my ( $conf, $k ) = @_;
- push @{ $conf->{$k} }, split( ' ', $1 ) if /^$k\s(.+)$/;
-}
-
-sub uniquefy_filenames {
- my $b = [];
- my %c = ();
- for my $i (@{$_[0]}) {
- $i =~ s!/!\\!g;
- $i = lc $i if $i =~ m!\\!;
- $i =~ s!^c:!!;
- push @$b, $i unless $c{$i}++;
- }
- return $b;
-}
-
-sub read_mmp {
- my ( $conf, $mmp ) = @_;
- if ( -r $mmp && open( MMP, '<', $mmp ) ) {
- print "\tReading $mmp...\n";
- while (<MMP>) {
- chomp;
- $conf->{TARGET} = $1 if /^TARGET\s+(.+)$/;
- $conf->{TARGETPATH} = $1 if /^TARGETPATH\s+(.+)$/;
- $conf->{EXTVERSION} = $1 if /^EXTVERSION\s+(.+)$/;
- read_old_multi( $conf, "SOURCE" );
- read_old_multi( $conf, "SOURCEPATH" );
- read_old_multi( $conf, "USERINCLUDE" );
- read_old_multi( $conf, "SYSTEMINCLUDE" );
- read_old_multi( $conf, "LIBRARY" );
- read_old_multi( $conf, "MACRO" );
- }
- close(MMP);
- }
-}
-
-sub write_mmp {
- my ( $ext, $base, $userinclude, @src ) = @_;
-
- my $extdash = $ext; $extdash =~ s!\\!-!g;
-
- print "\t$base.mmp\n";
- $CONF{TARGET} = "perl$VERSION-$extdash.dll";
- $CONF{TARGETPATH} = "\\System\\Libs\\Perl\\$R_V_SV";
- $CONF{SOURCE} = [@src];
- $CONF{SOURCEPATH} = [ $CWD, $BUILDROOT ];
- $CONF{USERINCLUDE} = [ $CWD, $BUILDROOT ];
- $CONF{SYSTEMINCLUDE} = ["$PERLSDK\\include"] unless $CoreBuild;
- $CONF{SYSTEMINCLUDE} = [ $BUILDROOT, "$BUILDROOT\\symbian" ] if $CoreBuild;
- $CONF{LIBRARY} = [];
- $CONF{MACRO} = [];
- read_mmp( \%CONF, "_init.mmp" );
- read_mmp( \%CONF, "$base.mmp" );
-
- if ($base eq 'Zlib') {
- push @{$CONF{USERINCLUDE}}, "$CWD\\zlib-src";
- }
-
- for my $ui ( @{$userinclude} ) {
- $ui =~ s!/!\\!g;
- if ( $ui =~ m!^(?:[CD]:)?\\! ) {
- push @{ $CONF{USERINCLUDE} }, $ui;
- }
- else {
- push @{ $CONF{USERINCLUDE} }, "$BUILDROOT\\$ui";
- }
- }
- push @{ $CONF{SYSTEMINCLUDE} }, "\\epoc32\\include";
- push @{ $CONF{SYSTEMINCLUDE} }, "\\epoc32\\include\\libc";
- push @{ $CONF{LIBRARY} }, "euser.lib";
- push @{ $CONF{LIBRARY} }, "estlib.lib";
- push @{ $CONF{LIBRARY} }, "perl$VERSION.lib";
- push @{ $CONF{MACRO} }, "SYMBIAN" unless $CoreBuild;
- push @{ $CONF{MACRO} }, "PERL_EXT" if $CoreBuild;
- push @{ $CONF{MACRO} }, "MULTIPLICITY";
- push @{ $CONF{MACRO} }, "PERL_IMPLICIT_CONTEXT";
- push @{ $CONF{MACRO} }, "PERL_GLOBAL_STRUCT";
- push @{ $CONF{MACRO} }, "PERL_GLOBAL_STRUCT_PRIVATE";
-
- if ($SDK_VARIANT eq 'S60') {
- push @{ $CONF{MACRO} }, '__SERIES60__'
- unless grep { $_ eq '__SERIES60__' } @{ $CONF{MACRO} };
- }
- if ($SDK_VARIANT eq 'S80') {
- push @{ $CONF{MACRO} }, '__SERIES80__'
- unless grep { $_ eq '__SERIES80__' } @{ $CONF{MACRO} };
- }
- if ($SDK_VARIANT eq 'S90') {
- push @{ $CONF{MACRO} }, '__SERIES90__'
- unless grep { $_ eq '__SERIES90__' } @{ $CONF{MACRO} };
- }
- if ($SDK_VARIANT eq 'UIQ') {
- push @{ $CONF{MACRO} }, '__UIQ__'
- unless grep { $_ eq '__UIQ__' } @{ $CONF{MACRO} };
- }
-
- for my $u (qw(SOURCE SOURCEPATH SYSTEMINCLUDE USERINCLUDE LIBRARY MACRO)) {
- $CONF{$u} = uniquefy_filenames( $CONF{$u} );
- }
- open( BASE_MMP, '>', "$base.mmp" ) or die "$0: $base.mmp: $!\n";
-
- print BASE_MMP <<__EOF__;
-TARGET $CONF{TARGET}
-TARGETTYPE dll
-TARGETPATH $CONF{TARGETPATH}
-SOURCE @{$CONF{SOURCE}}
-$SRCDBG
-__EOF__
- for my $u (qw(SOURCEPATH SYSTEMINCLUDE USERINCLUDE)) {
- for my $v ( @{ $CONF{$u} } ) {
- print BASE_MMP "$u\t$v\n";
- }
- }
- # OPTION does not work in MMPs for pre-2.0 SDKs?
- print BASE_MMP <<__EOF__;
-LIBRARY @{$CONF{LIBRARY}}
-MACRO @{$CONF{MACRO}}
-// OPTION MSVC /P // Uncomment for creating .i (cpp'ed .cpp)
-// OPTION GCC -E // Uncomment for creating .i (cpp'ed .cpp)
-__EOF__
-# if (-f "$base.rss") {
-# print BASE_MMP "RESOURCE\t$base.rss\n";
-# }
- close(BASE_MMP);
-
-}
-
-sub write_makefile {
- my ( $base, $build ) = @_;
-
- print "\tMakefile\n";
-
- my $windef1 = "$SYMBIAN_ROOT\\Epoc32\\Build$CWD\\$base\\$WIN\\$base.def";
- my $windef2 = "..\\BWINS\\${base}u.def";
- my $armdef1 = "$SYMBIAN_ROOT\\Epoc32\\Build$CWD\\$base\\$ARM\\$base.def";
- my $armdef2 = "..\\BMARM\\${base}u.def";
-
- my $wrap = $SYMBIAN_ROOT && defined $SDK_VARIANT eq 'S60' && $SDK_VERSION eq '1.2' && $SYMBIAN_ROOT !~ /_CW$/;
- my $ABLD = $wrap ? 'perl b.pl' : 'abld';
-
- open( MAKEFILE, '>', 'Makefile' ) or die "$0: Makefile: $!\n";
- print MAKEFILE <<__EOF__;
-WIN = $WIN
-ARM = $ARM
-ABLD = $ABLD
-
-all: build freeze
-
-sis: build_arm freeze_arm
-
-build: abld.bat build_win build_arm
-
-abld.bat:
- bldmake bldfiles
-
-build_win: abld.bat
- bldmake bldfiles
- \$(ABLD) build \$(WIN) udeb
-
-build_arm: abld.bat
- bldmake bldfiles
- \$(ABLD) build \$(ARM) $UARM
-
-win: build_win freeze_win
-
-arm: build_arm freeze_arm
-
-freeze: freeze_win freeze_arm
-
-freeze_win:
- bldmake bldfiles
- \$(ABLD) freeze \$(WIN) $base
-
-freeze_arm:
- bldmake bldfiles
- \$(ABLD) freeze \$(ARM) $base
-
-defrost: defrost_win defrost_arm
-
-defrost_win:
- -del /f $windef1
- -del /f $windef2
-
-defrost_arm:
- -del /f $armdef1
- -del /f $armdef2
-
-clean: clean_win clean_arm
-
-clean_win:
- \$(ABLD) clean \$(WIN)
-
-clean_arm:
- \$(ABLD) clean \$(ARM)
-
-realclean: clean realclean_win realclean_arm
- -del /f _init.c b.pl
- -del /f $base.c $base.mmp
-
-realclean_win:
- \$(ABLD) reallyclean \$(WIN)
-
-realclean_arm:
- \$(ABLD) reallyclean \$(ARM)
-
-distclean: defrost realclean
- -rmdir ..\\BWINS ..\\BMARM
- -del /f const-c.inc const-xs.inc
- -del /f Makefile abld.bat bld.inf
-__EOF__
- close(MAKEFILE);
- if ($wrap) {
- if(open(B, '>', 'b.pl')) {
- print B <<'__EOF__';
-# abld.pl wrapper.
-
-# nmake doesn't like MFLAGS and MAKEFLAGS being set to -w and w.
-delete $ENV{MFLAGS};
-delete $ENV{MAKEFLAGS};
-
-print "abld @ARGV\n";
-system_echo("abld @ARGV");
-__EOF__
- close(B);
- } else {
- warn "$0: failed to create b.pl: $!\n";
- }
- }
-}
-
-sub update_dir {
- print "[chdir from ", getcwd(), " to ";
- chdir(shift) or return;
- update_cwd();
- print getcwd(), "]\n";
-}
-
-sub patch_config {
- # Problem: the Config.pm we have in $BUILDROOT\\lib carries the
- # version number of the Perl we are building, while the Perl
- # we are running might have some other version. Solution:
- # temporarily replace the Config.pm with a patched version.
- #
- # Reverse patch will be done with this special script
- my $config_restore_script = "$BUILDROOT\\lib\\symbian_config_restore.pl";
- # make sure the patch script was not left from previous run
- unlink $config_restore_script;
- return unless $CoreBuild;
- my $V = sprintf "%vd", $^V;
- # create reverse patch script
- if (open(RSCRIPT, '>', $config_restore_script)) {
- print RSCRIPT <<__EOF__;
-#!perl -pi.bak
-s:\\Q$V:$R_V_SV:
-__EOF__
- close RSCRIPT;
- } else {
- die "$0: Cannot create $config_restore_script: $!";
- }
- # patch the config
- unlink("$BUILDROOT\\lib\\Config.pm.bak");
- print "(patching $BUILDROOT\\lib\\Config.pm)\n";
- system_echo("perl -pi.bak -e \"s:\\Q$R_V_SV:$V:\" $BUILDROOT\\lib\\Config.pm");
-}
-
-sub restore_config {
- my $config_restore_script = "$BUILDROOT\\lib\\symbian_config_restore.pl";
- # this function should always return True
- # because it's commonly used in error handling blocks as
- # &restore_config and die
- return 1 unless -f $config_restore_script;
- unlink("$BUILDROOT\\lib\\Config.pm.bak");
- print "(restoring $BUILDROOT\\lib\\Config.pm)\n";
- system_echo("perl -pi.bak $config_restore_script $BUILDROOT\\lib\\Config.pm");
- unlink "$BUILDROOT\\lib\\Config.pm.bak", $config_restore_script;
- # above command should always return 2 already,
- # but i want to be absolutely sure that return value is True
- return 1;
-}
-
-sub xsconfig {
- my ( $ext, $dir ) = @_;
- print "Configuring for $ext, directory '$dir'...\n";
- my $extu = $CoreBuild ? "$BUILDROOT\\lib\\ExtUtils" : "$PERLSDK\\lib\\ExtUtils";
- update_dir($dir) or die "$0: chdir '$dir': $!\n";
- &patch_config;
-
- my $build = dirname($ext);
- my $base = basename($ext);
- my $basexs = "$base.xs";
- my $basepm = "$base.pm";
- my $basec = "$base$CSuffix";
- my $extdir = ".";
- if ( $dir =~ m:^ext\\(.+): ) {
- $extdir = $1;
- }
- elsif ( $dir ne "." ) {
- $extdir = $dir;
- }
- my $extdirdir = dirname($extdir);
- my $targetroot = "\\System\\Libs\\Perl\\$R_V_SV";
- write_bld_inf($base) if -f $basexs;
-
- my %src;
- $src{$basec}++;
-
- $extdirdir = $extdirdir eq "." ? "" : "$extdirdir\\";
-
- my $extdash = $ext; $extdash =~ s!\\!-!g;
-
- my %lst;
- $lst{"$UREL\\perl$VERSION-$extdash.dll"} =
- "$targetroot\\$ARM-symbian\\$base.dll"
- if -f $basexs;
- $lst{"$dir\\$base.pm"} = "$targetroot\\$extdirdir$base.pm"
- if -f $basepm && $base ne 'XSLoader';
-
- my %incdir;
- my $ran_PL;
- if ( -d 'lib' ) {
- use File::Find;
- my @found;
- find( sub { push @found, $File::Find::name if -f $_ }, 'lib' );
- for my $found (@found) {
- next if $found =~ /\.bak$/i; # Zlib
- my ($short) = ( $found =~ m/^lib.(.+)/ );
- $short =~ s!/!\\!g;
- $found =~ s!/!\\!g;
- $lst{"$dir\\$found"} = "$targetroot\\$short";
- }
- }
- if ( my @pm = glob("*.pm */*.pm") ) {
- for my $pm (@pm) {
- next if $pm =~ m:^t/:;
- $pm =~ s:/:\\:g;
- $lst{"$dir\\$pm"} = "$targetroot\\$extdirdir$pm";
- }
- }
- if ( my @c = glob("*.c *.cpp */*.c */*.cpp") ) {
- map { s:^zlib-src/:: } @c if $ext eq 'ext\Compress\Raw\Zlib';
- for my $c (@c) {
- $c =~ s:/:\\:g;
- $src{$c}++;
- }
- }
- if ( my @h = glob("*.h */*.h") ) {
- map { s:^zlib-src/:: } @h if $ext eq 'ext\Compress\Raw\Zlib';
- for my $h (@h) {
- $h =~ s:/:\\:g;
- $h = dirname($h);
- $incdir{"$dir\\$h"}++ unless $h eq ".";
- }
- }
- if ( exists $EXTCFG{$ext} ) {
- for my $cfg ( @{ $EXTCFG{$ext} } ) {
- if ( $cfg =~ /^([-+])?(.+\.(c|cpp|h))$/ ) {
- my $o = defined $1 ? $1 : '+';
- my $f = $2;
- $f =~ s:/:\\:g;
- for my $f ( glob($f) ) {
- if ( $o eq '+' ) {
- warn "$0: no source file $dir\\$f\n" unless -f $f;
- $src{$f}++ unless $cfg =~ /\.h$/;
- if ( $f =~ m:^(.+)\\[^\\]+$: ) {
- $incdir{$1}++;
- }
- }
- elsif ( $o eq '-' ) {
- delete $src{$f};
- }
- }
- }
- if ( $cfg =~ /^([-+])?(.+\.(pm|pl|inc))$/ ) {
- my $o = defined $1 ? $1 : '+';
- my $f = $2;
- $f =~ s:/:\\:g;
- for my $f ( glob($f) ) {
- if ( $o eq '+' ) {
- warn "$0: no Perl file $dir\\$f\n" unless -f $f;
- $lst{"$dir\\$f"} = "$targetroot\\$extdir\\$f";
- }
- elsif ( $o eq '-' ) {
- delete $lst{"$dir\\$f"};
- }
- }
- }
- if ( $cfg eq 'CONST' && !$ran_PL++ ) {
- run_PL( "Makefile.PL", $dir, "const-xs.inc" );
- }
- }
- }
- unless ( $ran_PL++ ) {
- run_PL( "Makefile.PL", $dir ) if -f "Makefile.PL";
- }
- if ( $dir eq "ext\\Errno" ) {
- run_PL( "Errno_pm.PL", $dir, "Errno.pm" );
- $lst{"$dir\\Errno.pm"} = "$targetroot\\Errno.pm";
- }
- elsif ( $dir eq "ext\\Devel\\PPPort" ) {
- run_PL( "ppport_h.PL", $dir, "ppport.h" );
- }
- elsif ( $dir eq "ext\\DynaLoader" ) {
- run_PL( "XSLoader_pm.PL", $dir, "XSLoader.pm" );
- $lst{"ext\\DynaLoader\\XSLoader.pm"} = "$targetroot\\XSLoader.pm";
- }
- elsif ( $dir eq "ext\\Encode" ) {
- system_echo("perl bin\\enc2xs -Q -O -o def_t.c -f def_t.fnm") == 0
- or &restore_config and die "$0: running enc2xs failed: $!\n";
- }
-
- my @lst = sort keys %lst;
-
- read_mmp( \%CONF, "_init.mmp" );
- read_mmp( \%CONF, "$base.mmp" );
-
- if ( -f $basexs ) {
- my %MM; # MakeMaker results
- my @MM = qw(VERSION XS_VERSION);
- if ( -f "Makefile" ) {
- print "\tReading MakeMaker Makefile...\n";
- if ( open( MAKEFILE, '<', 'Makefile' ) ) {
- while (<MAKEFILE>) {
- for my $m (@MM) {
- if (m!^$m = (.+)!) {
- $MM{$m} = $1;
- print "\t$m = $1\n";
- }
- }
- }
- close(MAKEFILE);
- }
- else {
- warn "$0: Makefile: $!";
- }
- print "\tDeleting MakeMaker Makefile.\n";
- unlink("Makefile");
- }
-
- unlink($basec);
- print "\t$basec\n";
- if ( defined $CONF{EXTVERSION} ) {
- my $EXTVERSION = $CONF{EXTVERSION};
- print "\tUsing $EXTVERSION for version...\n";
- $MM{VERSION} = $MM{XS_VERSION} = $EXTVERSION;
- }
- (&restore_config and die "$0: VERSION or XS_VERSION undefined\n")
- unless defined $MM{VERSION} && defined $MM{XS_VERSION};
- if ( open( BASE_C, '>', $basec ) ) {
- print BASE_C <<__EOF__;
-#ifndef VERSION
-#define VERSION "$MM{VERSION}"
-#endif
-#ifndef XS_VERSION
-#define XS_VERSION "$MM{XS_VERSION}"
-#endif
-__EOF__
- close(BASE_C);
- }
- else {
- warn "$0: $basec: $!";
- }
- unless (
- system_echo(
-"perl -I$BUILDROOT\\lib -I$PERLSDK\\lib $extu\\xsubpp -csuffix .cpp -typemap $extu\\typemap -noprototypes $basexs >> $basec"
- ) == 0
- && -s $basec
- )
- {
- &restore_config;
- die "$0: perl xsubpp failed: $!\n";
- }
-
- print "\t_init.c\n";
- open( _INIT_C, '>', '_init.c' )
- or &restore_config and die "$!: _init.c: $!\n";
- print _INIT_C <<__EOF__;
- #include "EXTERN.h"
- #include "perl.h"
- EXPORT_C void _init(void *handle) {
- }
-__EOF__
- close(_INIT_C);
-
- my @src = ( "_init.c", sort keys %src );
-
- if ( $base eq "Encode" ) { # Currently unused.
- for my $submf ( glob("*/Makefile") ) {
- my $d = dirname($submf);
- print "Configuring Encode::$d...\n";
- if ( open( SUBMF, '<', $submf ) ) {
- if ( update_dir($d) ) {
- my @subsrc;
- while (<SUBMF>) {
- next if 1 .. /postamble/;
- if (m!^(\w+_t)\.c : !) {
- system_echo(
- "perl ..\\bin\\enc2xs -Q -o $1.c -f $1.fnm")
- == 0
- or warn "$0: enc2xs: $!\n";
- push @subsrc, "$1.c";
- }
- }
- close(SUBMF);
- unlink($submf);
- my $subbase = $d;
- $subbase =~ s!/!::!g;
- write_mmp( $ext, $subbase, ["..\\Encode"], "$subbase.c",
- @subsrc );
- write_makefile( $subbase, $build );
- write_bld_inf($subbase);
-
- unless (
- system_echo(
-"perl -I$BUILDROOT\\lib ..\\$extu\\xsubpp -csuffix .cpp -typemap ..\\$extu\\typemap -noprototypes $subbase.xs > $subbase.c"
- ) == 0
- && -s "$subbase.c"
- )
- {
- &restore_config;
- die "$0: perl xsubpp failed: $!\n";
- }
- update_dir("..");
- }
- else {
- warn "$0: chdir $d: $!\n";
- }
- }
- else {
- warn "$0: $submf: $!";
- }
- }
- print "Configuring Encode...\n";
- }
-
- write_mmp( $ext, $base, [ keys %incdir ], @src );
- write_makefile( $base, $build );
- }
- &restore_config;
-
- my $lstname = $ext;
- $lstname =~ s:^ext\\::;
- $lstname =~ s:\\:-:g;
- print "\t$lstname.lst\n";
- my $lstout =
- $CoreBuild ? "$BUILDROOT/symbian/$lstname.lst" : "$BUILDROOT/$lstname.lst";
- if ( open( my $lst, '>', $lstout ) ) {
- for my $f (@lst) { print $lst qq["$f"-"!:$lst{$f}"\n] }
- close($lst);
- }
- else {
- die "$0: $lstout: $!\n";
- }
- update_dir($BUILDROOT);
-}
-
-sub update_cwd {
- $CWD = getcwd();
- $CWD =~ s!^[A-Z]:!!i;
- $CWD =~ s!/!\\!g;
-}
-
-if (grep /^(Compress::Raw::Zlib|Cwd|Data::Dumper|Digest::SHA|Sys::Syslog|Time::HiRes)$/, @ARGV) {
- &patch_config;
- system_echo("perl -I$BUILDROOT\\lib -I$PERLSDK\\lib $BUILDROOT\\mkppport");
- &restore_config;
-}
-
-for my $ext (@ARGV) {
-
- $ext =~ s!::!\\!g;
- my $extdash = $ext =~ /ext\\/ ? $ext : "ext\\$ext"; $extdash =~ s!\\!-!g;
- $ext =~ s!/!\\!g;
-
- my $cfg;
-
- $cfg = $2 if $ext =~ s/(.+?),(.+)/$1/;
-
- my $dir;
-
- unless ( -e $ext ) {
- if ( $ext =~ /\.xs$/ && !-f $ext ) {
- if ( -f "ext\\$ext" ) {
- $ext = "ext\\$ext";
- $dir = dirname($ext);
- }
- }
- elsif ( !-d $ext ) {
- if ( -d "ext\\$ext" ) {
- $ext = "ext\\$ext";
- $dir = $ext;
- }
- }
- $dir = "." unless defined $dir;
- }
- else {
- if ( $ext =~ /\.xs$/ && -f $ext ) {
- $ext = dirname($ext);
- $dir = $ext;
- }
- elsif ( -d $ext ) {
- $dir = $ext;
- }
- }
-
- if ( $ext eq "XSLoader" ) {
- $ext = "ext\\XSLoader";
- }
- if ( $ext eq "ext\\XSLoader" ) {
- $dir = "ext\\DynaLoader";
- }
-
- $EXTCFG{$ext} = [ split( /,/, $cfg ) ] if defined $cfg;
-
- die "$0: no lib\\Config.pm\n"
- if $CoreBuild && $Build && !-f "lib\\Config.pm";
-
- if ($CoreBuild) {
- open( my $cfg, '<', 'symbian/install.cfg' )
- or die "$0: symbian/install.cfg: $!\n";
- my $extdir = $dir;
- $extdir =~ s:^ext\\::;
- while (<$cfg>) {
- next unless /^ext\s+(.+)/;
- chomp;
- my $ext = $1;
- my @ext = split( ' ', $ext );
- $EXTCFG{"ext\\$ext[0]"} = [@ext];
- }
- close($cfg);
- }
-
- if ( $Config || $Build ) {
- xsconfig( $ext, $dir ) or die "$0: xsconfig '$ext' failed\n";
- next if $Config;
- }
-
- if ($dir eq ".") {
- warn "$0: No directory for $ext, skipping...\n";
- next;
- }
-
- my $chdir = $ext eq "ext\\XSLoader" ? "ext\\DynaLoader" : $dir;
- die "$0: no directory '$chdir'\n" unless -d $chdir;
- update_dir($chdir) or die "$0: chdir '$chdir' failed: $!\n";
-
- my %CONF;
-
- my @ext = split( /\\/, $ext );
- my $base = $ext[-1];
-
- if ( $Clean || $DistClean ) {
- print "Cleaning $ext...\n";
- unlink("bld.inf");
- unlink("$base.mmp");
- unlink("_init.c");
- unlink("const-c.inc");
- unlink("const-xs.inc");
- rmdir("..\\bmarm");
- }
-
- if ( $Build && $ext ne "ext\\XSLoader" && $ext ne "ext\\Errno" ) {
-
- # We compile the extension three (3) times.
- # (1) Only the _init.c to get _init() as the ordinal 1 function in the DLL.
- # (2) With the rest and the _init.c to get ordinals for the rest.
- # (3) With an updated _init.c that carries the symbols from step (2).
-
- system_echo("make clean");
- system_echo("make defrost") == 0 or warn "$0: make defrost failed\n";
-
- my @TARGET;
-
- push @TARGET, 'sis' if $Sis;
-
- # Compile #1.
- # Hide all but the _init.c.
- print "\n*** $ext - Compile 1 of 3.\n\n";
- print "(patching $base.mmp)\n";
- system(
-"perl -pi.bak -e \"s:^SOURCE\\s+_init.c:SOURCE\\t_init.c // :\" $base.mmp"
- );
- system_echo("bldmake bldfiles");
- system_echo("make @TARGET") == 0 or die "$0: make #1 failed\n";
-
- # Compile #2.
- # Reveal the rest again.
- print "\n*** $ext - Compile 2 of 3.\n\n";
- print "(patching $base.mmp)\n";
- system(
-"perl -pi.bak -e \"s:^SOURCE\\t_init.c // :SOURCE\\t_init.c :\" $base.mmp"
- );
- system_echo("make @TARGET") == 0 or die "$0: make #2 failed\n";
- unlink("$base.mmp.bak");
-
- open( _INIT_C, '>', '_init.c' ) or die "$0: _init.c: $!\n";
- print _INIT_C <<'__EOF__';
-#include "EXTERN.h"
-#include "perl.h"
-
-/* This is a different but matching definition from in dl_symbian.xs. */
-typedef struct {
- void* handle;
- int error;
- HV* symbols;
-} PerlSymbianLibHandle;
-
-EXPORT_C void _init(void* handle) {
-__EOF__
-
- my %symbol;
- my $def;
- my $basef;
- for my $f ("$SYMBIAN_ROOT\\Epoc32\\Build$CWD\\$base\\WINS\\perl$VERSION-$extdash.def",
- "..\\BMARM\\perl$VERSION-${extdash}u.def") {
- print "\t($f - ";
- if ( open( $def, '<', $f ) ) {
- print "OK)\n";
- $basef = $f;
- last;
- } else {
- print "no)\n";
- }
- }
- unless (defined $basef) {
- die "$0: failed to find .def for $base\n";
- }
- while (<$def>) {
- next while 1 .. /^EXPORTS/;
- if (/^\s*(\w+) \@ (\d+) /) {
- $symbol{$1} = $2;
- }
- }
- close($def);
-
- my @symbol = sort keys %symbol;
- if (@symbol) {
- print _INIT_C <<'__EOF__';
- dTHX;
- PerlSymbianLibHandle* h = (PerlSymbianLibHandle*)handle;
- if (!h->symbols)
- h->symbols = newHV();
- if (h->symbols) {
-__EOF__
- for my $sym (@symbol) {
- my $len = length($sym);
- print _INIT_C <<__EOF__;
- hv_store(h->symbols, "$sym", $len, newSViv($symbol{$sym}), 0);
-__EOF__
- }
- }
- else {
- die "$0: $basef: no exports found\n";
- }
-
- print _INIT_C <<'__EOF__';
- }
-}
-__EOF__
- close(_INIT_C);
-
- # Compile #3. This is for real.
- print "\n*** $ext - Compile 3 of 3.\n\n";
- system_echo("make @TARGET") == 0 or die "$0: make #3 failed\n";
-
- }
- elsif ( $Clean || $DistClean ) {
- if ( $ext eq "ext\\Errno" ) {
- unlink( "Errno.pm", "Makefile" );
- }
- else {
- if ( -f "Makefile" ) {
- if ($Clean) {
- system_echo("make clean") == 0 or die "$0: make clean failed\n";
- }
- elsif ($DistClean) {
- system_echo("make distclean") == 0
- or die "$0: make distclean failed\n";
- }
- }
- if ( $ext eq "ext\\Compress\\Raw\\Zlib" ) {
- my @bak;
- find( sub { push @bak, $File::Find::name if /\.bak$/ }, "." );
- unlink(@bak) if @bak;
- my @src;
- find( sub { push @src, $_ if -f $_ }, "zlib-src" );
- unlink(@src) if @src;
- unlink("constants.xs");
- }
- if ( $ext eq "ext\\Devel\\PPPort" ) {
- unlink("ppport.h");
- }
- }
- my @D = glob("../BMARM/*.def ../BWINS/*.def");
- unlink(@D) if @D;
- my @B = glob("ext/BWINS ext/BMARM ext/*/BWINS ext/*/BMARM Makefile");
- rmdir(@B) if @B;
- }
-
- update_dir($BUILDROOT);
-
-} # for my $ext
-
-exit(0);
-
diff --git a/t/op/local.t b/t/op/local.t
index 32142e3d07..00dd31af10 100644
--- a/t/op/local.t
+++ b/t/op/local.t
@@ -9,7 +9,7 @@ plan tests => 319;
my $list_assignment_supported = 1;
-#mg.c says list assignment not supported on VMS and SYMBIAN.
+#mg.c says list assignment not supported on VMS
$list_assignment_supported = 0 if ($^O eq 'VMS');
diff --git a/t/op/magic.t b/t/op/magic.t
index e0dfcf93a1..6283df5ac2 100644
--- a/t/op/magic.t
+++ b/t/op/magic.t
@@ -541,7 +541,7 @@ is "@+", "10 1 6 10";
}
# Test for bug [perl #36434]
-# Can not do this test on VMS, and SYMBIAN according to comments
+# Can not do this test on VMS according to comments
# in mg.c/Perl_magic_clear_all_env()
SKIP: {
skip('Can\'t make assignment to \%ENV on this system', 3) if $Is_VMS;
diff --git a/util.c b/util.c
index d0e8afefb1..d4e2537c23 100644
--- a/util.c
+++ b/util.c
@@ -2083,7 +2083,7 @@ Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const char *const bits,
* For Solaris, setenv() and unsetenv() were introduced in Solaris 9, so
* testing for HAS UNSETENV is sufficient.
*/
-# if defined(__CYGWIN__)|| defined(__SYMBIAN32__) || defined(__riscos__) || (defined(__sun) && defined(HAS_UNSETENV)) || defined(PERL_DARWIN)
+# if defined(__CYGWIN__)|| defined(__riscos__) || (defined(__sun) && defined(HAS_UNSETENV)) || defined(PERL_DARWIN)
# define MY_HAS_SETENV
# endif
@@ -4338,7 +4338,7 @@ Perl_my_socketpair (int family, int type, int protocol, int fd[2]) {
#ifdef ECONNABORTED
errno = ECONNABORTED; /* This would be the standard thing to do. */
#elif defined(ECONNREFUSED)
- errno = ECONNREFUSED; /* E.g. Symbian does not have ECONNABORTED. */
+ errno = ECONNREFUSED; /* some OSes might not have ECONNABORTED. */
#else
errno = ETIMEDOUT; /* Desperation time. */
#endif
diff --git a/util.h b/util.h
index 6294e590b8..6bf7d9ecde 100644
--- a/util.h
+++ b/util.h
@@ -28,11 +28,11 @@
(((f)[0] && (f)[1] == ':') /* drive name */ \
|| ((f)[0] == '\\' && (f)[1] == '\\') /* UNC path */ \
|| ((f)[3] == ':')) /* volume name, currently only sys */
-#elif defined(DOSISH) || defined(__SYMBIAN32__)
+#elif defined(DOSISH)
# define PERL_FILE_IS_ABSOLUTE(f) \
(*(f) == '/' \
|| ((f)[0] && (f)[1] == ':')) /* drive name */
-#else /* NEITHER DOSISH NOR SYMBIANISH */
+#else /* NOT DOSISH */
# define PERL_FILE_IS_ABSOLUTE(f) (*(f) == '/')
#endif
diff --git a/win32/GNUmakefile b/win32/GNUmakefile
index 6b5d85d60f..193fdf71ce 100644
--- a/win32/GNUmakefile
+++ b/win32/GNUmakefile
@@ -1739,7 +1739,6 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
copy ..\README.qnx ..\pod\perlqnx.pod
copy ..\README.riscos ..\pod\perlriscos.pod
copy ..\README.solaris ..\pod\perlsolaris.pod
- copy ..\README.symbian ..\pod\perlsymbian.pod
copy ..\README.synology ..\pod\perlsynology.pod
copy ..\README.tru64 ..\pod\perltru64.pod
copy ..\README.tw ..\pod\perltw.pod
@@ -1850,9 +1849,8 @@ distclean: realclean
perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \
perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
- perlsolaris.pod perlsymbian.pod perlsynology.pod perltoc.pod \
- perltru64.pod perltw.pod perluniprops.pod perlvos.pod \
- perlwin32.pod
+ perlsolaris.pod perlsynology.pod perltoc.pod perltru64.pod \
+ perltw.pod perluniprops.pod perlvos.pod perlwin32.pod
-cd ..\utils && del /f h2ph splain perlbug pl2pm h2xs \
perldoc perlivp libnetcfg enc2xs encguess piconv cpan *.bat \
xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails
diff --git a/win32/Makefile b/win32/Makefile
index 46299d39ee..42a0bef4fe 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -1259,7 +1259,6 @@ utils: $(PERLEXE) ..\utils\Makefile
copy ..\README.qnx ..\pod\perlqnx.pod
copy ..\README.riscos ..\pod\perlriscos.pod
copy ..\README.solaris ..\pod\perlsolaris.pod
- copy ..\README.symbian ..\pod\perlsymbian.pod
copy ..\README.synology ..\pod\perlsynology.pod
copy ..\README.tru64 ..\pod\perltru64.pod
copy ..\README.tw ..\pod\perltw.pod
@@ -1371,9 +1370,8 @@ distclean: realclean
perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \
perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
- perlsolaris.pod perlsymbian.pod perlsynology.pod perltoc.pod \
- perltru64.pod perltw.pod perluniprops.pod perlvos.pod \
- perlwin32.pod
+ perlsolaris.pod perlsynology.pod perltoc.pod perltru64.pod \
+ perltw.pod perluniprops.pod perlvos.pod perlwin32.pod
-cd ..\utils && del /f h2ph splain perlbug pl2pm h2xs \
perldoc perlivp libnetcfg enc2xs encguess piconv cpan streamzip *.bat \
xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails
diff --git a/win32/makefile.mk b/win32/makefile.mk
index 66888ecb5b..abdc674e34 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -1658,7 +1658,6 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
copy ..\README.qnx ..\pod\perlqnx.pod
copy ..\README.riscos ..\pod\perlriscos.pod
copy ..\README.solaris ..\pod\perlsolaris.pod
- copy ..\README.symbian ..\pod\perlsymbian.pod
copy ..\README.synology ..\pod\perlsynology.pod
copy ..\README.tru64 ..\pod\perltru64.pod
copy ..\README.tw ..\pod\perltw.pod
@@ -1769,9 +1768,8 @@ distclean: realclean
perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \
perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
- perlsolaris.pod perlsymbian.pod perlsynology.pod perltoc.pod \
- perltru64.pod perltw.pod perluniprops.pod perlvos.pod \
- perlwin32.pod
+ perlsolaris.pod perlsynology.pod perltoc.pod perltru64.pod \
+ perltw.pod perluniprops.pod perlvos.pod perlwin32.pod
-cd ..\utils && del /f h2ph splain perlbug pl2pm h2xs \
perldoc perlivp libnetcfg enc2xs encguess piconv cpan streamzip *.bat \
xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails