/**************************************************************/
  /*                                                            */
  /*      UNIX 1 / WS 92/93       Gruppe  ux803                 */
  /*      3. Uebung - Aufgabe 2 - line.c                        */
  /*                                                            */
  /*      Vorname     Name        Matrikelnr.                   */
  /*     ---------   -------     -------------                  */
  /*      Dietmar     Dierks        125761                      */
  /*      Roman       Czyborra      127221                      */
  /*      Torsten     Buller        117894                      */
  /*      Gerasimos   Paliatsaras   140956                      */
  /*                                                            */
  /**************************************************************/

#include <stdio.h>

char *readline(buf, buflen)
     char *buf;
     int buflen;
     
{
  static int c,f; 
  static char *p;
  
  p = buf;                  /* p zeige auf buf[0], dort ist einzutragen */
  f = buflen;               /* noch f Bytes frei im buf */
  
  while (1)
    switch (c = getchar())
      {
      case EOF :
	return NULL;
	
      case '\n':            /* Zeilenende */ 
	* p = '\0';
	return buf;

      default:              /* normales Zeichen */
	* p++ = (char) c;   /* eintragen */
	if (! --f)          /* noch 1 Byte frei ? */
	  {
	    fputs ("line too long for buf\n", stderr);
	    while ((c = getchar()) != EOF && c != '\n');
	    return NULL;
	  }
      }
}