while (numbytes != 1)
{
num = read(fd, egdbuf, 1);
if (num >= 0)
if (num > 0)
numbytes += num;
else
while (numbytes != egdbuf[0])
num = read(fd, retrievebuf + numbytes, egdbuf[0] - numbytes);