亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xtransos2.c

?? 手寫識別Chinput源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* $XFree86: xc/lib/xtrans/Xtransos2.c,v 3.5 1997/01/28 10:53:32 dawes Exp $ *//* * (c) Copyright 1996 by Sebastien Marineau and Holger Veit *			<marineau@genie.uottawa.ca> *                      <Holger.Veit@gmd.de> * * Permission is hereby granted, free of charge, to any person obtaining a  * copy of this software and associated documentation files (the "Software"),  * to deal in the Software without restriction, including without limitation  * the rights to use, copy, modify, merge, publish, distribute, sublicense,  * and/or sell copies of the Software, and to permit persons to whom the  * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. *  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL  * HOLGER VEIT  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE  * SOFTWARE. *  * Except as contained in this notice, the name of Sebastien Marineau or Holger Veit shall not be * used in advertising or otherwise to promote the sale, use or other dealings * in this Software without prior written authorization from Holger Veit or Sebastien Marineau. * *//* Implementation of the OS/2 local pipe transport layer */#define INCL_DOSNMPIPES#define INCL_DOSPROCESS#define INCL_DOSERRORS#define INCL_DOSFILEMGR#undef BYTE#undef BOOL#include <os2.h>#ifdef XSERV_textern HEV hPipeSem;BOOL init_server_pipes();#endif/************************************************************************* * Independent Layer *************************************************************************/#ifdef TRANS_CLIENTstatic XtransConnInfoTRANS(Os2OpenClient)(thistrans, protocol, host, port)Xtransport *thistrans;char *protocol;char *host;char *port;{	APIRET rc;	HFILE hfd,hServer;	ULONG action,byteWritten,State;	char pipename[256],clientname[256];        char server_string[256];        struct sockaddr *addr_name;        unsigned char pipe_len;	XtransConnInfo ciptr;        static int unique_id=0;        int i,namelen,try;	PRMSG(2,"Os2OpenClient(%s,%s,%s)\n",protocol,host,port);	/* test, whether the host is really local, i.e. either	 * "os2" or "local"	 */	if (strcmp(protocol,"os2") && strcmp(protocol,"local")) {		PRMSG (1,			"Os2OpenClient: Cannot connect to non-local host %s\n",			host, 0, 0);		return NULL;	}   /* make the pipename */    if (port && *port ) {	if( *port == '/' ) { /* A full pathname */		(void) sprintf(pipename, "\\PIPE\\X\\%s,", port);	    } else {		(void) sprintf(pipename, "%s%s", "\\PIPE\\X\\xf86.", port);	    }    } else {	(void) sprintf(pipename, "\\PIPE\\X\\xfree86"); }    PRMSG(5, "Os2OpenClient: Creating pipe %s\n",pipename, 0,0 );	/* make a connection entry */		if( (ciptr=(XtransConnInfo)xcalloc(1,sizeof(struct _XtransConnInfo))) == NULL ) {		PRMSG(1,"Os2OpenClient: calloc(1,%d) failed\n",			sizeof(struct _XtransConnInfo),0,0 );		return NULL;	}	/* open the pipe. Try ten times before giving up at 500ms intervals*/    try = 0;    do {	rc = DosOpen(pipename,&hServer, &action, 0,		FILE_NORMAL, FILE_OPEN,		OPEN_ACCESS_WRITEONLY | OPEN_SHARE_DENYWRITE,		(PEAOP2)NULL);        if(rc == 0) break;	if (try >=10) {		PRMSG(1,"Os2OpenClient: Open server pipe %s failed, rc=%d\n",			pipename,rc,0 );		PRMSG(1,"\tProbable causes: either the XServer is not running, or has not started properly,\n",			0,0,0 );		PRMSG(1,"\tor the DISPLAY variable is set incorrectly.\n",			0,0,0 );		xfree(ciptr);		return NULL;	    }       try ++;       DosSleep(500);       } while (rc != 0);/* OK, now we are talking to the server. Generate a unique pipe name and pass it to * the server. Make the pipe and wait for server to connect */   sprintf(clientname,"\\PIPE\\X\\%d.%d",getpid(),unique_id++);    rc = DosCreateNPipe (clientname, &hfd,                       NP_NOINHERIT | NP_ACCESS_DUPLEX,                       1 | NP_NOWAIT | NP_TYPE_BYTE | NP_READMODE_BYTE,                       16384, 16384, 0);   if (rc != 0){        PRMSG(1, "Os2OpenClient: Unable to create pipe %s\n", pipename,0,0 );	DosClose(hfd);        pipe_len=0;        DosWrite(hServer,&pipe_len,1,&byteWritten);        DosClose(hServer);        xfree(ciptr);	return(NULL);    } /* Connect to the pipe. */  rc = DosConnectNPipe (hfd);  if (rc != 0 && rc != ERROR_PIPE_NOT_CONNECTED)    {        PRMSG(1, "Os2OpenClient: Unable to connect to pipe %s\n", pipename,0,0 );        DosClose (hfd);        DosClose(hServer);        xfree(ciptr);        return (NULL);    }/* Now write name to server on hServer */        server_string[0]=(char) strlen(clientname)+1;        strcpy(&server_string[1],clientname);        rc = DosWrite(hServer,server_string,(ULONG)server_string[0]+1,&byteWritten);        if(rc != 0){  /* Could not write to server pipe? */           PRMSG(1, "Os2OpenClient: Error writing to server pipe, handle=%d, rc=%d, w=%d\n",                hServer,rc,byteWritten );           DosClose(hServer);           DosClose(hfd);           xfree(ciptr);           return(NULL);           }      PRMSG (5, "Os2OpenCLient: Wrote pipename %s to server; len %d written %d \n",        &server_string[1],server_string[0]+1,byteWritten);/* The server will respond by opening the pipe. Wait for that for 30 secs */        i=0;        DosSleep(50);  /* Give it time to catch up but minimize race condition*/        rc = DosConnectNPipe(hfd);        while((rc == ERROR_PIPE_NOT_CONNECTED)&&(i++<60)) {                DosSleep(500);                rc = DosConnectNPipe(hfd);                }        if(rc != 0){  /* Server has not responded! */           PRMSG(1, "Os2OpenClient: Timeout on wait for server response, handle=%d, rc=%d\n",hServer,rc,0 );           PRMSG(1, "\tProbable cause: the XServer has exited or crashed while the connection was being established\n",0,0,0 );           PRMSG(1, "\tor the XServer is too busy to respond.\n",0,0,0 );           DosClose(hServer);           DosClose(hfd);           xfree(ciptr);           return(NULL);           }/* OK, the server has connected! Fill-in the info and return */        DosClose(hServer);/* Last check: make sure client is connected! */        rc = DosQueryNPHState(hfd,&State);        if(rc != 0){  /* Client is not connected! */           PRMSG(1, "Os2OpenClient: Client pipe does not appear connected. rc=%d, h=%d\n",rc,hfd,0 );           PRMSG(1, "\tProbable cause: the XServer has just exited.\n",0,0,0 );           DosClose(hfd);           xfree(ciptr);           return(NULL);           }        namelen=sizeof(struct sockaddr);        if ((ciptr->addr = (char *) xalloc (namelen)) == NULL)          {                PRMSG (1, "Os2OpenClient: Can't allocate space for the addr\n",	        0, 0, 0);                DosClose(hfd);                xfree(ciptr);                return(NULL);           }        ciptr->addrlen = namelen;        ((struct sockaddr *)ciptr->addr)->sa_family = AF_UNIX;        strcpy(((struct sockaddr *)ciptr->addr)->sa_data, "local");        if ((ciptr->peeraddr = (char *) xalloc (namelen)) == NULL)          {                PRMSG (1, "Os2OpenCLient: Can't allocate space for the addr\n",	        0, 0, 0);                DosClose(hfd);                xfree(ciptr->addr);                xfree(ciptr);                return(NULL);           }       ciptr->peeraddrlen = namelen;       ((struct sockaddr *)ciptr->peeraddr)->sa_family = AF_UNIX;       strcpy (((struct sockaddr *)ciptr->peeraddr)->sa_data,"local");       PRMSG (5, "Os2OpenCLient: Filled in struct: len %d %d name %s\n",                ciptr->addrlen,ciptr->peeraddrlen,((struct sockaddr *)ciptr->peeraddr)->sa_data);        ciptr->index=hfd;        ciptr->family=AF_UNIX;        if((ciptr->fd=_imphandle(hfd))<0){           PRMSG(1, "Os2OpenClient: Could not import the pipe handle into EMX\n",0,0,0 );           PRMSG(1, "\tProbable cause: EMX has run out of free file handles.\n",0,0,0 );           DosClose(hfd);           xfree(ciptr->addr);           xfree(ciptr->peeraddr);           xfree(ciptr);           return(NULL);           }    PRMSG(5, "Os2OpenClient: pipe handle %d EMX handle %d\n",ciptr->index,ciptr->fd,0 );        fcntl(ciptr->fd,F_SETFL,O_NDELAY);        fcntl(ciptr->fd,F_SETFD,FD_CLOEXEC);	return ciptr;}#endif /* TRANS_CLIENT */#ifdef TRANS_SERVERstatic XtransConnInfoTRANS(Os2OpenServer)(thistrans, protocol, host, port)Xtransport *thistrans;char *protocol;char *host;char *port;{   APIRET rc;   HFILE hfd;   ULONG action;   char pipename[256];   struct sockaddr *addr_name;   XtransConnInfo ciptr;   int namelen;#ifdef XSERV_t    if (! init_server_pipes()) return(NULL);#endif    PRMSG(2,"Os2OpenServer(%s,%s,%s)\n",protocol,host,port);   if( (ciptr=(XtransConnInfo)xcalloc(1,sizeof(struct _XtransConnInfo))) == NULL )    {	PRMSG(1,"Os2OpenServer: xcalloc(1,%d) failed\n",	      sizeof(struct _XtransConnInfo),0,0 );	return NULL;    }    if (port && *port ) {	if( *port == '/' ) { /* A full pathname */		(void) sprintf(pipename, "\\PIPE\\X\\%s", port);	    } else {		(void) sprintf(pipename, "%s%s", "\\PIPE\\X\\xf86.", port);	    }    } else {	(void) sprintf(pipename, "\\PIPE\\X\\xfree86");    }    PRMSG(5, "Os2OpenServer: Creating pipe %s\n",pipename, 0,0 );   rc = DosCreateNPipe (pipename, &hfd,                       NP_NOINHERIT | NP_ACCESS_INBOUND,                       1 | NP_NOWAIT | NP_TYPE_BYTE | NP_READMODE_BYTE,                       0, 8192, 0);   if (rc != 0){        PRMSG(1, "Os2OpenServer: Unable to create pipe %s, rc=%d\n", pipename,rc,0 );        PRMSG(1, "\tProbable cause: there is already another XServer running on display :%s\n",port,0,0 );	DosClose(hfd);        xfree(ciptr);	return(NULL);    } /* Connect to the pipe. */  rc = DosConnectNPipe (hfd);  if (rc != 0 && rc != ERROR_PIPE_NOT_CONNECTED)    {        PRMSG(1, "Os2OpenServer: Unable to connect to pipe %s\n", pipename,0,0 );        DosClose (hfd);        xfree(ciptr);        return (NULL);    }/* Pipe is now connected and waiting for client connect *//*** Put in info ***/        namelen=sizeof(struct sockaddr);        if ((ciptr->addr = (char *) xalloc (namelen)) == NULL)          {                PRMSG (1, "Os2OpenServer: Can't allocate space for the addr\n",	        0, 0, 0);                DosClose(hfd);                xfree(ciptr);                return(NULL);           }        ciptr->addrlen = namelen;        ((struct sockaddr *)ciptr->addr)->sa_family = AF_UNIX;        strcpy (((struct sockaddr *)ciptr->addr)->sa_data, "local");        if ((ciptr->peeraddr = (char *) xalloc (namelen)) == NULL)          {                PRMSG (1, "Os2OpenServer: Can't allocate space for the addr\n",	        0, 0, 0);                DosClose(hfd);                xfree(ciptr->addr);                xfree(ciptr);                return(NULL);           }       ciptr->peeraddrlen = namelen;       ((struct sockaddr *)ciptr->peeraddr)->sa_family = AF_UNIX;       strcpy(((struct sockaddr *)ciptr->peeraddr)->sa_data,"local");           PRMSG (5, "Os2OpenServer: Filled in struct: len %d %d name %s\n",                ciptr->addrlen,ciptr->peeraddrlen,((struct sockaddr *)ciptr->peeraddr)->sa_data);    ciptr->index=hfd; /* Save this for later use in this unused member of struct */    ciptr->flags=1;     /* Listener */    ciptr->family=AF_UNIX;    if((ciptr->fd=_imphandle(hfd))<0){       DosClose(hfd);       xfree(ciptr->addr);       xfree(ciptr->peeraddr);       xfree(ciptr);       return(NULL);       }    PRMSG(5, "Os2OpenServer: Pipe handle %d EMX handle %d",ciptr->index,ciptr->fd,0 );#ifdef XSERV_t/* Attach the pipe sem to the pipe. Use handle index as key */    rc = DosSetNPipeSem(ciptr->fd, (HSEM)hPipeSem, ciptr->fd);    if (rc){        PRMSG(1, "Os2OpenCOTSServer: Could not attach sem %d to pipe %d, rc=%d\n",                 hPipeSem,ciptr->fd,rc);        DosClose(ciptr->fd);        xfree(ciptr->addr);        xfree(ciptr->peeraddr);        xfree(ciptr);         return(NULL);        }#endif    fcntl(ciptr->fd,F_SETFL,O_NDELAY);    fcntl(ciptr->fd,F_SETFD,FD_CLOEXEC);    return(ciptr);}#endif /* TRANS_SERVER */#ifdef TRANS_CLIENTstatic XtransConnInfoTRANS(Os2OpenCLTSClient)(thistrans, protocol, host, port)Xtransport *thistrans;char *protocol;char *host;char *port;{	PRMSG(2,"Os2OpenCLTSClient(%s,%s,%s)\n",protocol,host,port);	return TRANS(Os2OpenClient)(thistrans, protocol, host, port);}#endif /* TRANS_CLIENT */#ifdef TRANS_CLIENTstatic XtransConnInfoTRANS(Os2OpenCOTSClient)(thistrans, protocol, host, port)Xtransport *thistrans;char *protocol;char *host;char *port;{	PRMSG(2,"Os2OpenCOTSClient(%s,%s,%s)\n",protocol,host,port);	return TRANS(Os2OpenClient)(thistrans, protocol, host, port);}#endif /* TRANS_CLIENT */#ifdef TRANS_SERVERstatic XtransConnInfoTRANS(Os2OpenCLTSServer)(thistrans, protocol, host, port)Xtransport *thistrans;char *protocol;char *host;char *port;{	PRMSG(2,"Os2OpenCLTSServer(%s,%s,%s)\n",protocol,host,port);	return TRANS(Os2OpenServer)(thistrans, protocol, host, port);}#endif /* TRANS_SERVER */#ifdef TRANS_SERVERstatic XtransConnInfoTRANS(Os2OpenCOTSServer)(thistrans, protocol, host, port)Xtransport *thistrans;char *protocol;char *host;char *port;{	PRMSG(2,"Os2OpenCOTSServer(%s,%s,%s)\n",protocol,host,port);	return TRANS(Os2OpenServer)(thistrans, protocol, host, port);}#endif /* TRANS_SERVER */#ifdef TRANS_REOPENstatic XtransConnInfoTRANS(Os2ReopenCOTSServer)(thistrans, fd, port)Xtransport *thistrans;int  	   fd;char	   *port;{    XtransConnInfo ciptr;    char addr_name[256];    int namelen;        PRMSG(2,"Os2ReopenCOTSServer(%d,%s)\n", fd, port, 0);        if( (ciptr=(XtransConnInfo)xcalloc(1,sizeof(struct _XtransConnInfo))) == NULL )    {	PRMSG(1,"Os2ReopenCOTSServer: xcalloc(1,%d) failed\n",	      sizeof(struct _XtransConnInfo),0,0 );	return NULL;    }            strcpy(addr_name,"local");        namelen=sizeof(addr_name);        if ((ciptr->addr = (char *) xalloc (namelen)) == NULL)          {                PRMSG (1, "Os2ReopenCOTSServer: Can't allocate space for the addr\n",	        0, 0, 0);                xfree(ciptr);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清在线精品一区| 亚洲免费在线看| 亚洲高清一区二区三区| 成人a免费在线看| 久久免费偷拍视频| 亚洲一区在线观看网站| 99久久精品一区二区| 欧美激情一区二区三区四区| 国产中文一区二区三区| 精品国产凹凸成av人网站| 亚洲日本欧美天堂| 不卡一卡二卡三乱码免费网站| 欧美激情一区二区三区| 欧美性猛交xxxxxx富婆| 久久久久久久久久电影| 国产资源在线一区| 久久久久久久久久电影| 国产一区二区免费看| 久久精品视频一区二区三区| 国产精品一区二区在线观看不卡 | 日韩片之四级片| 男人操女人的视频在线观看欧美| 在线观看日韩国产| 丝袜美腿亚洲一区二区图片| 这里是久久伊人| 日韩激情在线观看| 久久久久久久免费视频了| 国产aⅴ精品一区二区三区色成熟| 久久久久久免费网| 99久久久精品| 亚洲.国产.中文慕字在线| 在线免费亚洲电影| 日韩精品免费视频人成| 精品噜噜噜噜久久久久久久久试看| 国产精品一区二区男女羞羞无遮挡| 中文字幕的久久| 欧美午夜精品一区| 久久精品国产久精国产爱| 日韩欧美综合一区| 成人免费毛片app| 亚洲国产日日夜夜| 久久久久久97三级| 一本久久综合亚洲鲁鲁五月天| 成人永久aaa| 亚洲三级免费观看| 日韩欧美黄色影院| 成人毛片视频在线观看| 午夜精品123| 久久精品水蜜桃av综合天堂| 91搞黄在线观看| 久久激情五月激情| 国产精品国产三级国产普通话三级 | 91影院在线观看| 免费三级欧美电影| 国产女同性恋一区二区| 精品视频一区三区九区| 九九久久精品视频| 亚洲一本大道在线| 国产精品久久久久7777按摩| 8x8x8国产精品| 91视频免费播放| 狠狠色丁香婷综合久久| 亚洲尤物在线视频观看| 欧美精品一区二区久久久| 欧美吻胸吃奶大尺度电影| 国产电影一区在线| 奇米综合一区二区三区精品视频| 国产精品久久久一本精品| 日韩一级片在线观看| www.激情成人| 韩国毛片一区二区三区| 综合分类小说区另类春色亚洲小说欧美 | 欧美精品xxxxbbbb| 99v久久综合狠狠综合久久| 久久er99热精品一区二区| 夜夜嗨av一区二区三区四季av| 久久久蜜臀国产一区二区| 欧美一级片在线看| 欧美三级韩国三级日本三斤| 不卡视频一二三| 国产精品18久久久久久久久| 日日夜夜精品视频免费| 亚洲一区欧美一区| 亚洲视频一区二区在线观看| 久久精品亚洲国产奇米99| 精品国产凹凸成av人导航| 国产精品久久久久影院色老大| 精品国产伦一区二区三区免费 | 国产·精品毛片| 激情综合网天天干| 日韩精品久久久久久| 亚洲地区一二三色| 亚洲国产精品综合小说图片区| 亚洲激情图片一区| 日韩理论片在线| 亚洲私人黄色宅男| 亚洲色图欧美在线| 一区二区在线免费观看| 亚洲三级小视频| 亚洲综合视频在线| 亚洲亚洲人成综合网络| 性久久久久久久久久久久| 亚洲成人在线观看视频| 亚洲高清久久久| 天天影视网天天综合色在线播放| 日韩电影在线一区二区| 日韩和欧美一区二区| 一区二区久久久久| 一区二区三区不卡视频在线观看 | 91精品综合久久久久久| 51午夜精品国产| 精品欧美一区二区久久| 久久日韩精品一区二区五区| xnxx国产精品| 久久精品一区二区三区不卡牛牛| 欧美激情一区二区三区蜜桃视频| 国产精品国模大尺度视频| 亚洲美女区一区| 亚洲国产你懂的| 久久超级碰视频| 国产成人av一区| 色综合天天综合色综合av| 色综合久久天天综合网| 欧美三级三级三级爽爽爽| 91精品蜜臀在线一区尤物| 日韩欧美国产午夜精品| 国产欧美精品在线观看| 亚洲精品国产精华液| 日韩精品电影一区亚洲| 国产高清不卡一区| 日本韩国一区二区三区| 欧美一区国产二区| 国产精品色呦呦| 丝袜美腿亚洲一区二区图片| 国产一区二区三区精品视频| 91在线视频免费91| 欧美一区午夜精品| 亚洲欧洲日韩在线| 亚洲精品国产无套在线观| 久久不见久久见免费视频7| a美女胸又www黄视频久久| 欧美电影在哪看比较好| 久久久久久久综合色一本| 一区二区三区四区不卡视频| 国产精品第五页| 国产精品久久久久久妇女6080 | 国产原创一区二区| 欧美电影影音先锋| 亚洲蜜臀av乱码久久精品蜜桃| 国产福利精品一区二区| 欧美一区二区在线看| 亚洲夂夂婷婷色拍ww47 | 91尤物视频在线观看| 久久新电视剧免费观看| 日韩国产在线观看一区| 欧洲视频一区二区| 亚洲区小说区图片区qvod| 成人性生交大片免费看中文网站| 日韩一级免费观看| 日本视频一区二区三区| 欧美日韩不卡一区| 亚洲国产日韩a在线播放性色| 91国偷自产一区二区使用方法| 国产精品天美传媒| 国产99久久久国产精品潘金| 精品国产免费一区二区三区四区 | 亚洲欧洲精品天堂一级| eeuss鲁片一区二区三区| 国产精品视频在线看| 国产不卡视频在线播放| 久久久久久久久岛国免费| 国产剧情一区在线| 久久精品亚洲国产奇米99| 国产福利视频一区二区三区| 国产日韩欧美一区二区三区乱码| 国产精品亚洲一区二区三区在线| 国产亚洲精品福利| www.欧美精品一二区| 亚洲日本免费电影| 精品视频资源站| 日本不卡视频一二三区| 日韩欧美国产高清| 国产精品一区二区在线看| 亚洲国产精品av| 97精品超碰一区二区三区| 尤物在线观看一区| 欧美精品在线观看播放| 青青草91视频| 国产视频一区二区三区在线观看| 国产成人啪免费观看软件| 中文字幕日韩精品一区| 欧美亚一区二区| 玖玖九九国产精品| 中文字幕av在线一区二区三区| eeuss鲁片一区二区三区| 亚洲成人激情av| www精品美女久久久tv| 成人午夜视频福利| 亚洲国产日韩av| 久久综合视频网|