some fixes: calloc was wrong; catch traps, and let divides

by 0 generate a signal, if on a unix machine
This commit is contained in:
ceriel 1989-02-20 18:01:33 +00:00
parent 8aee01de95
commit 30959cd73f
3 changed files with 44 additions and 1 deletions

View file

@ -1,5 +1,5 @@
/* $Header$ */
#define ALIGN(sz) (((sz) + (sizeof(long) - 1) / sizeof(long)) * sizeof(long))
#define ALIGN(sz) ((((sz) + (sizeof(long) - 1)) / sizeof(long)) * sizeof(long))
char *
calloc(nelem, elsize)
unsigned int nelem, elsize;

View file

@ -1,4 +1,5 @@
#
#include "em_abs.h"
/*
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
*
@ -43,6 +44,11 @@ _penvp
loi EM_PSIZE
lae _penvp
sti EM_PSIZE
#if unix && ! (em22 || em24 || em44)
lpi $_ctch_
sig
asp EM_PSIZE
#endif
lal EM_WSIZE+EM_PSIZE
loi EM_PSIZE
lal EM_WSIZE
@ -54,3 +60,31 @@ _penvp
lfr EM_WSIZE
cal $exit
end
#if unix && ! (em22 || em24 || em44)
exp $_ctch_
pro $_ctch_,0
lol 0
loc EIDIVZ
beq *1
lol 0
loc EFDIVZ
beq *1
bra *2
2
lol 0
trp
bra *3
1
loc 8
cal $getpid
lfr EM_WSIZE
cal $kill
asp 2*EM_WSIZE
3
lpi $_ctch_
sig
asp EM_WSIZE
rtt
end 0
#endif

View file

@ -0,0 +1,9 @@
int
rename(from, to)
char *from, *to;
{
(void) unlink(to);
if (link(from, to) < 0) return -1;
(void) unlink(from);
return 0;
}