Commit | Line | Data |
f26f4a2f |
1 | #!/usr/bin/perl -w |
2 | |
3 | # |
4 | # sisify.pl - package Perl scripts or Perl libraries into SIS files |
5 | # |
6 | # Copyright (c) 2004-2005 Nokia. All rights reserved. |
7 | # |
8 | # The sisify.pl utility is licensed under the same terms as Perl itself. |
9 | # |
10 | |
11 | require 5.008; |
12 | |
13 | use strict; |
14 | |
15 | use vars qw($VERSION); |
16 | |
17 | $VERSION = '0.1'; |
18 | |
19 | use Getopt::Long; |
20 | use File::Temp qw/tempdir/; |
21 | use File::Find; |
22 | use File::Basename qw/basename dirname/; |
23 | use Cwd qw/getcwd/; |
24 | |
25 | # TODO: |
26 | # - prepend the \system\app\$AppName{,\lib} somehow to the @INC |
27 | |
28 | BEGIN { |
29 | my $warn; |
30 | # This utility has been developed under Cygwin in Windows with |
31 | # the Series 60 2.6 SDK installed, but for the makesis utility in |
32 | # UNIX/Linux, try e.g. one of the following: |
33 | # http://gnupoc.sourceforge.net/ |
34 | # http://symbianos.org/~andreh/ You |
35 | # will also need the 'uidcrc' utility. |
36 | for my $exe (qw(/bin/cp /bin/tar)) { |
37 | unless( -f $exe) { # Sorry, Win32ers. |
38 | warn "$0: Need $exe\n"; |
39 | $warn++; |
40 | } |
41 | } |
42 | die "$0: Cannot continue, aborting.\n" if $warn; |
43 | } |
44 | |
45 | sub die_with_usage { |
46 | if (@_) { |
47 | warn "$0: $_\n" for @_; |
48 | } |
49 | die <<__USAGE__; |
50 | $0: Usage: |
51 | $0 [ --uid=hhhhhhhh ] [ --version=a.b.c ] [ --library=x.y.z ] [ some.pl | Some.pm | somefile | dir ... ] |
52 | The uid is the Symbian app uid for the SIS. |
53 | The version is the version of the SIS. |
54 | The library is the version of Perl under which to install. If using this, |
55 | only specify directories to package. |
56 | __USAGE__ |
57 | } |
58 | |
59 | my $SisUid; |
60 | my $SisVersion; |
61 | my $Library; |
62 | my @SisPl; |
63 | my @SisPm; |
64 | my @SisDir; |
65 | my @SisOther; |
66 | my $AppName; |
67 | my $Debug; |
68 | my $ShowPkg; |
69 | |
70 | my $SisUidDefault = 0x0acebabe; |
71 | my $SisVersionDefault = '0.0.0'; |
72 | |
73 | die_with_usage() |
74 | unless GetOptions( |
75 | 'uid=s' => \$SisUid, |
76 | 'version=s' => \$SisVersion, |
77 | 'debug' => \$Debug, |
78 | 'showpkg' => \$ShowPkg, |
79 | 'library=s' => \$Library, |
80 | 'appname=s' => \$AppName, |
81 | ); |
82 | die_with_usage("Need to specify what to sisify") |
83 | unless @ARGV; |
84 | |
85 | for my $i (@ARGV) { |
86 | if ($i =~ /\.pl$/i) { |
87 | push @SisPl, $i; |
88 | } elsif ($i =~ /\.pm$/i) { |
89 | push @SisPm, $i; |
90 | } elsif (-f $i) { |
91 | push @SisOther, $i; |
92 | } elsif (-d $i) { |
93 | push @SisDir, $i; |
94 | } else { |
95 | die_with_usage("Unknown sisifiable '$i'"); |
96 | } |
97 | } |
98 | |
99 | sub do_system { |
100 | my $cwd = getcwd(); |
101 | print qq{\# system("@_") [cwd "$cwd"]\n}; |
102 | return system("@_") == 0; |
103 | } |
104 | |
105 | die_with_usage("Must specify something to sisify") |
106 | unless @SisPl || @SisPm || @SisOther || @SisDir; |
107 | |
108 | die_with_usage("With the lib option set, specify only directories") |
109 | if defined $Library && ((@SisPl || @SisPm || @SisOther) || @SisDir == 0); |
110 | |
111 | die_with_usage("Lib must define the Perl 5 version as 5.x.y") |
112 | if defined $Library && $Library !~ /^5.\d+\.\d+$/; |
113 | |
114 | die_with_usage("With the lib option unset, specify at least one .pl file") |
115 | if (! defined $Library && @SisPl == 0); |
116 | |
117 | if (!defined $AppName) { |
118 | if (defined $Library) { |
119 | $AppName = $SisDir[0]; |
120 | $AppName =~ tr!/!-!; |
121 | } elsif (@SisPl > 0 && $SisPl[0] =~ /^(.+)\.pl$/i) { |
122 | $AppName = basename($1); |
123 | } |
124 | } |
125 | |
126 | die_with_usage("Must either specify appname or at least one .pl file or the lib option") |
127 | unless defined $AppName || defined $Library; |
128 | |
129 | print "[app name '$AppName']\n" if $Debug; |
130 | |
131 | unless (defined $SisUid) { |
132 | $SisUid = $SisUidDefault; |
133 | printf "[default app uid '0x%08x']\n", $SisUid; |
134 | } elsif ($SisUid =~ /^(?:0x)?([0-9a-f]{8})$/i) { |
135 | $SisUid = hex($1); |
136 | } else { |
137 | die_with_usage("Bad uid '$SisUid'"); |
138 | } |
139 | $SisUid = sprintf "0x%08x", $SisUid; |
140 | |
141 | die_with_usage("Bad uid '$SisUid'") |
142 | if $SisUid !~ /^0x[0-9a-f]{8}$/i; |
143 | |
144 | unless (defined $SisVersion) { |
145 | $SisVersion = $SisVersionDefault; |
146 | print "[default app version '$SisVersionDefault']\n"; |
147 | } elsif ($SisVersion !~ /^\d+\.\d+\.\d+$/) { |
148 | die_with_usage("Bad version '$SisVersion'") |
149 | } |
150 | |
151 | my $tempdir = tempdir( CLEANUP => 1 ); |
152 | |
153 | print "[temp directory '$tempdir']\n" if $Debug; |
154 | |
155 | for my $file (@SisPl, @SisPm, @SisOther) { |
156 | print "[copying file '$file']\n" if $Debug; |
157 | die_with_usage("$0: File '$file': $!") unless -f $file; |
158 | my $dir = dirname($file); |
159 | do_system("mkdir $tempdir/$dir") unless $dir eq '.'; |
160 | do_system("cp $file $tempdir"); |
161 | } |
162 | if (@SisPl) { |
163 | do_system("cp $SisPl[0] $tempdir/default.pl") unless $SisPl[0] eq "default.pl"; |
164 | } |
165 | for my $dir (@SisDir) { |
166 | print "[copying directory '$dir']\n" if $Debug; |
167 | do_system("tar cf - $dir | (cd $tempdir && tar xf -)"); |
168 | } |
169 | |
170 | my $SisVersionCommas = $SisVersion; |
171 | |
172 | $SisVersionCommas =~ s/\./\,/g; |
173 | |
174 | my @pkg; |
175 | |
176 | push @pkg, qq[&EN]; |
177 | push @pkg, qq[#{"$AppName"},($SisUid),$SisVersionCommas]; |
178 | push @pkg, qq[(0x101F6F88), 0, 0, 0, {"Series60ProductID"}]; |
179 | |
180 | my $OWD = getcwd(); |
181 | |
182 | chdir($tempdir) or die "$0: chdir('$tempdir')\n"; |
183 | my @c; |
184 | find( |
185 | sub { |
186 | if (-f $_) { |
187 | $File::Find::name =~ s!^\./!!; |
188 | push @c, $File::Find::name; |
189 | } |
190 | } |
191 | , |
192 | "."); |
193 | |
194 | for my $i (sort @c) { |
195 | my $j = $i; |
196 | $j =~ s!/!\\!g; |
197 | push @pkg, defined $Library ? qq["$j"-"!:\\System\\Libs\\Perl\\siteperl\\$Library\\$j"] : qq["$j"-"!:\\system\\apps\\$AppName\\$j"]; |
198 | } |
199 | |
200 | sub hex2data { |
201 | local $_ = shift; |
202 | my $data; |
203 | while (/([0-9a-f]{2})/ig) { |
204 | $data .= chr(hex($1)); |
205 | } |
206 | return $data; |
207 | } |
208 | |
209 | my $APPHEX; |
210 | my $RSCHEX; |
211 | |
212 | unless ($Library) { |
213 | # If we package an application we will need both a launching native |
214 | # Symbian application and a resource file for it. The resource file |
215 | # we can get easily from a stub but for the native app we need to |
216 | # patch in the right Symbian app uids and executable checksums. |
217 | |
218 | &init_hex; # Initialized $APPHEX and $RSCHEX. |
219 | |
220 | my $app = hex2data($APPHEX); |
221 | my $uidcrc; |
222 | my $uids = "0x10000079 0x100039CE $SisUid"; |
223 | |
224 | my $cmd = "uidcrc $uids |"; |
225 | |
226 | if (open(my $fh, $cmd)) { |
227 | my $line = <$fh>; |
228 | close($fh); |
229 | # 0x10000079 0x100039ce 0x0acebabe 0xc82b1900 |
230 | $line =~ s/\r?\n$//; |
231 | if ($line =~ /^$uids (0x[0-9a-f]{8})$/i) { |
232 | $uidcrc = hex($1); |
233 | } else { |
234 | die "$0: uidcrc returned '$line'\n"; |
235 | } |
236 | } else { |
237 | die qq[$0: open '$cmd' failed: $!\n]; |
238 | } |
239 | |
240 | my $uid = hex($SisUid); |
241 | |
242 | my $oldchk = unpack('V', substr($app, 24, 4)); |
243 | my $newchk = ($uid + $oldchk) & 0xFFFFFFFF; |
244 | |
245 | # printf "# uid = 0x%08x\n", $uid; |
246 | # printf "# uidcrc = 0x%08x\n", $uidcrc; |
247 | # printf "# oldchk = 0x%08x\n", $oldchk; |
248 | # printf "# newchk = 0x%08x\n", $newchk; |
249 | |
250 | substr($app, 8, 4) = pack('V', $uid); |
251 | substr($app, 12, 4) = pack('V', $uidcrc); |
252 | substr($app, 24, 4) = pack('V', $newchk); |
253 | |
254 | my $UID_OFFSET = 0x0C7C; # This is where the uid is in the $app. |
255 | substr($app, $UID_OFFSET, 4) = substr($app, 8, 4); # Copy the uid also here. |
256 | |
257 | if (open(my $fh, ">$AppName.app")) { |
258 | binmode($fh); |
259 | print $fh $app; |
260 | close($fh); |
261 | } else { |
262 | die qq[$0: open '>$AppName.app' failed: $!\n]; |
263 | } |
264 | |
265 | push @pkg, qq["$AppName.app"-"!:\\system\\apps\\$AppName\\$AppName.app"]; |
266 | |
267 | if (open(my $fh, ">$AppName.rsc")) { |
268 | binmode($fh); |
269 | print $fh hex2data($RSCHEX); |
270 | close($fh); |
271 | } else { |
272 | die qq[$0: open '>$AppName.rsc' failed: $!\n]; |
273 | } |
274 | push @pkg, qq["$AppName.rsc"-"!:\\system\\apps\\$AppName\\$AppName.rsc"]; |
275 | } |
276 | |
277 | if ($ShowPkg) { |
278 | for my $l (@pkg) { |
279 | print $l, "\r\n"; |
280 | } |
281 | } else { |
282 | my $fn = "$AppName.pkg"; |
283 | if (open(my $fh, ">$fn")) { |
284 | for my $l (@pkg) { |
285 | print $fh "$l\r\n"; # Note CRLF! |
286 | } |
287 | close($fh); |
288 | } else { |
289 | die qq[$0: Failed to open "$fn" for writing: $!\n]; |
290 | } |
291 | my $sis = "$AppName.SIS"; |
292 | unlink($sis); |
293 | do_system("makesis $fn"); |
294 | unless (-f $sis) { |
295 | die qq[$0: failed to create "$sis"\n]; |
296 | } |
297 | do_system("ls -l"); |
298 | do_system("cat -vet $fn"); |
299 | do_system("cp $AppName.sis $OWD"); |
300 | print "\n=== Now transfer $sis to your device ===\n"; |
301 | system("ls -l $sis"); |
302 | } |
303 | |
304 | exit(0); |
305 | |
306 | sub init_hex { |
307 | # This is Symbian application executable skeleton. |
308 | # You can create the ...\epoc32\release\thumb\urel\foo.app |
309 | # by compiling the PerlApp.cpp with PerlMinSample defined in PerlApp.h. |
310 | $APPHEX = <<__APP__; |
311 | 7900 0010 ce39 0010 f615 2010 8581 1076 |
312 | 4550 4f43 0020 0000 05fc d15d 0000 0000 |
313 | 0100 bf00 0048 827a 9ee0 e000 0300 0001 |
314 | 5811 0000 0000 0000 0010 0000 0000 1000 |
315 | 0020 0000 0000 0000 0100 0000 0000 0010 |
316 | 0000 0000 0700 0000 d011 0000 0100 0000 |
317 | 140f 0000 7c00 0000 0000 0000 d411 0000 |
318 | d414 0000 0000 0000 5e01 0000 00b5 00f0 |
319 | d5f9 02bc 0847 0000 0148 0068 7047 0000 |
320 | 000c 0010 00b5 011c 0248 00f0 f5fc 01bc |
321 | 0047 0000 200c 0010 10b5 84b0 041c 0021 |
322 | 00f0 f2f9 6846 211c 00f0 88fb 6846 00f0 |
323 | 07f9 011c 2166 201c 0022 0023 00f0 48fa |
324 | 0020 6066 00f0 4cfa 0121 00f0 4ffa 04b0 |
325 | 10bc 01bc 0047 0000 30b5 041c 0d1c 1a48 |
326 | 6061 1a48 a061 1a48 e061 1a48 a064 1a48 |
327 | e064 1a48 2060 216e 0029 0dd0 6068 00f0 |
328 | 63fb 216e 0029 05d0 0868 8268 081c 0321 |
329 | 00f0 8af9 0020 2066 606e 0028 03d0 00f0 |
330 | b1fc 0020 6066 a16a 0029 05d0 0868 8268 |
331 | 081c 0321 00f0 78f9 201c 291c 00f0 aaf9 |
332 | 30bc 01bc 0047 0000 9c0e 0010 000f 0010 |
333 | f00e 0010 d00e 0010 dc0e 0010 340c 0010 |
334 | 84b0 10b5 95b0 1790 1891 1992 1a93 0120 |
335 | 0021 0022 00f0 cefc 041c 14a9 01a8 00f0 |
336 | 87fc 0028 08d1 0090 201c 17a9 0222 0023 |
337 | 00f0 c6fc 00f0 82fc 00f0 86fc 15b0 10bc |
338 | 08bc 04b0 1847 0000 f0b5 4746 80b4 324c |
339 | a544 071c 8846 0229 52d1 00f0 0bfb 011c |
340 | 0a68 7ea8 126a 00f0 2ff9 8026 f600 6e44 |
341 | 301c 00f0 cdfa 2949 301c 7eaa 0023 00f0 |
342 | cdfa c425 ed00 6d44 281c 00f0 cffa 244c |
343 | 6c44 0021 2248 6844 0160 201c 0421 00f0 |
344 | cbfa 301c 00f0 cefa 011c 201c 2a1c 00f0 |
345 | cffa 0028 24d1 301c 00f0 c4fa 011c 8420 |
346 | 0001 6844 8022 5200 00f0 44fc 8521 0901 |
347 | 6944 6846 fc22 5200 00f0 42fc 8420 0001 |
348 | 6844 0068 0f49 6944 0968 0f4a 6a44 1268 |
349 | 0e4b 6b44 1b68 fff7 83ff 381c 00f0 c0fa |
350 | 0020 4446 002c 00d1 0120 094b 9d44 08bc |
351 | 9846 f0bc 02bc 0847 b4f5 ffff 040c 0010 |
352 | 480a 0000 4408 0000 4808 0000 4c08 0000 |
353 | 4c0a 0000 00b5 021c 8020 4000 8142 02d0 |
354 | 0348 8142 06d1 101c 00f0 9afa 05e0 0000 |
355 | c10b 0000 0120 fff7 e5fe 01bc 0047 0000 |
356 | 10b5 00f0 07f8 041c 00f0 00fc 201c 10bc |
357 | 02bc 0847 30b5 051c 3020 00f0 fdfb 041c |
358 | 002c 05d0 00f0 48f9 0748 6060 0748 2060 |
359 | 201c 00f0 f7fb 201c 291c 00f0 09f8 201c |
360 | 30bc 02bc 0847 0000 ac0c 0010 bc0c 0010 |
361 | 30b5 041c 0d1c 00f0 35f9 201c 291c 00f0 |
362 | 37f9 2068 016a 201c 00f0 7cf8 30bc 01bc |
363 | 0047 0000 30b5 84b0 041c 00f0 2ff9 051c |
364 | 6846 211c 00f0 30f9 2868 b830 0268 281c |
365 | 6946 00f0 69f8 04b0 30bc 01bc 0047 0000 |
366 | 30b5 051c 2420 00f0 b7fb 041c 002c 04d0 |
367 | 291c 00f0 95f8 0348 2060 201c 30bc 02bc |
368 | 0847 0000 6c0d 0010 70b5 8820 4000 00f0 |
369 | a3fb 061c 002e 18d0 00f0 28fa 0d48 b064 |
370 | 0d48 f064 0d4d 7561 0d4c b461 0d4b f361 |
371 | 0d4a b264 0d49 f164 0d48 3060 0d48 3060 |
372 | 301c 6830 5021 00f0 93fb 301c 70bc 02bc |
373 | 0847 0000 040e 0010 100e 0010 9c0e 0010 |
374 | 000f 0010 f00e 0010 d00e 0010 dc0e 0010 |
375 | 240e 0010 340c 0010 10b5 8b20 8000 00f0 |
376 | 7dfb 041c 002c 03d0 00f0 f6f9 0248 2060 |
377 | 201c 10bc 02bc 0847 c80d 0010 0020 7047 |
378 | 0047 7047 0847 7047 1047 7047 1847 7047 |
379 | 2047 7047 2847 7047 3047 7047 3847 7047 |
380 | 4047 7047 4847 7047 5047 7047 5847 7047 |
381 | 6047 7047 7047 7047 014b 1b68 1847 c046 |
382 | 140f 0010 014b 1b68 1847 c046 1c0f 0010 |
383 | 014b 1b68 1847 c046 200f 0010 014b 1b68 |
384 | 1847 c046 180f 0010 014b 1b68 1847 c046 |
385 | 240f 0010 014b 1b68 1847 c046 5c0f 0010 |
386 | 014b 1b68 1847 c046 600f 0010 014b 1b68 |
387 | 1847 c046 3c0f 0010 014b 1b68 1847 c046 |
388 | 4c0f 0010 014b 1b68 1847 c046 2c0f 0010 |
389 | 014b 1b68 1847 c046 340f 0010 40b4 024e |
390 | 3668 b446 40bc 6047 280f 0010 014b 1b68 |
391 | 1847 c046 580f 0010 014b 1b68 1847 c046 |
392 | 540f 0010 014b 1b68 1847 c046 480f 0010 |
393 | 014b 1b68 1847 c046 440f 0010 40b4 024e |
394 | 3668 b446 40bc 6047 400f 0010 014b 1b68 |
395 | 1847 c046 300f 0010 014b 1b68 1847 c046 |
396 | 380f 0010 014b 1b68 1847 c046 500f 0010 |
397 | 40b4 024e 3668 b446 40bc 6047 680f 0010 |
398 | 014b 1b68 1847 c046 e80f 0010 014b 1b68 |
399 | 1847 c046 0410 0010 014b 1b68 1847 c046 |
400 | f40f 0010 014b 1b68 1847 c046 780f 0010 |
401 | 014b 1b68 1847 c046 e00f 0010 014b 1b68 |
402 | 1847 c046 ec0f 0010 014b 1b68 1847 c046 |
403 | c00f 0010 014b 1b68 1847 c046 b40f 0010 |
404 | 014b 1b68 1847 c046 ac0f 0010 014b 1b68 |
405 | 1847 c046 d80f 0010 014b 1b68 1847 c046 |
406 | d40f 0010 014b 1b68 1847 c046 700f 0010 |
407 | 014b 1b68 1847 c046 640f 0010 014b 1b68 |
408 | 1847 c046 bc0f 0010 014b 1b68 1847 c046 |
409 | 0010 0010 014b 1b68 1847 c046 cc0f 0010 |
410 | 014b 1b68 1847 c046 dc0f 0010 014b 1b68 |
411 | 1847 c046 9c0f 0010 014b 1b68 1847 c046 |
412 | b00f 0010 014b 1b68 1847 c046 940f 0010 |
413 | 014b 1b68 1847 c046 800f 0010 014b 1b68 |
414 | 1847 c046 840f 0010 014b 1b68 1847 c046 |
415 | a40f 0010 014b 1b68 1847 c046 900f 0010 |
416 | 014b 1b68 1847 c046 8c0f 0010 014b 1b68 |
417 | 1847 c046 7c0f 0010 014b 1b68 1847 c046 |
418 | e40f 0010 014b 1b68 1847 c046 b80f 0010 |
419 | 014b 1b68 1847 c046 740f 0010 014b 1b68 |
420 | 1847 c046 6c0f 0010 014b 1b68 1847 c046 |
421 | c40f 0010 014b 1b68 1847 c046 c80f 0010 |
422 | 014b 1b68 1847 c046 a80f 0010 014b 1b68 |
423 | 1847 c046 880f 0010 014b 1b68 1847 c046 |
424 | 980f 0010 014b 1b68 1847 c046 d00f 0010 |
425 | 014b 1b68 1847 c046 a00f 0010 014b 1b68 |
426 | 1847 c046 0810 0010 014b 1b68 1847 c046 |
427 | 0c10 0010 014b 1b68 1847 c046 f80f 0010 |
428 | 014b 1b68 1847 c046 fc0f 0010 014b 1b68 |
429 | 1847 c046 1410 0010 014b 1b68 1847 c046 |
430 | 1010 0010 014b 1b68 1847 c046 f00f 0010 |
431 | 014b 1b68 1847 c046 2c10 0010 40b4 024e |
432 | 3668 b446 40bc 6047 2410 0010 014b 1b68 |
433 | 1847 c046 2810 0010 014b 1b68 1847 c046 |
434 | 1810 0010 014b 1b68 1847 c046 2010 0010 |
435 | 014b 1b68 1847 c046 1c10 0010 014b 1b68 |
436 | 1847 c046 4010 0010 014b 1b68 1847 c046 |
437 | b010 0010 014b 1b68 1847 c046 3010 0010 |
438 | 014b 1b68 1847 c046 6410 0010 014b 1b68 |
439 | 1847 c046 fc10 0010 014b 1b68 1847 c046 |
440 | f810 0010 014b 1b68 1847 c046 1011 0010 |
441 | 014b 1b68 1847 c046 c010 0010 014b 1b68 |
442 | 1847 c046 7010 0010 014b 1b68 1847 c046 |
443 | 8010 0010 014b 1b68 1847 c046 e010 0010 |
444 | 014b 1b68 1847 c046 ac10 0010 014b 1b68 |
445 | 1847 c046 a010 0010 014b 1b68 1847 c046 |
446 | 5010 0010 014b 1b68 1847 c046 8410 0010 |
447 | 014b 1b68 1847 c046 ec10 0010 014b 1b68 |
448 | 1847 c046 c410 0010 014b 1b68 1847 c046 |
449 | c810 0010 014b 1b68 1847 c046 4c10 0010 |
450 | 014b 1b68 1847 c046 9c10 0010 014b 1b68 |
451 | 1847 c046 3810 0010 014b 1b68 1847 c046 |
452 | b810 0010 014b 1b68 1847 c046 6c10 0010 |
453 | 014b 1b68 1847 c046 3410 0010 014b 1b68 |
454 | 1847 c046 cc10 0010 014b 1b68 1847 c046 |
455 | 9410 0010 014b 1b68 1847 c046 5410 0010 |
456 | 014b 1b68 1847 c046 6010 0010 014b 1b68 |
457 | 1847 c046 a410 0010 014b 1b68 1847 c046 |
458 | d810 0010 014b 1b68 1847 c046 e410 0010 |
459 | 014b 1b68 1847 c046 d010 0010 014b 1b68 |
460 | 1847 c046 6810 0010 014b 1b68 1847 c046 |
461 | 9010 0010 014b 1b68 1847 c046 8c10 0010 |
462 | 014b 1b68 1847 c046 b410 0010 014b 1b68 |
463 | 1847 c046 bc10 0010 014b 1b68 1847 c046 |
464 | e810 0010 014b 1b68 1847 c046 0411 0010 |
465 | 40b4 024e 3668 b446 40bc 6047 8810 0010 |
466 | 014b 1b68 1847 c046 dc10 0010 014b 1b68 |
467 | 1847 c046 4810 0010 014b 1b68 1847 c046 |
468 | 7410 0010 014b 1b68 1847 c046 3c10 0010 |
469 | 40b4 024e 3668 b446 40bc 6047 d410 0010 |
470 | 014b 1b68 1847 c046 5c10 0010 014b 1b68 |
471 | 1847 c046 5810 0010 014b 1b68 1847 c046 |
472 | 9810 0010 014b 1b68 1847 c046 0011 0010 |
473 | 014b 1b68 1847 c046 4410 0010 40b4 024e |
474 | 3668 b446 40bc 6047 a810 0010 014b 1b68 |
475 | 1847 c046 7810 0010 014b 1b68 1847 c046 |
476 | 0811 0010 014b 1b68 1847 c046 0c11 0010 |
477 | 40b4 024e 3668 b446 40bc 6047 7c10 0010 |
478 | 014b 1b68 1847 c046 f410 0010 014b 1b68 |
479 | 1847 c046 f010 0010 014b 1b68 1847 c046 |
480 | 1c11 0010 014b 1b68 1847 c046 3c11 0010 |
481 | 014b 1b68 1847 c046 2c11 0010 014b 1b68 |
482 | 1847 c046 3011 0010 014b 1b68 1847 c046 |
483 | 2011 0010 014b 1b68 1847 c046 3411 0010 |
484 | 014b 1b68 1847 c046 1411 0010 014b 1b68 |
485 | 1847 c046 2411 0010 014b 1b68 1847 c046 |
486 | 1811 0010 014b 1b68 1847 c046 2811 0010 |
487 | 014b 1b68 1847 c046 3811 0010 014b 1b68 |
488 | 1847 c046 4011 0010 014b 1b68 1847 c046 |
489 | 4411 0010 014b 1b68 1847 c046 4811 0010 |
490 | 40b4 024e 3668 b446 40bc 6047 4c11 0010 |
491 | 7047 0000 00b5 044a 4260 044a 0260 fff7 |
492 | 11fe 01bc 0047 0000 ac0c 0010 bc0c 0010 |
493 | 00b5 fff7 85ff 01bc 0047 0000 00b5 fff7 |
494 | 85ff 01bc 0047 0000 00b5 fff7 79ff 01bc |
495 | 0047 0000 10b5 81b0 039c 1438 0094 fff7 |
496 | 07ff 01b0 10bc 01bc 0047 0000 00b5 1438 |
497 | fff7 d8fc 01bc 0047 00b5 1438 fff7 00ff |
498 | 01bc 0047 00b5 1838 fff7 52ff 02bc 0847 |
499 | 00b5 1c38 fff7 46ff 02bc 0847 00b5 1c38 |
500 | fff7 3aff 02bc 0847 00b5 0438 fff7 c4fd |
501 | 02bc 0847 00b5 0438 fff7 b8fd 02bc 0847 |
502 | 00b5 4838 fff7 a2fc 01bc 0047 00b5 4c38 |
503 | fff7 a2fc 01bc 0047 ffff ffff 0000 0000 |
504 | ffff ffff 0000 0000 000c 0010 200c 0010 |
505 | 9c0e 0010 000f 0010 f00e 0010 d00e 0010 |
506 | dc0e 0010 340c 0010 040c 0010 ac0c 0010 |
507 | bc0c 0010 6c0d 0010 040e 0010 100e 0010 |
508 | 9c0e 0010 000f 0010 f00e 0010 d00e 0010 |
509 | dc0e 0010 240e 0010 340c 0010 300d 0010 |
510 | c80d 0010 ac0c 0010 bc0c 0010 f615 2010 |
511 | 0a00 0000 6400 6500 6600 6100 7500 6c00 |
512 | 7400 2e00 7000 6c00 0000 0000 0700 0000 |
513 | 5000 6500 7200 6c00 4d00 6900 6e00 0000 |
514 | 0000 0000 0000 0000 6d00 0010 4104 0010 |
515 | 4d04 0010 9907 0010 a507 0010 7506 0010 |
516 | 8106 0010 5904 0010 8d06 0010 6504 0010 |
517 | b107 0010 9906 0010 a506 0010 2d00 0010 |
518 | bd07 0010 3d01 0010 c907 0010 2902 0010 |
519 | d507 0010 e107 0010 ed07 0010 7104 0010 |
520 | f907 0010 0508 0010 1108 0010 1d08 0010 |
521 | 8104 0010 8d04 0010 fcff ffff 0000 0000 |
522 | 690b 0010 5d0b 0010 0000 0000 0000 0000 |
523 | c90a 0010 4905 0010 5505 0010 6105 0010 |
524 | 6d05 0010 7905 0010 8505 0010 9105 0010 |
525 | 9d05 0010 a905 0010 b505 0010 c105 0010 |
526 | cd05 0010 d905 0010 e505 0010 f105 0010 |
527 | fd05 0010 0906 0010 1506 0010 2106 0010 |
528 | 2d06 0010 3906 0010 4506 0010 5106 0010 |
529 | c902 0010 5d06 0010 6906 0010 0000 0000 |
530 | 0000 0000 e50a 0010 9904 0010 2908 0010 |
531 | 9d0a 0010 a504 0010 3508 0010 ed03 0010 |
532 | 4108 0010 4d08 0010 5908 0010 6508 0010 |
533 | 7108 0010 9d0a 0010 0000 0000 0000 0000 |
534 | f10a 0010 7d08 0010 8908 0010 f903 0010 |
535 | 9508 0010 a108 0010 ad08 0010 b908 0010 |
536 | c508 0010 c50a 0010 d108 0010 dd08 0010 |
537 | 0504 0010 1104 0010 e908 0010 f508 0010 |
538 | 0109 0010 1d03 0010 b104 0010 0d09 0010 |
539 | 1909 0010 0000 0000 0000 0000 fd0a 0010 |
540 | 9904 0010 2908 0010 0d00 0010 a504 0010 |
541 | 3508 0010 ed03 0010 4108 0010 4d08 0010 |
542 | 5908 0010 6508 0010 7108 0010 f502 0010 |
543 | 0000 0000 0000 0000 9d0a 0010 0000 0000 |
544 | 0000 0000 9d0a 0010 b106 0010 bd06 0010 |
545 | 0000 0000 0000 0000 2904 0010 4104 0010 |
546 | 4d04 0010 9907 0010 a507 0010 7506 0010 |
547 | 8106 0010 5904 0010 8d06 0010 6504 0010 |
548 | b107 0010 9906 0010 a506 0010 a509 0010 |
549 | bd07 0010 b109 0010 c907 0010 c109 0010 |
550 | d507 0010 e107 0010 ed07 0010 7104 0010 |
551 | f907 0010 0508 0010 1108 0010 1d08 0010 |
552 | 8104 0010 8d04 0010 ecff ffff 0000 0000 |
553 | 210b 0010 4109 0010 4d09 0010 5909 0010 |
554 | 6509 0010 7509 0010 8109 0010 090b 0010 |
555 | 8d09 0010 2d0b 0010 9909 0010 b8ff ffff |
556 | 0000 0000 750b 0010 b4ff ffff 0000 0000 |
557 | 810b 0010 b106 0010 bd06 0010 e4ff ffff |
558 | 0000 0000 510b 0010 450b 0010 e8ff ffff |
559 | 0000 0000 390b 0010 c906 0010 d506 0010 |
560 | 0300 0000 0600 0000 1b00 0000 4700 0000 |
561 | 3f00 0000 ee02 0000 f502 0000 2203 0000 |
562 | 2303 0000 2503 0000 2803 0000 b504 0000 |
563 | b604 0000 d204 0000 e604 0000 f304 0000 |
564 | 4405 0000 4805 0000 0008 0000 0508 0000 |
565 | 0300 0000 0c00 0000 1c00 0000 1d00 0000 |
566 | 2100 0000 2800 0000 4200 0000 4800 0000 |
567 | 4a00 0000 5200 0000 5400 0000 5500 0000 |
568 | 5700 0000 5a00 0000 5f00 0000 6000 0000 |
569 | 6400 0000 6500 0000 8a00 0000 8b00 0000 |
570 | 8f00 0000 9300 0000 9900 0000 a000 0000 |
571 | ad00 0000 b100 0000 b900 0000 bb00 0000 |
572 | c500 0000 c800 0000 d000 0000 d600 0000 |
573 | dd00 0000 df00 0000 e200 0000 e800 0000 |
574 | ec00 0000 ff00 0000 0001 0000 1401 0000 |
575 | 1501 0000 2401 0000 2501 0000 3801 0000 |
576 | 3a01 0000 1200 0000 2700 0000 3300 0000 |
577 | b700 0000 e300 0000 e600 0000 1100 0000 |
578 | 1400 0000 1e00 0000 1f00 0000 2000 0000 |
579 | 2800 0000 3000 0000 3100 0000 3300 0000 |
580 | 3400 0000 4000 0000 4100 0000 4200 0000 |
581 | 4300 0000 4400 0000 4700 0000 4a00 0000 |
582 | 4b00 0000 4c00 0000 5000 0000 5100 0000 |
583 | 5200 0000 5400 0000 5600 0000 6400 0000 |
584 | 7400 0000 7900 0000 7a00 0000 7c00 0000 |
585 | 8200 0000 8500 0000 8600 0000 8c00 0000 |
586 | 8e00 0000 8f00 0000 9200 0000 9300 0000 |
587 | 9500 0000 9600 0000 9700 0000 9b00 0000 |
588 | 9d00 0000 a100 0000 b300 0000 c600 0000 |
589 | c800 0000 cc00 0000 ce00 0000 d500 0000 |
590 | d600 0000 de00 0000 e000 0000 e200 0000 |
591 | fd00 0000 0801 0000 2201 0000 2801 0000 |
592 | 0200 0000 0300 0000 2903 0000 3803 0000 |
593 | 3c03 0000 5a03 0000 7c04 0000 8c04 0000 |
594 | 0205 0000 0305 0000 e005 0000 2e06 0000 |
595 | 4b06 0000 0400 0000 8905 0000 0000 0000 |
596 | 8d03 0000 0003 0000 7802 0000 0400 0000 |
597 | 0300 0000 0600 0000 1b00 0000 4700 0000 |
598 | 8d02 0000 1000 0000 3f00 0000 ee02 0000 |
599 | f502 0000 2203 0000 2303 0000 2503 0000 |
600 | 2803 0000 b504 0000 b604 0000 d204 0000 |
601 | e604 0000 f304 0000 4405 0000 4805 0000 |
602 | 0008 0000 0508 0000 a102 0000 2d00 0000 |
603 | 0300 0000 0c00 0000 1c00 0000 1d00 0000 |
604 | 2100 0000 2800 0000 4200 0000 4800 0000 |
605 | 4a00 0000 5200 0000 5400 0000 5500 0000 |
606 | 5700 0000 5a00 0000 5f00 0000 6000 0000 |
607 | 6400 0000 6500 0000 8a00 0000 8b00 0000 |
608 | 8f00 0000 9300 0000 9900 0000 a000 0000 |
609 | ad00 0000 b100 0000 b900 0000 bb00 0000 |
610 | c500 0000 c800 0000 d000 0000 d600 0000 |
611 | dd00 0000 df00 0000 e200 0000 e800 0000 |
612 | ec00 0000 ff00 0000 0001 0000 1401 0000 |
613 | 1501 0000 2401 0000 2501 0000 3801 0000 |
614 | 3a01 0000 b402 0000 0600 0000 1200 0000 |
615 | 2700 0000 3300 0000 b700 0000 e300 0000 |
616 | e600 0000 c802 0000 3900 0000 1100 0000 |
617 | 1400 0000 1e00 0000 1f00 0000 2000 0000 |
618 | 2800 0000 3000 0000 3100 0000 3300 0000 |
619 | 3400 0000 4000 0000 4100 0000 4200 0000 |
620 | 4300 0000 4400 0000 4700 0000 4a00 0000 |
621 | 4b00 0000 4c00 0000 5000 0000 5100 0000 |
622 | 5200 0000 5400 0000 5600 0000 6400 0000 |
623 | 7400 0000 7900 0000 7a00 0000 7c00 0000 |
624 | 8200 0000 8500 0000 8600 0000 8c00 0000 |
625 | 8e00 0000 8f00 0000 9200 0000 9300 0000 |
626 | 9500 0000 9600 0000 9700 0000 9b00 0000 |
627 | 9d00 0000 a100 0000 b300 0000 c600 0000 |
628 | c800 0000 cc00 0000 ce00 0000 d500 0000 |
629 | d600 0000 de00 0000 e000 0000 e200 0000 |
630 | fd00 0000 0801 0000 2201 0000 2801 0000 |
631 | de02 0000 0d00 0000 0200 0000 0300 0000 |
632 | 2903 0000 3803 0000 3c03 0000 5a03 0000 |
633 | 7c04 0000 8c04 0000 0205 0000 0305 0000 |
634 | e005 0000 2e06 0000 4b06 0000 f202 0000 |
635 | 0200 0000 0400 0000 8905 0000 4150 5041 |
636 | 5243 5b31 3030 3033 6133 645d 2e44 4c4c |
637 | 0041 564b 4f4e 5b31 3030 3035 3663 365d |
638 | 2e44 4c4c 0043 4f4e 455b 3130 3030 3361 |
639 | 3431 5d2e 444c 4c00 4546 5352 565b 3130 |
640 | 3030 3339 6534 5d2e 444c 4c00 4549 4b43 |
641 | 4f52 455b 3130 3030 3438 3932 5d2e 444c |
642 | 4c00 4555 5345 525b 3130 3030 3339 6535 |
643 | 5d2e 444c 4c00 5045 524c 3539 332e 444c |
644 | 4c00 0000 c002 0000 5c01 0000 0000 0000 |
645 | c002 0000 1430 2830 dc30 e030 e430 e830 |
646 | ec30 f030 1032 9c32 a032 1833 6833 6c33 |
647 | 7033 7433 7833 7c33 8033 8433 8833 ac33 |
648 | f433 0034 0c34 1834 2434 3034 3c34 4834 |
649 | 5434 6034 6c34 7c34 8834 9434 a034 ac34 |
650 | bc34 c834 d434 e034 f034 fc34 0835 1435 |
651 | 2035 2c35 3835 4435 5035 5c35 6835 7435 |
652 | 8035 8c35 9835 a435 b035 bc35 c835 d435 |
653 | e035 ec35 f835 0436 1036 1c36 2836 3436 |
654 | 4036 4c36 5836 6436 7036 7c36 8836 9436 |
655 | a036 ac36 b836 c436 d036 dc36 e836 f436 |
656 | 0037 0c37 1c37 2837 3437 4037 4c37 5837 |
657 | 6437 7037 7c37 8837 9437 a037 ac37 b837 |
658 | c437 d037 dc37 e837 f437 0038 0c38 1838 |
659 | 2438 3038 3c38 4838 5438 6038 6c38 7838 |
660 | 8438 9038 9c38 a838 b438 c038 cc38 d838 |
661 | e438 f038 fc38 0839 1439 2039 3039 3c39 |
662 | 4839 5439 6039 7039 7c39 8839 9439 a039 |
663 | ac39 bc39 c839 d439 e039 f039 fc39 083a |
664 | 143a 203a 2c3a 383a 443a 503a 5c3a 683a |
665 | 743a 803a 8c3a 983a a43a b03a c03a dc3a |
666 | e03a 9c3b a03b a43b a83b ac3b b03b b43b |
667 | b83b bc3b c03b c43b c83b cc3b d03b d43b |
668 | d83b dc3b e03b e43b e83b ec3b f03b f43b |
669 | f83b fc3b 3c3c 403c 443c 483c 4c3c 503c |
670 | 543c 583c 5c3c 603c 643c 683c 6c3c 703c |
671 | 743c 783c 7c3c 803c 843c 883c 8c3c 903c |
672 | 943c 983c 9c3c a03c a43c a83c b43c b83c |
673 | c43c c83c cc3c d03c d43c d83c dc3c e03c |
674 | e43c e83c ec3c f03c f43c f83c fc3c 003d |
675 | 043d 083d 0c3d 103d 143d 183d 1c3d 203d |
676 | 243d 283d 2c3d 383d 3c3d 403d 443d 483d |
677 | 4c3d 503d 543d 583d 5c3d 603d 643d 683d |
678 | 743d 783d 7c3d 803d 843d 883d 8c3d 903d |
679 | 943d 983d 9c3d a03d a43d a83d ac3d b03d |
680 | b43d b83d bc3d c03d c43d d03d d43d d83d |
681 | dc3d e03d e43d e83d ec3d f03d f43d f83d |
682 | fc3d 003e 0c3e 183e 1c3e 203e 2c3e 303e |
683 | 343e 383e 3c3e 403e 443e 483e 4c3e 503e |
684 | 543e 583e 5c3e 603e 643e 683e 6c3e 703e |
685 | 743e 783e 7c3e 803e 843e 883e 8c3e 903e |
686 | 943e 983e a43e a83e ac3e b03e b43e b83e |
687 | bc3e c03e c43e c83e cc3e d83e e43e e83e |
688 | ec3e f83e fc3e 083f 0c3f 103f |
689 | __APP__ |
690 | |
691 | # This is Symbian application resource skeleton. |
692 | # You can create the ...\epoc32\data\z\system\apps\PerlApp\PerlApp.rsc |
693 | # by compiling the PerlApp.cpp. |
694 | $RSCHEX = <<__RSC__; |
695 | 6b4a 1f10 0000 0000 5fde 0400 1ca3 60de |
696 | 01b8 0010 0004 0000 0001 f0e5 4d00 0000 |
697 | 0004 f0e5 4d00 0000 0000 0000 001a 00cc |
698 | 0800 0000 0001 0005 f0e5 4d00 0000 0000 |
699 | 00ff ffff ff00 0000 0000 0000 0000 0f05 |
700 | 0000 0400 0000 0000 0000 0000 0005 0541 |
701 | 626f 7574 1700 00ff ffff ff00 0000 0001 |
702 | 0400 0000 0000 0000 0000 0004 0454 696d |
703 | 6517 0000 ffff ffff 0000 0000 0204 0000 |
704 | 0000 0000 0000 0000 0303 5275 6e17 0000 |
705 | ffff ffff 0000 0000 0304 0000 0000 0000 |
706 | 0000 0000 0808 4f6e 656c 696e 6572 1700 |
707 | 00ff ffff ff00 0000 0004 0400 0000 0000 |
708 | 0000 0000 0009 0943 6f70 7972 6967 6874 |
709 | 0e00 00ff ffff ff00 0000 0000 0000 0001 |
710 | 2000 0000 0000 0000 1400 cc08 0100 6816 |
711 | 0001 0000 0000 0001 0000 0000 ffff ffff |
712 | 00ff ffff ff00 0000 0000 0000 00ff ff00 |
713 | 0000 0000 0000 0120 0000 0000 0000 0024 |
714 | 00cc 0801 0068 1600 0100 0000 0000 0100 |
715 | 0000 00ff ffff ff00 ffff ffff 0000 0000 |
716 | 0000 0000 ffff 0000 0000 0000 0041 2200 |
717 | 0000 0000 0000 1400 cc08 0100 6916 0000 |
718 | 0500 0000 0001 0000 0000 0000 0000 0100 |
719 | 0000 0400 0700 0800 ff02 0100 ffff ffff |
720 | 0000 0000 0000 0000 0000 ffff 0000 0000 |
721 | 0000 0041 2200 0000 0000 0000 1400 cc08 |
722 | 0100 7416 0007 0000 0000 0054 1600 00ff |
723 | ffff ff00 0000 0000 00ff ff00 0000 0000 |
724 | 0000 0000 0000 0015 001d 001d 0035 004d |
725 | 00ef 0026 015d 01a3 01d2 01d7 01 |
726 | __RSC__ |
727 | } |