home *** CD-ROM | disk | FTP | other *** search
- /* $XConsortium: FSClServ.c,v 1.2 91/05/13 15:11:23 gildea Exp $ */
-
- /* @(#)FSClServ.c 4.1 91/05/02
- * Copyright 1990 Network Computing Devices;
- * Portions Copyright 1987 by Digital Equipment Corporation and the
- * Massachusetts Institute of Technology
- *
- * Permission to use, copy, modify, and distribute this protoype software
- * and its documentation to Members and Affiliates of the MIT X Consortium
- * any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the names of Network Computing Devices, Digital or
- * MIT not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission.
- *
- * NETWORK COMPUTING DEVICES, DIGITAL AND MIT DISCLAIM ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES, DIGITAL OR MIT BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
- #include "FSlibint.h"
-
- extern FSServer *_FSHeadOfServerList;
-
- FSCloseServer(svr)
- FSServer *svr;
- {
- _FSExtension *ext;
- FSServer **sv = &_FSHeadOfServerList;
- FSServer *s = _FSHeadOfServerList;
- extern void _FSFreeQ();
-
- svr->flags |= FSlibServerClosing;
- FSSync(svr, 1); /* throw out pending events */
- ext = svr->ext_procs;
- while (ext) {
- if (ext->close_server != NULL)
- (*ext->close_server) (svr, &ext->codes);
- ext = ext->next;
- }
- _FSDisconnectServer(svr->fd);
- while (s != NULL) {
- if (s == svr) {
- *sv = s->next;
- _FSFreeServerStructure(svr);
- break;
- }
- sv = &(s->next);
- s = *sv;
- }
- if (_FSHeadOfServerList == NULL) {
- _FSFreeQ();
- }
- }
-