err = EGRATUITOUS;
err = ENOTTY;
fioctl (int fd,	int request,	int *arg){  error_t err;  *(volatile int *) arg = *arg;  switch (request)    {    default:      err = EGRATUITOUS;      break;    case FIONREAD:      {	mach_msg_type_number_t navail;	err = HURD_DPORT_USE (fd, __io_readable (port, &navail));	if (!err)	  *arg = (int) navail;      }      break;    case FIONBIO:      err = HURD_DPORT_USE (fd, (*arg ?				 __io_set_some_openmodes :				 __io_clear_some_openmodes)			    (port, O_NONBLOCK));      break;    case FIOASYNC:      err = HURD_DPORT_USE (fd, (*arg ?				 __io_set_some_openmodes :				 __io_clear_some_openmodes)			    (port, O_ASYNC));      break;    case FIOSETOWN:      err = HURD_DPORT_USE (fd, __io_mod_owner (port, *arg));      break;    case FIOGETOWN:      err = HURD_DPORT_USE (fd, __io_get_owner (port, arg));      break;    }  return err ? __hurd_fail (err) : 0;}