This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Allow emitting the foldcased version of "\x{df}", "ss"
[perl5.git] / epoc / epocish.c
index a0557cc..a8b9597 100644 (file)
@@ -9,31 +9,60 @@
 /* This is C++ Code !! */
 
 #include <e32std.h>
+#include <stdlib.h>
+#include <estlib.h>
+#include <string.h>
 
 extern "C" { 
 
+#if 1
+int
 epoc_spawn( char *cmd, char *cmdline) {
   RProcess p;
   TRequestStatus status;
   TInt rc;
 
   rc = p.Create( _L( cmd), _L( cmdline));
-  if (rc != KErrNone)
+  if (rc != KErrNone) {
     return -1;
+  }
 
   p.Resume();
   
   p.Logon( status);
   User::WaitForRequest( status);
+  p.Kill( 0);
   if (status!=KErrNone) {
     return -1;
   }
   return 0;
 }
+#else 
+int
+epoc_spawn( char *cmd, char *cmdline) {
+  int len = strlen(cmd) + strlen(cmdline) + 4;
+  char *n = (char *) malloc( len);
+  int r;
+  strcpy( n, cmd);
+  strcat( n, " ");
+  strcat( n, cmdline);
+  r = system( n);
+  free( n);
+  return r;
+}
+#endif 
 
+/* Workaround for defect strtoul(). Values with leading + are zero */
+
+unsigned long int epoc_strtoul(const char *nptr, char **endptr,
+                              int base) {
+  if (nptr && *nptr == '+')
+    nptr++;
+  return strtoul( nptr, endptr, base);
+}
 
-  /* Workaround for defect atof(), see java defect list for epoc */
-  double epoc_atof( char* str) {
+/* Workaround for defect atof(), see java defect list for epoc */
+double epoc_atof( char* str) {
     TReal64 aRes;
     
     while (TChar( *str).IsSpace()) {
@@ -43,9 +72,9 @@ epoc_spawn( char *cmd, char *cmdline) {
     TLex lex( _L( str));
     TInt err = lex.Val( aRes, TChar( '.'));
     return aRes;
-  }
+}
 
-  void epoc_gcvt( double x, int digits, unsigned char *buf) {
+void epoc_gcvt( double x, int digits, unsigned char *buf) {
     TRealFormat trel;
 
     trel.iPlaces = digits;
@@ -57,3 +86,9 @@ epoc_spawn( char *cmd, char *cmdline) {
     result.Append( TChar( 0));
   }
 }
+
+#if 0
+void epoc_spawn_posix_server() {
+  SpawnPosixServerThread(); 
+}
+#endif