
/*
 *  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);
}

