[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[DDL-ML] erddcd.c readLine()



Torsten,

beim Schreiben von "consist" habe ich ausgehend von erddcd.c auch ein
readLine() geschrieben. Kannst du Dir ja mal ansehen, meine Lösung
garantiert ein abschließendes '\0' und kommt ohne strlen() aus. Ist
vielleicht was für die "spring edition" des erddcd.

Harald.

int portReadLine(int socket, char *line, int maxlen){
  
  int pos=0;
  char z;
  int byteCount;

  for (pos = 0; pos < maxlen - 1; pos++) {
    byteCount=read(socket, &z, 1);
    if(byteCount != 1) /* We asked for exactly one */
      return -1;
    line[pos] = z;
    switch (z) {
      /* List end delimiter chars here */
    case 0x0a:
      line[pos + 1] = 0;
      return pos + 1;
      /* Null character not allowed */
    case 0:
      return -1;
    }
  }
  return -1; /* did not find end delimiter in string */
}