We should handle interrupts during system calls differently, else the user can't escape from them!

    int system_read(fd,buffer,len)
    int fd;
    M2_string buffer;
    int len;
    {
	 if ((int)buffer->len < len) fatalarrayindex(len,buffer->len,__FILE__,__LINE__,-1);
	 if (len == 0) return 0;
	 return read(fd,buffer->array,len);
	 }

    int system_read_1(fd,buffer,len,offset)
    int fd;
    M2_string buffer;
    int len;
    int offset;
    {
	 if (offset < 0) {
	      fatalarrayindex(offset,buffer->len,__FILE__,__LINE__,-1);
	      }
	 if ((int)buffer->len < len+offset) {
	      fatalarrayindex(len+offset,buffer->len,__FILE__,__LINE__,-1);
	      }
	 if (len == 0) return 0;
	 return read(fd,buffer->array+offset,len);
	 }
