/* $begin rio_readlineb */ ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen) { int n, rc; char c, *bufp = usrbuf; char line[8192]; while(strstr(line, "HTTP") == NULL) { for (n = 1; n < maxlen; n++) { if ((rc = rio_read(rp, &c, 1)) == 1) { *bufp++ = c; line[n-1] = c; if (c == '\n') break; } else if (rc == 0) { if (n == 1) return 0; /* EOF, no data read */ else break; /* EOF, some data was read */ } else return -1; /* error */ } *bufp = 0; } if (strstr(line, "HTTP/1.1") == NULL) { for (n = 1; n < maxlen; n++) { if ((rc = rio_read(rp, &c, 1)) == 1) { *bufp++ = c; line[n-1] = c; if (c == '\n') { break;} } else if (rc == 0) { if (n == 1) return 0; /* EOF, no data read */ else break; /* EOF, some data was read */ } else return -1; /* error */ } *bufp = 0; rio_read(rp, &c, 1); //rio_read(rp, &c, 1); return n; } return n; }
ssize_t rio_readlineb(rio_t* rp, void* usrbuf, size_t maxlen) { int n, rc; char c; char* bufp = usrbuf; for (n = 1; n < maxlen; ++n) { if (1 == (rc = rio_read(rp, &c, 1))) { *bufp++ = c; if ('\n' == c) break; } else if (0 == rc) { if (1 == n) return 0; else break; } else { return -1; } } *bufp = 0; return n; }
/* Robustly read n bytes(buffered) */ ssize_t rio_readnb(rio_t *rp, void *usrbuf, size_t n) { int rc, nleft; char *bufp = usrbuf; nleft = n; while( nleft > 0) { if ((rc = rio_read(rp, bufp, nleft)) < 0) { if(errno != EINTR) return -1; else continue; } else if (rc == 0) { return 0; } else { bufp += rc; nleft -= rc; } } return n - nleft; }
ssize_t rio_readlineb(rio_t *rp,void *usrbuf,size_t maxlen) { int n,rc; char c,*bufp = usrbuf; for(n = 1;n < maxlen; n++) { if((rc = rio_read(rp,&c,1)) == 1) { *bufp++ = c; if(c == '\n') { break; } }else if(rc == 0) { if(n == 1) { return 0; }else { break; } }else { return -1; } } *bufp = 0; return n; }
ssize_t rio_readnb(rio_t *rp,void *usrbuf,size_t n) { size_t nleft = n; ssize_t nread; char *bufp = usrbuf; while(nleft > 0) { if((nread = rio_read(rp,bufp,nleft)) < 0) { if(errno == EINTR) { nread = 0; }else { return -1; } }else if(nread == 0) { break; } nleft -= nread; bufp += nread; } return (n-nleft); }
ssize_t rio_readlineb(rio_t *rp, void *buf, size_t n) { size_t i, ret; char c; char *bp = (char *)buf; for(i = 1; i < n; ++i) { if((ret = rio_read(rp, &c, 1)) == 1) { *bp++ = c; if(c == '\n') break; } else if(ret == 0) { if(i == 1) return 0; else break; } else return -1; } *bp = '\0'; return i; }
/* $begin rio_readlineb */ ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen) { int n, rc; char c, *bufp = usrbuf; for (n = 1; n < maxlen; n++) { if ((rc = rio_read(rp, &c, 1)) == 1) { *bufp++ = c; if (c == '\n') break; } else if (rc == 0) { if (n == 1) { return 0; /* EOF, no data read */ } else { break; /* EOF, some data was read */ } } else { return -1; /* error */ } } *bufp = 0; return n; }
ssize_t rio_readlineb(rio_t *rp, char *usrbuf, size_t maxlen) { /* read_one_line function WITH buffer */ int n, rc; char c, *bufp = usrbuf; for (n = 1; n < maxlen; n++) { if ((rc = rio_read(rp, &c, 1)) == 1) { *bufp++ = c; if (c == '\n') break; } else if (rc == 0) { if (n == 1) return 0; /* EOF, no data was read */ else break; /* EOF, some data was read */ } else { return -1; /* error */ } } *bufp = 0; return n; }
static ssize_t Rio_read(rio_t *rp, char *usrbuf, size_t n) { ssize_t rt; rt = rio_read(rp, usrbuf, n); if (rt == -1) unix_error("Rio_read error"); return rt; }
/* $begin rio_readnb */ ssize_t rio_readnb(rio_t *rp, void *usrbuf, size_t n) { size_t nleft = n; ssize_t nread; char *bufp = usrbuf; while (nleft > 0) { if ((nread = rio_read(rp, bufp, nleft)) < 0) return -1; /* errno set by read() */ else if (nread == 0) break; /* EOF */ nleft -= nread; bufp += nread; } return (n - nleft); /* return >= 0 */ }
int Rio::rio_readn(void *usrbuf, int n) { int nread; int nleft = n; char *bufp = (char*)usrbuf; while(nleft > 0) { if((nread = rio_read(bufp, nleft)) == -1) return -1; else if(nread == 0) return 0; nleft -= nread; bufp += nread; } return (n - nleft); }
ssize_t Rio::rio_readn(char *usrbuf, size_t n) { ssize_t nread; size_t nleft = n; char *bufp = usrbuf; while(nleft > 0) { if((nread = rio_read(bufp, nleft)) == -1) return -1; else if(nread == 0) return 0; nleft -= nread; bufp += nread; } return (n - nleft); }
/* $begin rio_readnb */ ssize_t rio_readnb(rio_t *rp, void *usrbuf, size_t n) { size_t nleft = n; ssize_t nread; char *bufp = usrbuf; while (nleft > 0) { if ((nread = rio_read(rp, bufp, nleft)) < 0) { if (errno == EINTR) /* interrupted by sig handler return */ nread = 0; /* call read() again */ else return -1; /* errno set by read() */ } else if (nread == 0) break; /* EOF */ nleft -= nread; bufp += nread; } return (n - nleft); /* return >= 0 */ }
ssize_t rio_readline(rio_t *rp, char *usrbuf, size_t maxlen) { ssize_t nread; char c; int i; for (i = 0; i < maxlen - 1; ++i) { nread = rio_read(rp, &c, 1); if (nread == -1) return -1; else if (nread == 0) break; //放入usrbuf *usrbuf++ = c; if (c == '\n') break; } *usrbuf = '\0'; return i; }
ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen) { int n, rc; char c, *bufp = usrbuf; // copy at most maxlen - 1 bytes, the left 1 byte for null terminate ch for (n = 1; n < maxlen; ++n) { if ((rc = rio_read(rp, &c, 1)) == 1) { *bufp++ = c; if (c == '\n') { break; } } else if (rc == 0) { if (n == 1) return 0; // EOF, no data read else break; } else { return -1; } } *bufp = '\0'; return n; }
ssize_t rio_readnb(rio_t *rp, void *usrbuf, size_t n) { size_t nleft = n; size_t nread; char *bufp = (char*)usrbuf; while (nleft > 0) { if ((nread = rio_read(rp, bufp, nleft)) < 0) if (errno == EINTR) nread = 0; else return -1; else if (nread == 0) break; nleft -= nread; bufp += nread; } return (n - nleft); }
/* $begin rio_readlineb */ ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen) { int n, rc; char c, *bufp = usrbuf; n = 0; while (n < maxlen-1) { if ((rc = rio_read(rp, &c, 1)) == 1) { n++; *bufp++ = c; if (c == '\n') break; } else if (rc == 0) { break; /* EOF */ } else return -1; /* error */ } *bufp = 0; return n; }
ssize_t rio_readnb(rio_t *rio_ptr, void *buf, size_t n) { size_t nleft = n; ssize_t nread; char *bufptr = buf; while (nleft > 0) { nread = rio_read(rio_ptr, bufptr, nleft); if (nread < 0) { if (errno == EINTR) { nread = 0; } else { return -1; } } else if (nread == 0) { break; } nleft -= nread; bufptr += nread; } return (n - nleft); }
ssize_t rio_readnb(rio_t* rp, void* usrbuf, size_t n) { size_t nleft = 0; ssize_t nread; char* bufp = usrbuf; while (nleft > 0) { if ((nread = rio_read(rp, bufp, nleft)) < 0) { if (EINTR == errno) nread = 0; else return -1; } else if (0 == nread) { break; } nleft -= nread; bufp += nread; } return (n - nleft); }
ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen) { size_t n; char *bufp = usrbuf; for (n = 1; n < maxlen; n++) { ssize_t rc = rio_read(rp, bufp, 1); if (rc < 0) return -1; /* errno set by read(), give up */ if (rc == 0) { if (n == 1) return 0; /* EOF, no data read */ else break; /* EOF, some data was read */ } if (*bufp++ == '\n') /* read() success, 0 < rc <= 1 */ break; } *bufp = '\0'; return n; }
ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen) { int n, rc; char c, *bufp = usrbuf; //要加入\0 所以要留一个 for(n = 1; n < maxlen ; n++){ if((rc = rio_read(rp, &c, 1)) == 1){ *bufp++ = c; if(c == '\n') break; } else if (rc == 0) { if(n == 1) return 0; //空字符串 else break; } else return -1; } *bufp = 0; return n; }
ssize_t Rio::rio_readLine(char *usrbuf, size_t maxlen) { char *bufp = usrbuf; char c; ssize_t nread; int i; for (i = 0; i < maxlen - 1; i++) { if((nread = rio_read(&c, 1)) == -1) return -1; else if(nread == 0) { if(i == 0) return 0; break; } *bufp++ = c; if(c == '\n') break; } *bufp = '\0'; return i; }
int Rio::rio_readline(void *usrbuf, int maxlen) { char *bufp = (char*)usrbuf; char c; int nread; int i; for (i = 0; i < maxlen - 1; i++) { if((nread = rio_read(&c, 1)) == -1) return -1; else if(nread == 0) { if(i == 0) return 0; break; } *bufp++ = c; if(c == '\n') break; } *bufp = '\0'; return i; }
ssize_t rio_readnb(rio_t *rp, char *usrbuf, size_t n) { /* read function WITH buffer */ size_t nleft = n; ssize_t nread; char *bufp = usrbuf; while (nleft > 0) { if ((nread = rio_read(rp, bufp, nleft)) < 0) { return -1; /* error set by read() */ } else if (nread == 0) { break; /* EOF */ } nleft -= nread; bufp += nread; } return n -nleft; /* retun >= 0 */ }
ssize_t rio_readlineb(rio_t *rio_ptr, void *buf, size_t maxlen) { int n, ret; char c, *bufptr = buf; for (n = 1; n < maxlen; ++n) { ret = rio_read(rio_ptr, &c, 1); if (ret == 1) { *bufptr++ = c; if (c == '\n') { break; } } else if (ret == 0) { if (n == 1) { return 0; } else { break; } } else { return ret; } } *bufptr = 0; return n; }
ssize_t rio_readn(rio_t *rp, void *buf, size_t count) { size_t nleft = count; //剩余没有读取的字节数 ssize_t nread = 0; //接收读取返回值 char *bufp = (char *)buf; //缓冲区的偏移量 while (nleft > 0) { //不再使用系统read调用 nread = rio_read(rp, bufp, nleft); if (nread == -1) { if (errno == EINTR) continue; return -1; } else if (nread == 0) { break; } nleft -= nread; bufp += nread; } return count - nleft; }