Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int irc_getln (ircclient_t *cl, char *buf)
- {
- char *pos = NULL;
- char tmpbuf [MAXBUF] = { 0 };
- while ((pos = strstr (cl->rbuf, "\r\n")) == NULL)
- {
- memset (tmpbuf, 0, MAXBUF);
- if (net_recv (cl->s, tmpbuf, MAXBUF - strlen (cl->rbuf)) <= 0) // failed to recieve anything
- return 1;
- // Copy tmpbuf into the recvbuf
- memcpy (cl->rbuf + strlen (cl->rbuf), tmpbuf, MAXBUF - strlen (cl->rbuf));
- }
- // Copy line to buf, add \0
- memcpy (buf, cl->rbuf, pos + 2 - cl->rbuf);
- strstr (buf, "\r\n") [2] = '\0';
- // shift the recvbuf back
- memset (tmpbuf, 0, MAXBUF);
- memcpy (tmpbuf, pos + 2, MAXBUF - (pos + 2 - cl->rbuf));
- memcpy (cl->rbuf, tmpbuf, MAXBUF);
- return strlen (buf);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement