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

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

?? udr.c

?? gdb是linux下的一個遠程調試環境.能讓你很方便地調試linux下的代碼.
?? C
字號:
/* This module supports sending and receiving data objects over a   socket conection.   Copyright 1993 Free Software Foundation, Inc.   This file is part of GDB.   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.      You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */static char udr_c[]="@(#)udr.c	2.8  Daniel Mann";static char udr_c_AMD[]="@(#)udr.c	2.3, AMD";/* *	All data is serialised into a character stream,*	and de-serialised back into the approproiate objects.********************************************************************** HISTORY*//* This is all unneeded on DOS machines.  */#ifndef __GO32__#include <stdio.h>#include <sys/types.h>/* This used to say sys/fcntl.h, but the only systems I know of that   require that are old (pre-4.3, at least) BSD systems, which we   probably don't need to worry about.  */#include <fcntl.h>#include <sys/socket.h>#include "udiproc.h"#include "udisoc.h"extern	int	errno;extern	char*	malloc();/* local type decs. and macro defs. not in a .h  file ************* MACRO/TYPE*//* global dec/defs. which are not in a .h   file ************* EXPORT DEC/DEFS*/int		udr_errno;		/* error occurs during UDR service *//* local dec/defs. which are not in a .h   file *************** LOCAL DEC/DEFS*//****************************************************************** UDR_CREATE* Build UDR structure for character stream processing.*/int udr_create(udrs, sd, size)UDR*	udrs;int	sd;int	size;{    udrs->sd = sd;    if(!udrs->buff) udrs->buff = malloc(size);    udrs->getbytes = udrs->buff;	/* set the buffer to the start */    udrs->putbytes = udrs->buff;    udrs->putend = udrs->buff;    udrs->udr_op = -1;			/* don't know the direction */    udrs->previous_op = -1;		/* don't know the direction */    udrs->bufsize = size;    return 0;}/******************************************************************** UDR_FREE* Free USR structure and close socket.*/int udr_free(udrs)UDR*	udrs;{    close(udrs->sd);    free(udrs->buff);    return 0;}/****************************************************************** UDR_SIGNAL* Send a signal to the process at the other end of the socket,* indicating that it should expect to recieve a new message shortly.*/int udr_signal(udrs)UDR*	udrs;{    if(send(udrs->sd, "I", 1, MSG_OOB) == -1)    {	perror("ERROR, udr_signal(), send(...MSG_OOB)");	udr_errno =  UDIErrorIPCInternal;    	return -1;		/* return error code */    }    return 0;}/***************************************************************** UDR_SENDNOW* used to flush the current character stream buffer to* the associated socket.  */int udr_sendnow(udrs)UDR*	udrs;{    int size = (UDIUInt32)(udrs->putend) - (UDIUInt32)(udrs->buff);    if(udrs->previous_op == 0)    {   udr_errno =  UDIErrorIPCInternal;	return -1;    }    udrs->putbytes = udrs->buff;    udrs->putend = udrs->buff;    if (write(udrs->sd, udrs->buff, size) == -1)    {	perror("ERROR, udr_sendnow(), write() call: ");	udr_errno =  UDIErrorIPCInternal;    	return -1;		/* return error code */    }    return 0;}/******************************************************************** UDR_WORK* Function to send or recieve data from the buffers supporting* socket communication. The buffer contains serialised objects* sent/recieved over a socket connection.*/int udr_work(udrs, object_p, size)UDR*	udrs;void*	object_p;int	size;{    int	    cnt, remain;    if(udrs->udr_op != udrs->previous_op)    {	if(udrs->previous_op == 0)	{   udr_errno =  UDIErrorIPCInternal;	    return -1;        }	udrs->previous_op= udrs->udr_op;	udrs->putbytes = udrs->buff;	udrs->getbytes = udrs->buff;    }    if(udrs->udr_op == UDR_ENCODE)    {			/* write data into character stream buffer */    	if( (UDIUInt32)(udrs->putbytes) + size >	    (UDIUInt32)(udrs->buff) + (UDIUInt32)(udrs->bufsize) )	{   udr_errno =  UDIErrorIPCInternal;	    return -1;        }	memcpy(udrs->putbytes, (char*)object_p, size);    	udrs->putbytes += size;    	if(udrs->putbytes > udrs->putend) udrs->putend = udrs->putbytes;    }    else if(udrs->udr_op == UDR_DECODE)    {    	if( (UDIUInt32)(udrs->putbytes)-(UDIUInt32)(udrs->getbytes) < size )	{		 /* need more data in character stream buffer */       	    remain = (UDIUInt32)(udrs->bufsize) -		( (UDIUInt32)(udrs->putbytes)-(UDIUInt32)(udrs->buff) );       	    if( ((UDIUInt32)(udrs->bufsize) + (UDIUInt32)(udrs->buff)		- (UDIUInt32)(udrs->getbytes)) < size)	    {   udr_errno =  UDIErrorIPCInternal;	        return -1;            }    	    cnt = read(udrs->sd, (char*)udrs->putbytes, remain);	    if(cnt == -1) perror("ERROR udr_work(),  read() failure: ");	    udrs->putbytes += cnt;    	    if( (UDIUInt32)(udrs->putbytes)-(UDIUInt32)(udrs->getbytes) < size )	    {	udr_errno =  UDIErrorIPCInternal;	        return -1;		/* return error code */    	    }    	}		/* read data from character stream buffer */	memcpy((char*)object_p,  udrs->getbytes, size);    	udrs->getbytes += size;    }    else    {	udr_errno =  UDIErrorIPCInternal;	return -1;    }    return 0;}/************************************************************* UDR_UDIResource*/int udr_UDIResource(udrs, object_p)UDR*	udrs;UDIResource*	object_p;{    int	retval;    retval = udr_CPUSpace(udrs, &object_p->Space);    retval = retval |  udr_CPUOffset(udrs, &object_p->Offset);    return retval;}/**************************************************************** UDR_UDIRange*/int udr_UDIRange(udrs, object_p)UDR*		udrs;UDIRange*	object_p;{    int	retval;    retval = udr_CPUOffset(udrs, &object_p->Low);    retval = retval | udr_CPUOffset(udrs, &object_p->High);    return retval;}/********************************************************** UDR_UDIMemoryRange*/int udr_UDIMemoryRange(udrs, object_p)UDR*		udrs;UDIMemoryRange*	object_p;{    int	retval;    retval = udr_CPUSpace(udrs, &object_p->Space);    retval = retval | udr_CPUOffset(udrs, &object_p->Offset);    retval = retval | udr_CPUSizeT(udrs, &object_p->Size);    return retval;}/****************************************************************** UDR_string*/int udr_string(udrs, sp)UDR*	udrs;char*	sp;{    int	len, retval;    if(udrs->udr_op == UDR_ENCODE)    {	if(sp)    	{   len = strlen(sp) + 1;    	    retval = udr_UDIInt32(udrs, &len);    	    retval = retval | udr_work(udrs, sp, len);	}	else	/* deal with NULL pointer */	{   len = 0;    	    retval = udr_UDIInt32(udrs, &len);	}    }    else if(udrs->udr_op == UDR_DECODE)    {    	retval = udr_UDIInt32(udrs, &len);	if(len)    	    retval = retval | udr_work(udrs, sp, len);	else	*sp = '\0';			/* terminate string */    }    else    {	udr_errno =  UDIErrorIPCInternal;	return -1;    }    return retval;}/******************************************************************* UDR_BYTES*/int udr_bytes(udrs, ptr, len)UDR*	udrs;char*	ptr;int	len;{    return udr_work(udrs, ptr, len);}/********************************************************************* UDR_INT*/int udr_int(udrs, int_p)UDR*	udrs;int*	int_p;{    int ret_val;    UDIInt32  udr_obj;			/* object of know size */    if(udrs->udr_op == UDR_ENCODE)    {        udr_obj = *int_p;		/* copy into know object size */        return udr_UDIInt32(udrs, &udr_obj);    }    else if(udrs->udr_op == UDR_DECODE)    {        ret_val = udr_UDIInt32(udrs, &udr_obj);	/* get object of known size */	*int_p = udr_obj;	return ret_val;    }    else    {	udr_errno =  UDIErrorIPCInternal;	return -1;    }}/****************************************************************** UDR_INLINE*/char* udr_inline(udrs, size)UDR*	udrs;int	size;{    if(udrs->udr_op != udrs->previous_op)    {	if(udrs->previous_op == 0)	{   udr_errno =  UDIErrorIPCInternal;	    return 0;        }    	udrs->previous_op= udrs->udr_op;	udrs->putbytes = udrs->buff;	udrs->getbytes = udrs->buff;    }    if(udrs->udr_op == UDR_ENCODE)    {    	if(udrs->putbytes + size > udrs->bufsize + udrs->buff)	   return 0;    	udrs->putbytes += size;	return udrs->putbytes - size;    }    else if(udrs->udr_op == UDR_DECODE)    {    	if(udrs->getbytes + size > udrs->bufsize + udrs->buff)	   return 0;    	udrs->getbytes += size;	return udrs->getbytes - size;    }    else    {	udr_errno =  UDIErrorIPCInternal;	return 0;    }}/****************************************************************** UDR_GETPOS*/char*	udr_getpos(udrs)UDR*	udrs;{    if(udrs->udr_op == UDR_ENCODE)    {	return udrs->putbytes;    }    else if(udrs->udr_op == UDR_DECODE)    {	return udrs->getbytes;    }    else    {	udr_errno =  UDIErrorIPCInternal;	return 0;    }}/****************************************************************** UDR_SETPOS*/int	udr_setpos(udrs, pos)UDR*	udrs;char*	pos;{    if( ((UDIUInt32)pos > (UDIUInt32)(udrs->buff) + (UDIUInt32)(udrs->bufsize))     || ((UDIUInt32)pos < (UDIUInt32)(udrs->buff) ) )    {	udr_errno =  UDIErrorIPCInternal;	return 0;    }    if(udrs->udr_op == UDR_ENCODE)    {	udrs->putbytes = pos;	return 1;    }    else if(udrs->udr_op == UDR_DECODE)    {	udrs->getbytes = pos;	return 1;    }    else    {	udr_errno =  UDIErrorIPCInternal;	return 0;    }}/***************************************************************** UDR_READNOW* Try and ensure "size" bytes are available in the* receive buffer character stream.*/int	udr_readnow(udrs, size)UDR*	udrs;int	size;{    int	cnt, remain;    if(udrs->udr_op == UDR_ENCODE)    {	udr_errno =  UDIErrorIPCInternal;	return -1;    }    else if(udrs->udr_op == UDR_DECODE)    {    	if( (UDIUInt32)(udrs->putbytes)-(UDIUInt32)(udrs->getbytes) < size )	{		 /* need more data in character stream buffer */       	    remain = (UDIUInt32)(udrs->bufsize) -		( (UDIUInt32)(udrs->putbytes)-(UDIUInt32)(udrs->buff) );    	    cnt = read(udrs->sd, (char*)udrs->putbytes, remain);	    if(cnt == -1) perror("ERROR udr_work(),  read() failure: ");	    udrs->putbytes += cnt;    	    if( (UDIUInt32)(udrs->putbytes)-(UDIUInt32)(udrs->getbytes) < size )    	    {  fprintf(stderr,"ERROR, udr_readnow() too few bytes in stream\n");	       return -1;		/* return error code */    	    }    	}		    }    else    {	udr_errno =  UDIErrorIPCInternal;	return -1;    }    return 0;}/******************************************************************* UDR_ALIGN*/int udr_align(udrs, size)UDR*	udrs;int	size;{    char*   align;    int	    offset;	    align = udr_getpos(udrs);    offset = size - ((int)align & (size -1));    offset = offset & (size -1);    if(offset) udr_setpos(udrs, align + offset);}#endif /* __GO32__ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
aaa亚洲精品| 99久久99久久综合| 亚洲午夜av在线| 国内成人免费视频| 91高清在线观看| 国产欧美日韩一区二区三区在线观看| 一区二区三区色| 成人黄色av电影| 精品久久一区二区| 伊人开心综合网| 成人亚洲一区二区一| 欧美成人在线直播| 精品一区二区精品| 国产在线视视频有精品| 国产一区二区免费视频| 国产成人啪免费观看软件| 丁香桃色午夜亚洲一区二区三区| 成人在线视频首页| 日本精品视频一区二区| 91精品欧美久久久久久动漫 | 欧美mv日韩mv国产| 国产一区欧美二区| 91啪在线观看| 国产三级三级三级精品8ⅰ区| 日韩经典中文字幕一区| 欧美天堂亚洲电影院在线播放| 中文字幕在线播放不卡一区| 福利电影一区二区| 久久嫩草精品久久久精品一| 久久99精品国产91久久来源| 日韩一区二区三区四区五区六区| 亚洲一二三四在线| 欧美日韩三级一区| 亚洲成人动漫在线观看| 欧美日韩在线观看一区二区| 日韩精品欧美精品| 国产欧美日韩一区二区三区在线观看 | 久久精品欧美一区二区三区麻豆| 蜜臀av一区二区三区| 正在播放一区二区| 日本欧美大码aⅴ在线播放| 91麻豆精品国产91久久久久久| 亚洲www啪成人一区二区麻豆| 欧美日韩成人激情| 欧美aaa在线| 精品剧情v国产在线观看在线| 国产精品综合二区| 日本一二三不卡| 99久久99久久免费精品蜜臀| 亚洲精品高清在线观看| 欧美日韩亚洲丝袜制服| 美女看a上一区| 久久久久综合网| 99久久精品国产一区二区三区 | 一区二区三区丝袜| 欧美精品丝袜中出| 国产一区二区成人久久免费影院| 一区二区三区欧美日韩| 成人久久18免费网站麻豆| 日韩一区二区免费高清| 亚洲色图欧洲色图| voyeur盗摄精品| www国产亚洲精品久久麻豆| 日韩高清电影一区| 欧洲人成人精品| 亚洲欧美日韩中文播放| 波多野结衣中文字幕一区二区三区| 日韩欧美一级在线播放| 日韩国产欧美三级| 欧美精品在欧美一区二区少妇 | 91久久精品一区二区三| 国产精品成人免费在线| 岛国av在线一区| 国产亚洲va综合人人澡精品| 久久精品99国产精品日本| 在线不卡免费av| 舔着乳尖日韩一区| 91精品国产欧美日韩| 日本人妖一区二区| 日韩欧美精品在线视频| 麻豆国产精品一区二区三区| 日韩欧美一区二区视频| 极品美女销魂一区二区三区免费 | 亚洲乱码国产乱码精品精可以看| 4438x亚洲最大成人网| 欧美一区二区精品在线| 亚洲成av人在线观看| 麻豆国产精品视频| 国产亚洲综合性久久久影院| 欧美色图激情小说| av中文字幕不卡| 久久激情五月激情| 亚洲国产日韩综合久久精品| 久久精品人人做| 日韩欧美久久久| 欧美日韩一区中文字幕| 91丝袜高跟美女视频| 国内精品伊人久久久久av一坑| 亚洲高清在线精品| 18欧美乱大交hd1984| 国产亚洲精久久久久久| 精品久久久影院| 6080yy午夜一二三区久久| 老司机午夜精品| 在线免费亚洲电影| 99久久er热在这里只有精品15| 91在线你懂得| 床上的激情91.| 国产一区二区91| 久久精品国产亚洲一区二区三区| 亚洲成人一区在线| 亚洲综合清纯丝袜自拍| 一区二区在线免费观看| 亚洲色图清纯唯美| √…a在线天堂一区| 国产亚洲午夜高清国产拍精品| 欧美成人a视频| 欧美大白屁股肥臀xxxxxx| 欧美一区二区三区的| 日韩欧美一级二级三级久久久| 在线成人免费视频| 欧美哺乳videos| 久久久久久久久久久久久女国产乱| 精品国免费一区二区三区| 亚洲精品在线免费播放| 欧美精品一区二区三区蜜桃| 欧美电影免费观看完整版| 精品成人a区在线观看| 欧美国产视频在线| 亚洲欧洲美洲综合色网| 亚洲狠狠丁香婷婷综合久久久| 日韩在线观看一区二区| 一区二区三区四区不卡在线| 中文字幕va一区二区三区| 日韩视频免费观看高清在线视频| 色94色欧美sute亚洲线路二 | 精品嫩草影院久久| 欧美三级韩国三级日本三斤| 99这里只有久久精品视频| 精品午夜一区二区三区在线观看| 亚洲制服丝袜一区| 亚洲男同性恋视频| 中文字幕在线一区二区三区| 久久久99精品免费观看| 欧美成人aa大片| 欧美一区二区三级| 91精品国产高清一区二区三区| 在线观看日韩毛片| 在线一区二区三区四区| 日本久久电影网| 色美美综合视频| 在线免费一区三区| 欧美三级三级三级爽爽爽| 欧美艳星brazzers| 欧美吞精做爰啪啪高潮| 欧美伊人久久久久久久久影院 | 亚洲男人的天堂在线aⅴ视频| 中文字幕中文在线不卡住| 国产精品丝袜久久久久久app| 久久久综合九色合综国产精品| 精品va天堂亚洲国产| 国产亚洲一区二区三区在线观看 | 色婷婷亚洲精品| 欧美亚洲愉拍一区二区| 欧美三级三级三级爽爽爽| 欧美人与禽zozo性伦| 91精品国产手机| 精品国产污网站| 国产欧美日韩三级| 亚洲欧洲日韩女同| 亚洲成人av电影在线| 美女视频免费一区| 丁香另类激情小说| 91久久精品一区二区| 69堂精品视频| 久久久99精品久久| 一区二区三区四区在线免费观看| 亚洲成人一二三| 国产麻豆一精品一av一免费| 成人黄色av电影| 欧美福利视频导航| 国产欧美日韩精品a在线观看| 日韩码欧中文字| 奇米精品一区二区三区在线观看 | 日韩免费视频一区二区| 亚洲gay无套男同| 老司机午夜精品99久久| 丁香激情综合五月| 欧美日韩国产首页| 久久久精品国产免大香伊| 亚洲色图欧洲色图婷婷| 免播放器亚洲一区| aa级大片欧美| 日韩欧美国产高清| 中文字幕一区二区三区不卡 | 亚洲第一av色| 粉嫩高潮美女一区二区三区 | 国产最新精品精品你懂的| 91免费看`日韩一区二区| 日韩欧美中文字幕制服|