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

📄 buffer_get.c

📁 fget是一个小型的HTTP/FTP工具
💻 C
字号:
#include "buffer.h"#include "byte.h"#include "error.h"static int oneread(int (*op)(),int fd,char *buf,unsigned int len){  int r;  for (;;) {    r = op(fd,buf,len);    if (r == -1) if (errno == error_intr) continue;    return r;  }}static int getthis(buffer *s,char *buf,unsigned int len){  if (len > s->p) len = s->p;  s->p -= len;  byte_copy(buf,len,s->x + s->n);  s->n += len;  return len;}int buffer_feed(buffer *s){  int r;  if (s->p) return s->p;  r = oneread(s->op,s->fd,s->x,s->n);  if (r <= 0) return r;  s->p = r;  s->n -= r;  if (s->n > 0) byte_copyr(s->x + s->n,r,s->x);  return r;}int buffer_bget(buffer *s,char *buf,unsigned int len){  int r;   if (s->p > 0) return getthis(s,buf,len);  if (s->n <= len) return oneread(s->op,s->fd,buf,s->n);  r = buffer_feed(s); if (r <= 0) return r;  return getthis(s,buf,len);}int buffer_get(buffer *s,char *buf,unsigned int len){  int r;   if (s->p > 0) return getthis(s,buf,len);  if (s->n <= len) return oneread(s->op,s->fd,buf,len);  r = buffer_feed(s); if (r <= 0) return r;  return getthis(s,buf,len);}char *buffer_peek(buffer *s){  return s->x + s->n;}void buffer_seek(buffer *s,unsigned int len){  s->n += len;  s->p -= len;}

⌨️ 快捷键说明

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