home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * 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);
- }
-