This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Old hosts like NeXT Classic don't have sort -k,
[perl5.git] / epoc / epocish.c
CommitLineData
3a2f06e9
GS
1/*
2 * Copyright (c) 1999 Olaf Flebbe o.flebbe@gmx.de
3 *
4 * You may distribute under the terms of either the GNU General Public
5 * License or the Artistic License, as specified in the README file.
6 *
7 */
8
b250498f 9/* This is C++ Code !! */
3a2f06e9
GS
10
11#include <e32std.h>
d5ff79b3
OF
12#include <stdlib.h>
13#include <estlib.h>
14#include <string.h>
3a2f06e9
GS
15
16extern "C" {
17
d5ff79b3
OF
18#if 1
19int
3a2f06e9
GS
20epoc_spawn( char *cmd, char *cmdline) {
21 RProcess p;
22 TRequestStatus status;
23 TInt rc;
24
25 rc = p.Create( _L( cmd), _L( cmdline));
d5ff79b3 26 if (rc != KErrNone) {
3a2f06e9 27 return -1;
d5ff79b3 28 }
3a2f06e9
GS
29
30 p.Resume();
31
32 p.Logon( status);
33 User::WaitForRequest( status);
d5ff79b3 34 p.Kill( 0);
3a2f06e9
GS
35 if (status!=KErrNone) {
36 return -1;
37 }
38 return 0;
39}
d5ff79b3
OF
40#else
41int
42epoc_spawn( char *cmd, char *cmdline) {
43 int len = strlen(cmd) + strlen(cmdline) + 4;
44 char *n = (char *) malloc( len);
45 int r;
46 strcpy( n, cmd);
47 strcat( n, " ");
48 strcat( n, cmdline);
49 r = system( n);
50 free( n);
51 return r;
52}
53#endif
3a2f06e9 54
d5ff79b3
OF
55/* Workaround for defect strtoul(). Values with leading + are zero */
56
57unsigned long int epoc_strtoul(const char *nptr, char **endptr,
58 int base) {
59 if (nptr && *nptr == '+')
60 nptr++;
61 return strtoul( nptr, endptr, base);
62}
b250498f 63
d5ff79b3
OF
64/* Workaround for defect atof(), see java defect list for epoc */
65double epoc_atof( char* str) {
b250498f 66 TReal64 aRes;
fa6a1c44
OF
67
68 while (TChar( *str).IsSpace()) {
69 str++;
70 }
b250498f
GS
71
72 TLex lex( _L( str));
73 TInt err = lex.Val( aRes, TChar( '.'));
74 return aRes;
d5ff79b3 75}
b250498f 76
d5ff79b3 77void epoc_gcvt( double x, int digits, unsigned char *buf) {
b250498f
GS
78 TRealFormat trel;
79
80 trel.iPlaces = digits;
81 trel.iPoint = TChar( '.');
82
83 TPtr result( buf, 80);
84
85 result.Num( x, trel);
86 result.Append( TChar( 0));
87 }
3a2f06e9 88}
d5ff79b3
OF
89
90#if 0
91void epoc_spawn_posix_server() {
92 SpawnPosixServerThread();
93}
94#endif