/* * DClose.C */ #include "lib.h" void DClose(_chan) void *_chan; { CHANN *chan = (CHANN *)_chan; IOSTD ior; IOSTD *io; ior.io_Command = DNCMD_CLOSE; ior.io_Unit = (void *)chan->chan; ior.io_Offset = (long)chan; ior.io_Message.mn_ReplyPort = (PORT *)chan; PutMsg(chan->dnetport, (MSG *)&ior); ++chan->queued; chan->qlen = 0; WaitQueue(chan, &ior); while ((io = (IOSTD *)RemHead(&chan->rdylist)) || (io = (IOSTD *)GetMsg(&chan->port))) { io->io_Error = 1; ReplyMsg((MSG *)io); } DeleteChannel(chan); }