/* * DGetIoctl.C */ #include "lib.h" short DGetIoctl(_chan, pval, paux) void *_chan; short *pval; char *paux; { CHANN *chan = (CHANN *)_chan; IOSTD *ior; short cmd = -1; if ((ior = (IOSTD *)GetHead(&chan->rdylist)) || (ior = (IOSTD *)GetHead(&chan->port.mp_MsgList))) { if (ior->io_Command == DNCMD_IOCTL) { CIOCTL *cio = (CIOCTL *)ior->io_Data; cmd = cio->cmd; *pval = (cio->valh << 8) | cio->vall; *paux = cio->valaux; Forbid(); Remove((NODE *)ior); ReplyMsg((MSG *)ior); Permit(); } } FixSignal(chan); if (chan->eof) SetSignal(1 << chan->port.mp_SigBit, 1 << chan->port.mp_SigBit); return(cmd); }