int read_one(int fd, char *ptr, int maxlen)
{
  int n, rc;
  char c;
for (n = 1; n < maxlen; n++) {
if ((rc = read(fd, &c, 1)) == 1) {
*ptr++ = c;
    }
    else if (rc == 0) {
      if (n == 1) {
        return (0);             // EOF, no data read
      }
      else {
        break;                  // EOF, some data was read
      }
    } else {
      return (-1);              // ERROR
    }
}
*ptr = 0;
  return (n);
}


