#include <sys/types.h>
#include <sys/socket.h>

/* adapted from Stevens "Unix Network Programming" 
 * Sample call:
 * int n; (number of chars read)
 * int s; (socket number)
 * char buf[1024];			
 * n = sockreadline(s, buf, sizeof(buf));
 */
int sockreadline(int fd, char *pch, int maxlen)
{
    int n, rc;
    char c;

    for (n = 1; n < maxlen; n++) {
	if ((rc = recv(fd, &c, 1, 0)) == 1) {
	    *pch++ = c;
	    if (c == '\n')
		break;
	}
	else if (rc == 0) {
	    if (n == 1)
		return(0);	/* EOF, no data read */
	    else
		break;		/* EOF, some data read */
	}
	else {
	    return(-1);
	}
    }
    *pch = '\0';		/* NULL terminate */
    return(n);
}
