slip_common.c

来自「LINUX 2.6.17.4的源码」· C语言 代码 · 共 55 行

C
55
字号
#include <string.h>#include "slip_common.h"#include "net_user.h"int slip_proto_read(int fd, void *buf, int len, struct slip_proto *slip){	int i, n, size, start;	if(slip->more > 0){		i = 0;		while(i < slip->more){			size = slip_unesc(slip->ibuf[i++], slip->ibuf,					  &slip->pos, &slip->esc);			if(size){				memcpy(buf, slip->ibuf, size);				memmove(slip->ibuf, &slip->ibuf[i],					slip->more - i);				slip->more = slip->more - i;				return size;			}		}		slip->more = 0;	}	n = net_read(fd, &slip->ibuf[slip->pos],		     sizeof(slip->ibuf) - slip->pos);	if(n <= 0)		return n;	start = slip->pos;	for(i = 0; i < n; i++){		size = slip_unesc(slip->ibuf[start + i], slip->ibuf,&slip->pos,				  &slip->esc);		if(size){			memcpy(buf, slip->ibuf, size);			memmove(slip->ibuf, &slip->ibuf[start+i+1],				n - (i + 1));			slip->more = n - (i + 1);			return size;		}	}	return 0;}int slip_proto_write(int fd, void *buf, int len, struct slip_proto *slip){	int actual, n;	actual = slip_esc(buf, slip->obuf, len);	n = net_write(fd, slip->obuf, actual);	if(n < 0)		return n;	else return len;}

⌨️ 快捷键说明

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