EPOC tweaks from Olaf Flebbe.
Jarkko Hietaniemi [Wed, 3 Apr 2002 20:27:49 +0000 (20:27 +0000)]
p4raw-id: //depot/perl@15718

README.epoc
epoc/epoc.c
epoc/epocish.h
util.c

index a235f01..8ce93fe 100644 (file)
@@ -68,6 +68,12 @@ EPOC:
 
 =over 4
 
+=item * 
+
+socket IO is only implemented poorly. You can only use sysread and
+syswrite on them. The commands read, write, print, <> do not work for
+sockets. This may change iff epocemx supports sockets.
+
 =item *
 
 kill, alarm and signals. Do not try to use them. This may be
index 61c8d28..6a463c6 100644 (file)
@@ -124,8 +124,3 @@ Perl_init_os_extras(void)
   newXS("EPOC::getcwd", epoc_getcwd, file);
 }
 
-void
-Perl_my_setenv(pTHX_ char *nam,char *val) {
-
-  setenv( nam, val, 1);
-}
index a98faa0..b955675 100644 (file)
 #define Fflush(fp)         fflush(fp)
 #define Mkdir(path,mode)   mkdir((path),(mode))
 
-/* these should be set in a hint file, not here */
+
+/* epocemx setenv bug workaround */
 #ifndef PERL_SYS_INIT
-#    define PERL_SYS_INIT(c,v)  MALLOC_INIT
+#    define PERL_SYS_INIT(c,v)    putenv(".dummy=foo"); putenv(".dummy"); MALLOC_INIT
 #endif
 
 #ifndef PERL_SYS_TERM
 #define  BOGUS_GETNAME_RETURN 8
 
 /* 
-   read() on a socket blocks until buf is filled completly, 
-   recv() returns each massage 
+   read() on a socket is unimplemented in current epocemx
+   use recv() instead
 */
+
 #define PERL_SOCK_SYSREAD_IS_RECV
 
+/* write ditto, use send */
+#define PERL_SOCK_SYSWRITE_IS_SEND
+
 /* No /dev/random available*/
 
 #define PERL_NO_DEV_RANDOM
 
 #define init_os_extras Perl_init_os_extras
 
-#define NO_ENVIRON_ARRAY
-
 #define ARG_MAX 4096
 
 #define ECONNABORTED 0xdead
 
+/* For environ */
+#include <emx.h>
+#define PERL_USE_SAFE_PUTENV
+
+
diff --git a/util.c b/util.c
index d4a775b..4642031 100644 (file)
--- a/util.c
+++ b/util.c
@@ -1584,7 +1584,7 @@ Perl_vwarner(pTHX_ U32  err, const char* pat, va_list* args)
    *(s+(nlen+1+vlen)) = '\0'
 
 #ifdef USE_ENVIRON_ARRAY
-       /* VMS' and EPOC's my_setenv() is in vms.c and epoc.c */
+       /* VMS' my_setenv() is in vms.c */
 #if !defined(WIN32) && !defined(NETWARE)
 void
 Perl_my_setenv(pTHX_ char *nam, char *val)
@@ -1632,7 +1632,7 @@ Perl_my_setenv(pTHX_ char *nam, char *val)
     my_setenv_format(environ[i], nam, nlen, val, vlen);
 
 #else   /* PERL_USE_SAFE_PUTENV */
-#   if defined(__CYGWIN__)
+#   if defined(__CYGWIN__) || defined( EPOC)
     setenv(nam, val, 1);
 #   else
     char *new_env;