diff options
Diffstat (limited to 'elksemu')
-rw-r--r-- | elksemu/Makefile | 3 | ||||
-rw-r--r-- | elksemu/elks.c | 2 | ||||
-rw-r--r-- | elksemu/elks_sys.c | 11 |
3 files changed, 14 insertions, 2 deletions
diff --git a/elksemu/Makefile b/elksemu/Makefile index 5964353..2de8673 100644 --- a/elksemu/Makefile +++ b/elksemu/Makefile @@ -10,6 +10,9 @@ else CFLAGS=-O2 -fno-strength-reduce -Wall -idirafter . $(DEFS) endif +# Turn on elkemu's strace like facility. +# DEFS=-DDEBUG + # For gcc making a.out with a basically ELF compiler # CFLAGS=-O2 -fno-strength-reduce -b i486-linuxaout -N -s -static diff --git a/elksemu/elks.c b/elksemu/elks.c index 2c58f8e..c31e94f 100644 --- a/elksemu/elks.c +++ b/elksemu/elks.c @@ -234,7 +234,7 @@ void main(int argc, char *argv[], char *envp[]) setregid(rgid, egid); setreuid(ruid, euid); - dbprintf(("ELKSEMU 0.0.6 Alpha\n")); + dbprintf(("ELKSEMU 0.12.0\n")); elks_init(); /* The Linux vm will deal with not allocating the unused pages */ diff --git a/elksemu/elks_sys.c b/elksemu/elks_sys.c index 74afbf9..4cc4368 100644 --- a/elksemu/elks_sys.c +++ b/elksemu/elks_sys.c @@ -110,13 +110,22 @@ static int elks_read(int bx,int cx,int dx,int di,int si) bx,cx,dx)); if( bx >= 10000 && bx < 10000+DIRCOUNT) return elks_readdir(bx, cx, dx); + if( dx < 0 || dx > 1024 ) dx = 1024; return read(bx, ELKS_PTR(void, cx), dx); } #define sys_write elks_write static int elks_write(int bx,int cx,int dx,int di,int si) { - dbprintf(("write(%d, %d, %d)\n",bx,cx,dx)); + if( dx > 1024 || dx < 0 ) + { + dx = 1024; + dbprintf(("write(%d, %d, >%d)\n",bx,cx,dx)); + } + else + { + dbprintf(("write(%d, %d, %d)\n",bx,cx,dx)); + } return write(bx,ELKS_PTR(void, cx),dx); } |