home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
perl502b.zip
/
OS2
/
patches
< prev
next >
Wrap
Text File
|
1996-02-26
|
12KB
|
480 lines
*** e:/perl5.002b3/doio.c Sat Feb 03 01:49:30 1996
--- perl5/doio.c Tue Feb 20 15:49:36 1996
***************
*** 942,947 ****
--- 942,949 ----
}
}
+ #ifndef OS2
+
bool
do_exec(cmd)
char *cmd;
***************
*** 1030,1035 ****
--- 1032,1039 ----
do_execfree();
return FALSE;
}
+
+ #endif
I32
apply(type,mark,sp)
*** e:/perl5.002b3/ext/DynaLoader/dl_os2.xs Tue Nov 14 04:58:42 1995
--- perl5/ext/DynaLoader/dl_os2.xs Tue Feb 20 17:58:38 1996
***************
*** 28,34 ****
return (void *)handle;
/* Not found. Check for non-FAT name and try truncated name. */
- /* Don't know if this helps though... */
for (beg = dot = path + strlen(path);
beg > path && !strchr(":/\\", *(beg-1));
beg--)
--- 28,33 ----
***************
*** 162,167 ****
--- 161,167 ----
char *
mod2fname(sv)
SV *sv;
+
# These functions should not need changing on any platform:
*** e:/perl5.002b3/ext/DynaLoader/DynaLoader.pm Thu Feb 01 19:00:30 1996
--- perl5/ext/DynaLoader/DynaLoader.pm Tue Feb 20 18:48:00 1996
***************
*** 468,473 ****
--- 468,474 ----
Linux: dld_create_reference(@dl_require_symbols); dld_link($filename)
NeXT: rld_load($filename, @dl_resolve_using)
VMS: lib$find_image_symbol($filename,$dl_require_symbols[0])
+ OS/2: DosLoadModule(,,$filename,)
=item dl_find_symbol()
***************
*** 490,495 ****
--- 491,497 ----
Linux: dld_get_func($symbol) and/or dld_get_symbol($symbol)
NeXT: rld_lookup("_$symbol")
VMS: lib$find_image_symbol($libref,$symbol)
+ OS/2: DosQueryProcAddr($libref,0,$symbol,)
=item dl_undef_symbols()
*** e:/perl5.002b3/os2/os2.c Sun Dec 24 19:43:02 1995
--- perl5/os2/os2.c Mon Feb 26 02:46:30 1996
***************
*** 40,59 ****
int r, status;
Signal_t (*ihand)(); /* place to save signal during system() */
Signal_t (*qhand)(); /* place to save signal during system() */
! if (pid < 0 || flag != 0)
return pid;
ihand = signal(SIGINT, SIG_IGN);
qhand = signal(SIGQUIT, SIG_IGN);
r = waitpid(pid, &status, 0);
signal(SIGINT, ihand);
signal(SIGQUIT, qhand);
-
statusvalue = (U16)status;
if (r < 0)
return -1;
return status & 0xFFFF;
}
int
--- 40,72 ----
int r, status;
Signal_t (*ihand)(); /* place to save signal during system() */
Signal_t (*qhand)(); /* place to save signal during system() */
+ #ifndef __EMX__
+ RESULTCODES res;
+ int rpid;
+ #endif
! if (pid <= 0 || (flag & 0xFF) != P_WAIT)
return pid;
+ #ifdef __EMX__
ihand = signal(SIGINT, SIG_IGN);
qhand = signal(SIGQUIT, SIG_IGN);
r = waitpid(pid, &status, 0);
signal(SIGINT, ihand);
signal(SIGQUIT, qhand);
statusvalue = (U16)status;
if (r < 0)
return -1;
return status & 0xFFFF;
+ #else
+ ihand = signal(SIGINT, SIG_IGN);
+ r = DosWaitChild(DCWA_PROCESS, DCWW_WAIT, &res, &rpid, pid);
+ signal(SIGINT, ihand);
+ statusvalue = res.codeResult << 8 | res.codeTerminate;
+ if (r)
+ return -1;
+ return statusvalue;
+ #endif
}
int
***************
*** 68,81 ****
int flag = P_WAIT, trueflag;
if (sp > mark) {
! New(401,Argv, sp - mark + 1, char*);
! a = Argv;
!
! if (mark < sp && SvIOKp(*(mark+1))) {
++mark;
flag = SvIVx(*mark);
}
while (++mark <= sp) {
if (*mark)
*a++ = SvPVx(*mark, na);
--- 81,94 ----
int flag = P_WAIT, trueflag;
if (sp > mark) {
! if (mark < sp && SvNOKp(*(mark+1))) {
++mark;
flag = SvIVx(*mark);
}
+ New(401,Argv, sp - mark + 1, char*);
+ a = Argv;
+
while (++mark <= sp) {
if (*mark)
*a++ = SvPVx(*mark, na);
***************
*** 102,108 ****
}
int
! do_spawn(cmd)
char *cmd;
{
register char **a;
--- 115,121 ----
}
int
! do_spawn2(cmd, execf)
char *cmd;
{
register char **a;
***************
*** 132,138 ****
*s = '\0';
break;
}
! shell_cmd: return result(P_WAIT, spawnl(P_NOWAIT,shell,shell,copt,cmd,(char*)0));
}
}
New(402,Argv, (s - cmd) / 2 + 2, char*);
--- 145,153 ----
*s = '\0';
break;
}
! shell_cmd: if (execf)
! return spawnl(P_OVERLAY,shell,shell,copt,cmd,(char*)0);
! return result(P_WAIT, spawnl(P_WAIT,shell,shell,copt,cmd,(char*)0));
}
}
New(402,Argv, (s - cmd) / 2 + 2, char*);
***************
*** 148,154 ****
}
*a = Nullch;
if (Argv[0]) {
! rc = result(P_WAIT, spawnvp(P_NOWAIT,Argv[0],Argv));
if (rc < 0 && dowarn)
warn("Can't spawn \"%s\": %s", Argv[0], Strerror(errno));
} else
--- 163,172 ----
}
*a = Nullch;
if (Argv[0]) {
! if (execf)
! rc = spawnvp(P_OVERLAY,Argv[0],Argv);
! else
! rc = result(P_WAIT, spawnvp(P_NOWAIT,Argv[0],Argv));
if (rc < 0 && dowarn)
warn("Can't spawn \"%s\": %s", Argv[0], Strerror(errno));
} else
***************
*** 157,162 ****
--- 175,194 ----
return rc;
}
+ int
+ do_spawn(cmd)
+ char *cmd;
+ {
+ return do_spawn2(cmd, 0);
+ }
+
+ bool
+ do_exec(cmd)
+ char *cmd;
+ {
+ return do_spawn2(cmd, 1);
+ }
+
/*****************************************************************************/
#ifndef HAS_FORK
***************
*** 170,195 ****
#endif
/*****************************************************************************/
! /* not implemented in EMX 0.9a */
void * ctermid(x) { return 0; }
! #ifdef MYTTYNAME /* was not in emx0.9a */
! void * ttyname(x) { return 0; }
! #endif
! void * gethostent() { return 0; }
! void * getnetent() { return 0; }
! void * getprotoent() { return 0; }
! void * getservent() { return 0; }
! void sethostent(x) {}
! void setnetent(x) {}
! void setprotoent(x) {}
! void setservent(x) {}
! void endhostent(x) {}
! void endnetent(x) {}
! void endprotoent(x) {}
! void endservent(x) {}
/*****************************************************************************/
/* stat() hack for char/block device */
--- 202,274 ----
#endif
/*****************************************************************************/
! /* missing in malloc.c */
!
! void *
! calloc(size_t n, size_t s)
! {
! void *p;
!
! n *= s;
! p = malloc(n);
! if (p)
! memset(p, 0, n);
! return p;
! }
!
! /*****************************************************************************/
! /* not implemented in EMX 0.9b */
void * ctermid(x) { return 0; }
! /*****************************************************************************/
! /* my socket forwarders - EMX lib only provides static forwarders */
!
! static HMODULE htcp = 0;
! static void *
! tcp0(char *name)
! {
! static BYTE buf[20];
! PFN fcn;
! if (!htcp)
! DosLoadModule(buf, sizeof buf, "tcp32dll", &htcp);
! if (htcp && DosQueryProcAddr(htcp, 0, name, &fcn) == 0)
! return (void *) ((void * (*)(void)) fcn) ();
! return 0;
! }
!
! static void
! tcp1(char *name, int arg)
! {
! static BYTE buf[20];
! PFN fcn;
! if (!htcp)
! DosLoadModule(buf, sizeof buf, "tcp32dll", &htcp);
! if (htcp && DosQueryProcAddr(htcp, 0, name, &fcn) == 0)
! ((void (*)(int)) fcn) (arg);
! }
!
! void * gethostent() { return tcp0("GETHOSTENT"); }
! void * getnetent() { return tcp0("GETNETENT"); }
! void * getprotoent() { return tcp0("GETPROTOENT"); }
! void * getservent() { return tcp0("GETSERVENT"); }
! void sethostent(x) { tcp1("SETHOSTENT", x); }
! void setnetent(x) { tcp1("SETNETENT", x); }
! void setprotoent(x) { tcp1("SETPROTOENT", x); }
! void setservent(x) { tcp1("SETSERVENT", x); }
! void endhostent() { tcp0("ENDHOSTENT"); }
! void endnetent() { tcp0("ENDNETENT"); }
! void endprotoent() { tcp0("ENDPROTOENT"); }
! void endservent() { tcp0("ENDSERVENT"); }
!
! /*****************************************************************************/
! /* not implemented in C Set++ */
!
! #ifndef __EMX__
! int setuid(x) { errno = EINVAL; return -1; }
! int setgid(x) { errno = EINVAL; return -1; }
! #endif
/*****************************************************************************/
/* stat() hack for char/block device */
*** e:/perl5.002b3/os2/os2ish.h Tue Feb 20 13:52:32 1996
--- perl5/os2/os2ish.h Tue Feb 20 14:20:58 1996
***************
*** 4,10 ****
--- 4,12 ----
* This symbol, if defined, indicates that the ioctl() routine is
* available to set I/O characteristics
*/
+ #ifdef __EMX__
#define HAS_IOCTL /**/
+ #endif
/* HAS_UTIME:
* This symbol, if defined, indicates that the routine utime() is
***************
*** 12,18 ****
--- 14,22 ----
*/
#define HAS_UTIME /**/
+ #ifndef __IBMC__
#define HAS_KILL
+ #endif
#define HAS_WAIT
#ifndef SIGABRT
***************
*** 21,27 ****
--- 25,36 ----
#ifndef SIGILL
# define SIGILL 6 /* blech */
#endif
+
+ #ifdef __IBMC__
+ #define ABORT() abort();
+ #else
#define ABORT() kill(getpid(),SIGABRT);
+ #endif
#define BIT_BUCKET "/dev/null" /* Will this work? */
***************
*** 29,40 ****
_response(argcp, argvp); \
_wildcard(argcp, argvp); } while (0)
-
- #define PERL_SYS_INIT(argcp, argvp) do { \
- _response(argcp, argvp); \
- _wildcard(argcp, argvp); } while (0)
-
-
/*
* 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
--- 38,43 ----
***************
*** 47,60 ****
/*****************************************************************************/
#include <stdlib.h> /* before the following definitions */
#include <unistd.h> /* before the following definitions */
#define chdir _chdir2
#define getcwd _getcwd2
! /* This guy is needed for quick stdstd */
#if defined(USE_STDIO_PTR) && defined(STDIO_PTR_LVALUE) && defined(STDIO_CNT_LVALUE)
# define _filbuf _fill
/* Perl uses ungetc only with successful return */
--- 50,81 ----
/*****************************************************************************/
+ #ifdef __EMX__
+
#include <stdlib.h> /* before the following definitions */
#include <unistd.h> /* before the following definitions */
#define chdir _chdir2
#define getcwd _getcwd2
! #define OS2_STAT_HACK 1
!
! #else /* __IBMC__ */
!
! #define __EXTENDED__
!
! #include <fcntl.h>
! #include <io.h>
! #include <direct.h>
! #include <process.h>
!
! #define mkdir(x,y) _mkdir(x)
+ #define OS2_STAT_HACK 0
+
+ #endif /* __IBMC__ */
+
+ /* This guy is needed for quick stdstd */
#if defined(USE_STDIO_PTR) && defined(STDIO_PTR_LVALUE) && defined(STDIO_CNT_LVALUE)
# define _filbuf _fill
/* Perl uses ungetc only with successful return */
***************
*** 65,71 ****
#define OP_BINARY O_BINARY
! #define OS2_STAT_HACK 1
#if OS2_STAT_HACK
#define Stat(fname,bufptr) os2_stat((fname),(bufptr))
--- 86,92 ----
#define OP_BINARY O_BINARY
!
#if OS2_STAT_HACK
#define Stat(fname,bufptr) os2_stat((fname),(bufptr))
*** e:/perl5.002b3/perl.c Thu Feb 01 18:40:14 1996
--- perl5/perl.c Mon Feb 26 01:16:04 1996
***************
*** 1174,1180 ****
#endif
#ifdef OS2
fputs("OS/2 port Copyright (c) 1990, 1991, Raymond Chen, Kai Uwe Rommel\n"
! "Version 5 port Copyright (c) 1994-1995, Andreas Kaiser\n", stdout);
#endif
#ifdef atarist
fputs("atariST series port, ++jrb bammi@cadence.com\n", stdout);
--- 1174,1180 ----
#endif
#ifdef OS2
fputs("OS/2 port Copyright (c) 1990, 1991, Raymond Chen, Kai Uwe Rommel\n"
! "Version 5 port Copyright (c) 1994-1996, Andreas Kaiser\n", stdout);
#endif
#ifdef atarist
fputs("atariST series port, ++jrb bammi@cadence.com\n", stdout);