⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ndet_p_death.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef	lint#ifdef sccsstatic	char sccsid[] = "@(#)ndet_p_death.c 1.1 92/07/30 Copyr 1985 Sun Micro";#endif#endif/* * Copyright (c) 1985 by Sun Microsystems, Inc. *//* * Ndet_p_death.c - Notify_post_destroy implementation. */#include <sunwindow/ntfy.h>#include <sunwindow/ndet.h>#include <sunwindow/ndis.h>extern Notify_errornotify_post_destroy(nclient, status, when)	Notify_client nclient;	Destroy_status status;	Notify_event_type when;{	NTFY_ENUM ndet_immediate_destroy();	NTFY_ENUM enum_code;	register NTFY_CLIENT *client;	register NTFY_CONDITION *condition;	Notify_error return_code = NOTIFY_OK;	/* Check arguments */	if (ndet_check_status(status))		return(notify_errno);	NTFY_BEGIN_CRITICAL;	/* Find client */	if ((client = ntfy_find_nclient(ndet_clients, nclient,            &ndet_client_latest)) == NTFY_CLIENT_NULL) {		ntfy_set_errno(NOTIFY_UNKNOWN_CLIENT);		goto Error;	}	/* Find condition that matches type */	if ((condition = ntfy_find_condition(client->conditions, NTFY_DESTROY,	    &(client->condition_latest), NTFY_DATA_NULL, NTFY_IGNORE_DATA)) ==	    NTFY_CONDITION_NULL) {		ntfy_set_errno(NOTIFY_NO_CONDITION);		goto Error;	}	if (when == NOTIFY_IMMEDIATE) {		/* Prepare to dispatch event */		ntfy_set_errno(NOTIFY_OK);		enum_code = ndet_immediate_destroy(client, condition,		    (NTFY_ENUM_DATA)status);		/* If checking then set notify_errno */		if (status == DESTROY_CHECKING) {			if (enum_code == NTFY_ENUM_TERM)				return_code = NOTIFY_DESTROY_VETOED;		} else {			/* remove client (if client hasn't done so himself) */			if (ntfy_find_nclient(ndet_clients, nclient,			    &ndet_client_latest) != NTFY_CLIENT_NULL)				return_code = notify_remove(nclient);		}		NTFY_END_CRITICAL;	} else {		condition->data.status = status;		if (ndis_enqueue(client, condition) != NOTIFY_OK) {			ntfy_set_errno(NOTIFY_INTERNAL_ERROR);			goto Error;		}		NTFY_END_CRITICAL;		/* Dispatch the notification if not in notifier loop */		if (!(ndet_flags & NDET_STARTED) &&		    (ndis_dispatch() != NOTIFY_OK))				return(notify_errno);	}	return(return_code);Error:	NTFY_END_CRITICAL;	return(notify_errno);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -