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

📄 sel_appl.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lint#ifdef sccsstatic	char sccsid[] = "@(#)sel_appl.c 1.1 92/07/30 Copyr 1985 Sun Micro";#endif#endif#include <suntool/selection_impl.h>#include <sunwindow/attr.h>#include <sunwindow/rect.h>#include <varargs.h>static void	seln_null_terminate_buffer();static void	seln_init_request_buffer();extern		char *malloc();/* *	Generic request to another holder *//* VARARGS1 */Seln_request *seln_ask(holder, va_alist)Seln_holder          *holder;va_dcl{    static Seln_request  *buffer;    va_list	valist;    if (buffer == (Seln_request *) NULL) {	buffer = (Seln_request *) (LINT_CAST(		malloc ((unsigned)(sizeof(Seln_request)))));	if (buffer == (Seln_request *) NULL) {	    (void)fprintf(stderr,		    "Couldn't malloc request buffer (no swap space?)\n");	    return &seln_null_request;	}    }    if (holder->state == SELN_NONE) {	return &seln_null_request;    }    va_start(valist);    if (attr_make((char **) (LINT_CAST(buffer->data)),		  sizeof (buffer->data) /sizeof (char *),		  valist) == (char **) 0) {	complain("Selection request too big -- not sent");	va_end(valist);	return &seln_null_request;    }    va_end(valist);    seln_init_request_buffer(buffer, holder);    if (seln_request(holder, buffer) == SELN_SUCCESS) {	return buffer;    } else {	return &seln_null_request;    }}/* VARARGS2 */voidseln_init_request(buffer, holder, va_alist)Seln_request         *buffer;Seln_holder          *holder;va_dcl{    va_list	valist;        va_start(valist);    if (attr_make((char **) (LINT_CAST(buffer->data)),		  sizeof(buffer->data) / sizeof(char *),		  valist) == (char **) 0) {	complain("Selection request too big -- not sent");	va_end(valist);	return;    }    va_end(valist);    seln_init_request_buffer(buffer, holder);}/* VARARGS3 */Seln_resultseln_query(holder, reader, context, va_alist)Seln_holder          *holder;Seln_result         (*reader)();char                 *context;va_dcl{    static Seln_request  *buffer;    va_list	valist;    if (buffer == (Seln_request *) NULL) {	buffer = (Seln_request *) (LINT_CAST(		malloc ((unsigned)(sizeof(Seln_request)))));	if (buffer == (Seln_request *) NULL) {	    (void)fprintf(stderr,		    "Couldn't malloc request buffer (no swap space?)\n");	    return SELN_FAILED;	}    }    if (holder->state == SELN_NONE) {	return SELN_FAILED;    }    va_start(valist);    if (attr_make((char **) (LINT_CAST(buffer->data)),		  sizeof(buffer->data) / sizeof(char *),		  valist) == (char **) 0) {	complain("Selection request too big -- not sent");	va_end(valist);	return SELN_FAILED;    }    va_end(valist)    seln_init_request_buffer(buffer, holder);    buffer->requester.consume = reader;    buffer->requester.context = context;    return seln_request(holder, buffer);}static voidseln_init_request_buffer(buffer, holder)    Seln_request	 *buffer;    Seln_holder          *holder;{    buffer->buf_size = attr_count((char **)(LINT_CAST(buffer->data))) *     	sizeof(char *);    buffer->rank = holder->rank;    buffer->addressee = holder->access.client;    buffer->replier = 0;    buffer->requester.consume = 0;    buffer->requester.context = 0;}

⌨️ 快捷键说明

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