当前位置:  技术问答>linux和unix

这个函数的作用?

    来源: 互联网  发布时间:2016-02-15

    本文导语:  int getln2(ss,sa,cont,clen,sep) register substdio *ss; register stralloc *sa; /*@out@*/char **cont; /*@out@*/unsigned int *clen; int sep; {   register char *x;   register unsigned int i;   int n;     if (!stralloc_ready(sa,0)) return -1;  //stralloc_ready...

int getln2(ss,sa,cont,clen,sep)
register substdio *ss;
register stralloc *sa;
/*@out@*/char **cont;
/*@out@*/unsigned int *clen;
int sep;
{
  register char *x;
  register unsigned int i;
  int n;
 
  if (!stralloc_ready(sa,0)) return -1;  //stralloc_ready函数为sa分配空间
  sa->len = 0;
 
  for (;;) {
    n = substdio_feed(ss);      //使ss中有可读字节
    if (n x + (ss)->n )
    i = byte_chr(x,n,sep);         //在x开头往后查找n个字符直到找到sep
    if (i p -= (len) ) , ( (s)->n += (len) ) )
    if (!stralloc_readyplus(sa,n)) return -1;       //应该是为sa中某个char*成员分配n个字符空间
    i = sa->len;
    sa->len = i + substdio_get(ss,sa->s + i,n);
  }
}


-----------------------下面是一些相关函数  我还没看懂如果能顺便一起给解决再好不过了-------------------
int substdio_get(s,buf,len)
register substdio *s;
register char *buf;
register int len;
{
  register int r;
 
  if (s->p > 0) return getthis(s,buf,len);
  if (s->n op,s->fd,buf,len);
  r = substdio_feed(s); if (r p;
  q = r - len;
  if (q > 0) { r = len; s->p = q; } else s->p = 0;
  byte_copy(buf,r,s->x + s->n);      //从s->x + s->n中拷贝r个字符到buf中
  s->n += r;
  return r;
}



static int oneread(op,fd,buf,len)
register int (*op)();
register int fd;
register char *buf;
register int len;
{
  register int r;

  for (;;) {
    r = op(fd,buf,len);
    if (r == -1) if (errno == error_intr) continue;
    return r;
  }
}

|
int getln2(ss,sa,cont,clen,sep)
register substdio *ss;
register stralloc *sa;
/*@out@*/char **cont;
/*@out@*/unsigned int *clen;
int sep;
{
  register char *x;
  register unsigned int i;
  int n;
 
  if (!stralloc_ready(sa,0)) return -1;  //stralloc_ready函数为sa分配空间
  sa- >len = 0;
 
  for (;;) {
    n = substdio_feed(ss);      //使ss中有可读字节
    if (n  x + (ss)- >n )
    i = byte_chr(x,n,sep);         //在x开头往后查找n个字符直到找到sep
    if (i  p -= (len) ) , ( (s)- >n += (len) ) )
    if (!stralloc_readyplus(sa,n)) return -1;       //应该是为sa中某个char*成员分配n个字符空间
    i = sa- >len;
    sa- >len = i + substdio_get(ss,sa- >s + i,n);   //此处估计为把ss中的数据拷贝到sa->s中的相应位置,并更新其状态计数.
  }
}


-----------------------下面是一些相关函数  我还没看懂如果能顺便一起给解决再好不过了-------------------
int substdio_get(s,buf,len)
register substdio *s;
register char *buf;
register int len;
{
  register int r;
 
  if (s- >p  > 0) return getthis(s,buf,len); //如果s中有数据未处理,这从s->x中拷贝数据到buf中,
  if (s- >n  op,s- >fd,buf,len);//估计为:如果s中已经处理的数据不足,则从s->fd中去数据到buf中
  r = substdio_feed(s); if (r  x中最多取len个字节的数据到buf中,如果s->x中的数据不足,则取剩余的数据;并更新s中的相关计算.
//s->p的值的应该为s->x中还有多少数据未处理.
//s->n的值应该为s->x中已经有多少数据被处理.
//s->x为存放待处理的数据
//r为拷贝了几个字节.
static int getthis(s,buf,len)
register substdio *s;
register char *buf;
register int len;
{
  register int r;
  register int q;
 
  r = s- >p;
  q = r - len;
  if (q  > 0) { r = len; s- >p = q; } else s- >p = 0;
  byte_copy(buf,r,s- >x + s- >n);      //从s- >x + s- >n中拷贝r个字符到buf中
  s- >n += r;
  return r;
}



//用op函数对fd,buf,len三个参数进行操作.返回操作.估计相当于从fd中取len个数据到buf中,和read(fd,buf,len)类似.
static int oneread(op,fd,buf,len)
register int (*op)();
register int fd;
register char *buf;
register int len;
{
  register int r;

  for (;;) {
    r = op(fd,buf,len);
    if (r == -1) if (errno == error_intr) continue;
    return r;
  }
}

|
信息不完整...

    
 
 

您可能感兴趣的文章:

  • ioctl函数中SIOCGIFHWADDR是什么意思,有什么作用?
  • 请问:redhat 里有gtk的帮助文档吗,看到一些函数都不知道它的作用是什么啊
  • 请问java中匿名函数的作用
  • 线程函数中使用setpriority函数的作用
  • select函数的作用是什么呢?谢谢
  • ioctl( PortID, TCSETA, &TermConfig )这个函数有什么作用?
  • 谁知道这个函数session.setAttribute("pwd",javabean.getpwd()) 及它的参数的作用 ,并说明一下
  • PHP将回调函数作用到给定数组单元的方法
  • 高分征求答案---parse_options函数的作用是什么?
  • 请大家帮忙告诉我这个函数的作用!!!
  • php中函数前加&符号的作用分解
  • java的"句柄"进入函数时不是有副作用吗?可是String怎么就不呢?
  • c++中虚函数和纯虚函数的作用与区别
  • 解析C++中虚析构函数的作用
  • linux shell自定义函数(定义、返回值、变量作用域)介绍
  • ksh和bash 函数变量作用域的问题
  • 求教gtk_widget_can_activate_accel()函数的作用。
  • 解析在main函数之前调用函数以及对设计的作用详解
  • 为什么?自己定义了signal处理函数没起作用?
  • 求助~~无限循环调用sognal()函数会不会造成系统死机或有什么副作用?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 请问:定义了2个函数,其中第一个函数要访问另外一个函数的变量,怎么处理阿?谢谢
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • 如果知道一个函数的地址或函数名,如何得到函数所在的文件名?
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • java的数学函数在那个类中,如幂函数、指数、对数、双曲线函数等?
  • C++ MultiMaps 成员 value_comp():返回比较元素value的函数
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
  • C++ Strings(字符串) 成员 Constructors:构造函数,用于字符串初始化
  • 在内核的某个函数中,如何能知道是哪个用户空间的函数调用了它,以及这个用户空间函数所在的文件?
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • 在dos下访问内存的MK_FP函数在linux下对应什么函数?int86()函数呢?
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • Linux c++虚函数(virtual function)简单用法示例代码
  • Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • js的众多函数令小弟实在搞不清楚!哪有函数速查手册之类的软件或者书籍!谢了!比如,setInterval、clearInterval这两个函数是干什么的?
  • cityhash 32位,64位和128位介绍及函数列表
  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3