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

📄 xtranslcl.c

📁 手写识别Chinput3.0.2源代码,可以在linux下开发手写板程序
💻 C
📖 第 1 页 / 共 4 页
字号:
		  0,0,0);	    break;	case XTRANS_OPEN_COTS_SERVER:	    ciptr->fd=LOCALtrans2devtab[i].devcotsopenserver(ciptr,port);	    break;	case XTRANS_OPEN_CLTS_SERVER:	    ciptr->fd=LOCALtrans2devtab[i].devcltsopenserver(ciptr,port);	    break;	default:	    PRMSG(1,"LocalOpenServer: Unknown Open type %d\n",		  type ,0,0);	}	if( ciptr->fd >= 0 ) {	    ciptr->priv=(char *)&LOCALtrans2devtab[i];	    ciptr->index=i;	    ciptr->flags=1;	    return ciptr;	}    }        xfree(ciptr);    return NULL;}#endif /* TRANS_SERVER */#ifdef TRANS_REOPENstatic XtransConnInfoTRANS(LocalReopenServer)(type, index, fd, port)int  type;int  index;int  fd;char *port;{    XtransConnInfo ciptr;    int stat;        PRMSG(2,"LocalReopenServer(%d,%d,%d)\n", type, index, fd);        if( (ciptr=(XtransConnInfo)xcalloc(1,sizeof(struct _XtransConnInfo))) == NULL )    {	PRMSG(1,"LocalReopenServer: calloc(1,%d) failed\n",	      sizeof(struct _XtransConnInfo),0,0 );	return NULL;    }        ciptr->fd = fd;    switch( type )    {    case XTRANS_OPEN_COTS_SERVER:	stat = LOCALtrans2devtab[index].devcotsreopenserver(ciptr,fd,port);	break;    case XTRANS_OPEN_CLTS_SERVER:	stat = LOCALtrans2devtab[index].devcltsreopenserver(ciptr,fd,port);	break;    default:	PRMSG(1,"LocalReopenServer: Unknown Open type %d\n",	  type ,0,0);    }    if( stat > 0 ) {	ciptr->priv=(char *)&LOCALtrans2devtab[index];	ciptr->index=index;	ciptr->flags=1;	return ciptr;    }        xfree(ciptr);    return NULL;}#endif /* TRANS_REOPEN *//* * This is the Local implementation of the X Transport service layer */#ifdef TRANS_CLIENTstatic XtransConnInfoTRANS(LocalOpenCOTSClient)(thistrans, protocol, host, port)Xtransport *thistrans;char *protocol;char *host;char *port;{    PRMSG(2,"LocalOpenCOTSClient(%s,%s,%s)\n",protocol,host,port);        return TRANS(LocalOpenClient)(XTRANS_OPEN_COTS_CLIENT, protocol, host, port);}#endif /* TRANS_CLIENT */#ifdef TRANS_SERVERstatic XtransConnInfoTRANS(LocalOpenCOTSServer)(thistrans, protocol, host, port)Xtransport *thistrans;char *protocol;char *host;char *port;{    char *typetocheck = NULL;    int found = 0;    char typebuf[TYPEBUFSIZE];    PRMSG(2,"LocalOpenCOTSServer(%s,%s,%s)\n",protocol,host,port);    /* Check if this local type is in the XLOCAL list */    TRANS(LocalInitTransports)("local");    typetocheck = workingXLOCAL;    while (typetocheck && !found) {	int j;	workingXLOCAL = strchr(workingXLOCAL, ':');	if (workingXLOCAL && *workingXLOCAL)	    *workingXLOCAL++ = '\0';	strncpy(typebuf, typetocheck, TYPEBUFSIZE);	for (j = 0; j < TYPEBUFSIZE; j++)	    if (isupper(typebuf[j]))		typebuf[j] = tolower(typebuf[j]);	if (!strcmp(thistrans->TransName, typebuf))	    found = 1;	typetocheck = workingXLOCAL;    }    TRANS(LocalEndTransports)();        if (!found) {	PRMSG(3,"LocalOpenCOTSServer: disabling %s\n",thistrans->TransName,0,0);	thistrans->flags |= TRANS_DISABLED;	return NULL;    }    return TRANS(LocalOpenServer)(XTRANS_OPEN_COTS_SERVER, protocol, host, port);}#endif /* TRANS_SERVER */#ifdef TRANS_CLIENTstatic XtransConnInfoTRANS(LocalOpenCLTSClient)(thistrans, protocol, host, port)Xtransport *thistrans;char *protocol;char *host;char *port;{    PRMSG(2,"LocalOpenCLTSClient(%s,%s,%s)\n",protocol,host,port);        return TRANS(LocalOpenClient)(XTRANS_OPEN_CLTS_CLIENT, protocol, host, port);}#endif /* TRANS_CLIENT */#ifdef TRANS_SERVERstatic XtransConnInfoTRANS(LocalOpenCLTSServer)(thistrans, protocol, host, port)Xtransport *thistrans;char *protocol;char *host;char *port;{    PRMSG(2,"LocalOpenCLTSServer(%s,%s,%s)\n",protocol,host,port);        return TRANS(LocalOpenServer)(XTRANS_OPEN_CLTS_SERVER, protocol, host, port);}#endif /* TRANS_SERVER */#ifdef TRANS_REOPENstatic XtransConnInfoTRANS(LocalReopenCOTSServer)(thistrans, fd, port)Xtransport *thistrans;int  	   fd;char	   *port;{    int index;    PRMSG(2,"LocalReopenCOTSServer(%d,%s)\n", fd, port, 0);        for(index=1;index<NUMTRANSPORTS;index++)    {	if( strcmp(thistrans->TransName,	    LOCALtrans2devtab[index].transname) == 0 )	    break;    }        if (index >= NUMTRANSPORTS)    {	return (NULL);    }    return TRANS(LocalReopenServer)(XTRANS_OPEN_COTS_SERVER,	index, fd, port);}static XtransConnInfoTRANS(LocalReopenCLTSServer)(thistrans, fd, port)Xtransport *thistrans;int  	   fd;char	   *port;{    int index;    PRMSG(2,"LocalReopenCLTSServer(%d,%s)\n", fd, port, 0);        for(index=1;index<NUMTRANSPORTS;index++)    {	if( strcmp(thistrans->TransName,	    LOCALtrans2devtab[index].transname) == 0 )	    break;    }        if (index >= NUMTRANSPORTS)    {	return (NULL);    }    return TRANS(LocalReopenServer)(XTRANS_OPEN_CLTS_SERVER,	index, fd, port);}#endif /* TRANS_REOPEN */staticTRANS(LocalSetOption)(ciptr, option, arg)XtransConnInfo ciptr;int option;int arg;{    PRMSG(2,"LocalSetOption(%d,%d,%d)\n",ciptr->fd,option,arg);        return -1;}#ifdef TRANS_SERVERstaticTRANS(LocalCreateListener)(ciptr, port)XtransConnInfo ciptr;char *port;{    PRMSG(2,"LocalCreateListener(%x->%d,%s)\n",ciptr,ciptr->fd,port);        return 0;}static XtransConnInfoTRANS(LocalAccept)(ciptr, status)XtransConnInfo ciptr;int	       *status;{    XtransConnInfo	newciptr;    LOCALtrans2dev	*transptr;        PRMSG(2,"LocalAccept(%x->%d)\n", ciptr, ciptr->fd,0);        transptr=(LOCALtrans2dev *)ciptr->priv;        if( (newciptr=(XtransConnInfo)xcalloc(1,sizeof(struct _XtransConnInfo)))==NULL )    {	PRMSG(1,"LocalAccept: calloc(1,%d) failed\n",	      sizeof(struct _XtransConnInfo),0,0 );	*status = TRANS_ACCEPT_BAD_MALLOC;	return NULL;    }        newciptr->fd=transptr->devaccept(ciptr,newciptr,status);        if( newciptr->fd < 0 )    {	xfree(newciptr);	return NULL;    }        newciptr->priv=(char *)transptr;    newciptr->index = ciptr->index;        *status = 0;    return newciptr;}#endif /* TRANS_SERVER */#ifdef TRANS_CLIENTstaticTRANS(LocalConnect)(ciptr, host, port)XtransConnInfo ciptr;char *host;char *port;{    PRMSG(2,"LocalConnect(%x->%d,%s)\n", ciptr, ciptr->fd, port);        return 0;}#endif /* TRANS_CLIENT */static intTRANS(LocalBytesReadable)(ciptr, pend )XtransConnInfo ciptr;BytesReadable_t *pend;{    PRMSG(2,"LocalBytesReadable(%x->%d,%x)\n", ciptr, ciptr->fd, pend);#if defined(ISC) || defined(SCO)    return ioctl(ciptr->fd, I_NREAD, (char *)pend);#else    return ioctl(ciptr->fd, FIONREAD, (char *)pend);#endif}static intTRANS(LocalRead)(ciptr, buf, size)XtransConnInfo ciptr;char *buf;int size;{    PRMSG(2,"LocalRead(%d,%x,%d)\n", ciptr->fd, buf, size );        return read(ciptr->fd,buf,size);}static intTRANS(LocalWrite)(ciptr, buf, size)XtransConnInfo ciptr;char *buf;int size;{    PRMSG(2,"LocalWrite(%d,%x,%d)\n", ciptr->fd, buf, size );        return write(ciptr->fd,buf,size);}static intTRANS(LocalReadv)(ciptr, buf, size)XtransConnInfo 	ciptr;struct iovec 	*buf;int 		size;{    PRMSG(2,"LocalReadv(%d,%x,%d)\n", ciptr->fd, buf, size );        return READV(ciptr,buf,size);}static intTRANS(LocalWritev)(ciptr, buf, size)XtransConnInfo 	ciptr;struct iovec 	*buf;int 		size;{    PRMSG(2,"LocalWritev(%d,%x,%d)\n", ciptr->fd, buf, size );        return WRITEV(ciptr,buf,size);}static intTRANS(LocalDisconnect)(ciptr)XtransConnInfo ciptr;{    PRMSG(2,"LocalDisconnect(%x->%d)\n", ciptr, ciptr->fd, 0);        return 0;}static intTRANS(LocalClose)(ciptr)XtransConnInfo ciptr;{    struct sockaddr_un      *sockname=(struct sockaddr_un *) ciptr->addr;    char    path[200]; /* > sizeof sun_path +1 */    int	ret;        PRMSG(2,"LocalClose(%x->%d)\n", ciptr, ciptr->fd ,0);        ret=close(ciptr->fd);        if(ciptr->flags       && sockname       && sockname->sun_family == AF_UNIX       && sockname->sun_path[0] )    {	strncpy(path,sockname->sun_path,		ciptr->addrlen-sizeof(sockname->sun_family));	unlink(path);    }        return ret;}static intTRANS(LocalCloseForCloning)(ciptr)XtransConnInfo ciptr;{    int ret;    PRMSG(2,"LocalCloseForCloning(%x->%d)\n", ciptr, ciptr->fd ,0);        /* Don't unlink path */    ret=close(ciptr->fd);        return ret;}/* * MakeAllCOTSServerListeners() will go through the entire Xtransports[] * array defined in Xtrans.c and try to OpenCOTSServer() for each entry. * We will add duplicate entries to that table so that the OpenCOTSServer() * function will get called once for each type of local transport.  * * The TransName is in lowercase, so it will never match during a normal * call to SelectTransport() in Xtrans.c. */Xtransport	TRANS(LocalFuncs) = {	/* Local Interface */	"local",	TRANS_ALIAS | TRANS_LOCAL,#ifdef TRANS_CLIENT	TRANS(LocalOpenCOTSClient),#endif /* TRANS_CLIENT */#ifdef TRANS_SERVER	TRANS(LocalOpenCOTSServer),#endif /* TRANS_SERVER */#ifdef TRANS_CLIENT	TRANS(LocalOpenCLTSClient),#endif /* TRANS_CLIENT */#ifdef TRANS_SERVER	TRANS(LocalOpenCLTSServer),#endif /* TRANS_SERVER */#ifdef TRANS_REOPEN	TRANS(LocalReopenCOTSServer),	TRANS(LocalReopenCLTSServer),#endif	TRANS(LocalSetOption),#ifdef TRANS_SERVER	TRANS(LocalCreateListener),	NULL,					/* ResetListener */	TRANS(LocalAccept),#endif /* TRANS_SERVER */#ifdef TRANS_CLIENT	TRANS(LocalConnect),#endif /* TRANS_CLIENT */	TRANS(LocalBytesReadable),	TRANS(LocalRead),	TRANS(LocalWrite),	TRANS(LocalReadv),	TRANS(LocalWritev),	TRANS(LocalDisconnect),	TRANS(LocalClose),	TRANS(LocalCloseForCloning),};Xtransport	TRANS(PTSFuncs) = {	/* Local Interface */	"pts",	TRANS_LOCAL,#ifdef TRANS_CLIENT	TRANS(LocalOpenCOTSClient),#endif /* TRANS_CLIENT */#ifdef TRANS_SERVER	TRANS(LocalOpenCOTSServer),#endif /* TRANS_SERVER */#ifdef TRANS_CLIENT	TRANS(LocalOpenCLTSClient),#endif /* TRANS_CLIENT */#ifdef TRANS_SERVER	TRANS(LocalOpenCLTSServer),#endif /* TRANS_SERVER */#ifdef TRANS_REOPEN	TRANS(LocalReopenCOTSServer),	TRANS(LocalReopenCLTSServer),#endif	TRANS(LocalSetOption),#ifdef TRANS_SERVER	TRANS(LocalCreateListener),	NULL,					/* ResetListener */	TRANS(LocalAccept),#endif /* TRANS_SERVER */#ifdef TRANS_CLIENT	TRANS(LocalConnect),#endif /* TRANS_CLIENT */	TRANS(LocalBytesReadable),	TRANS(LocalRead),	TRANS(LocalWrite),	TRANS(LocalReadv),	TRANS(LocalWritev),	TRANS(LocalDisconnect),	TRANS(LocalClose),	TRANS(LocalCloseForCloning),};Xtransport	TRANS(NAMEDFuncs) = {	/* Local Interface */	"named",	TRANS_LOCAL,#ifdef TRANS_CLIENT	TRANS(LocalOpenCOTSClient),#endif /* TRANS_CLIENT */#ifdef TRANS_SERVER	TRANS(LocalOpenCOTSServer),#endif /* TRANS_SERVER */#ifdef TRANS_CLIENT	TRANS(LocalOpenCLTSClient),#endif /* TRANS_CLIENT */#ifdef TRANS_SERVER	TRANS(LocalOpenCLTSServer),#endif /* TRANS_SERVER */#ifdef TRANS_REOPEN	TRANS(LocalReopenCOTSServer),	TRANS(LocalReopenCLTSServer),#endif	TRANS(LocalSetOption),#ifdef TRANS_SERVER	TRANS(LocalCreateListener),	NULL,					/* ResetListener */	TRANS(LocalAccept),#endif /* TRANS_SERVER */#ifdef TRANS_CLIENT	TRANS(LocalConnect),#endif /* TRANS_CLIENT */	TRANS(LocalBytesReadable),	TRANS(LocalRead),	TRANS(LocalWrite),	TRANS(LocalReadv),	TRANS(LocalWritev),	TRANS(LocalDisconnect),	TRANS(LocalClose),	TRANS(LocalCloseForCloning),};Xtransport	TRANS(ISCFuncs) = {	/* Local Interface */	"isc",	TRANS_LOCAL,#ifdef TRANS_CLIENT	TRANS(LocalOpenCOTSClient),#endif /* TRANS_CLIENT */#ifdef TRANS_SERVER	TRANS(LocalOpenCOTSServer),#endif /* TRANS_SERVER */#ifdef TRANS_CLIENT	TRANS(LocalOpenCLTSClient),#endif /* TRANS_CLIENT */#ifdef TRANS_SERVER	TRANS(LocalOpenCLTSServer),#endif /* TRANS_SERVER */#ifdef TRANS_REOPEN	TRANS(LocalReopenCOTSServer),	TRANS(LocalReopenCLTSServer),#endif	TRANS(LocalSetOption),#ifdef TRANS_SERVER	TRANS(LocalCreateListener),	NULL,					/* ResetListener */	TRANS(LocalAccept),#endif /* TRANS_SERVER */#ifdef TRANS_CLIENT	TRANS(LocalConnect),#endif /* TRANS_CLIENT */	TRANS(LocalBytesReadable),	TRANS(LocalRead),	TRANS(LocalWrite),	TRANS(LocalReadv),	TRANS(LocalWritev),	TRANS(LocalDisconnect),	TRANS(LocalClose),	TRANS(LocalCloseForCloning),};Xtransport	TRANS(SCOFuncs) = {	/* Local Interface */	"sco",	TRANS_LOCAL,#ifdef TRANS_CLIENT	TRANS(LocalOpenCOTSClient),#endif /* TRANS_CLIENT */#ifdef TRANS_SERVER	TRANS(LocalOpenCOTSServer),#endif /* TRANS_SERVER */#ifdef TRANS_CLIENT	TRANS(LocalOpenCLTSClient),#endif /* TRANS_CLIENT */#ifdef TRANS_SERVER	TRANS(LocalOpenCLTSServer),#endif /* TRANS_SERVER */#ifdef TRANS_REOPEN	TRANS(LocalReopenCOTSServer),	TRANS(LocalReopenCLTSServer),#endif	TRANS(LocalSetOption),#ifdef TRANS_SERVER	TRANS(LocalCreateListener),	NULL,					/* ResetListener */	TRANS(LocalAccept),#endif /* TRANS_SERVER */#ifdef TRANS_CLIENT	TRANS(LocalConnect),#endif /* TRANS_CLIENT */	TRANS(LocalBytesReadable),	TRANS(LocalRead),	TRANS(LocalWrite),	TRANS(LocalReadv),	TRANS(LocalWritev),	TRANS(LocalDisconnect),	TRANS(LocalClose),	TRANS(LocalCloseForCloning),};

⌨️ 快捷键说明

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