summaryrefslogtreecommitdiff
path: root/elksemu/elks_sys.c
diff options
context:
space:
mode:
Diffstat (limited to 'elksemu/elks_sys.c')
-rw-r--r--elksemu/elks_sys.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/elksemu/elks_sys.c b/elksemu/elks_sys.c
index 16a3cec..4b8187f 100644
--- a/elksemu/elks_sys.c
+++ b/elksemu/elks_sys.c
@@ -117,12 +117,14 @@ static int elks_read(int bx,int cx,int dx,int di,int si)
#define sys_write elks_write
static int elks_write(int bx,int cx,int dx,int di,int si)
{
+#ifdef TESTING
if( dx > 1024 || dx < 0 )
{
dx = 1024;
dbprintf(("write(%d, %d, >%d)\n",bx,cx,dx));
}
else
+#endif
{
dbprintf(("write(%d, %d, %d)\n",bx,cx,dx));
}
@@ -449,8 +451,8 @@ static int elks_execve(int bx,int cx,int dx,int di,int si)
if( is_elks )
{
argp[0]="/lib/elksemu";
- argp[1]=ELKS_PTR(char, bx);
- ct=2;
+ /* argp[1]=ELKS_PTR(char, bx); */
+ ct=1;
}
while(*bp)
argp[ct++]=ELKS_PTR(char, cx+ *bp++);
@@ -461,7 +463,10 @@ static int elks_execve(int bx,int cx,int dx,int di,int si)
envp[ct++]=ELKS_PTR(char, cx+ *bp++);
envp[ct]=0;
if( is_elks )
+ {
+ argp[1]=ELKS_PTR(char, bx);
execve(argp[0],argp,envp);
+ }
else
execve(ELKS_PTR(char, bx),argp,envp);
if( errno == ENOEXEC || errno == EACCES ) return -1;