MODULE GETREC;

(*$I FIBDEF.LIB*)

VAR
  @LFB:		EXTERNAL ^FIB;

EXTERNAL PROCEDURE @RNB;

PROCEDURE GET(VAR F:FIB; SZ:INTEGER);
VAR
  IS_EOLN : BOOLEAN;
BEGIN
  F.FEOLN := FALSE;	(* DEFAULT IS THAT WE RESET IT *)

  @LFB := ADDR(F);
  IF F.FEOF THEN
    BEGIN
      F.FEOLN := TRUE;
      EXIT
    END;

  @RNB;			(* GO READ FROM THE FILE/CONSOLE *)

  IF F.FTEXT THEN	(* TEXT FILE, EOLN/EOF MUST BE SET *)
    BEGIN
      F.FEOF := (F.FBUFFER[0] = CHR($1A)) OR (F.FEOF);
      IS_EOLN := (F.FBUFFER[0] = CHR($0D)); (* $0D for rmx/udi *)
      IF (IS_EOLN) OR (F.FEOF) THEN
        F.FEOLN := TRUE;

      IF (IS_EOLN) AND (F.OPTION = FRDWR) THEN (* GOBBLE LF *)
	@RNB;

      IF F.FEOF OR F.FEOLN THEN
	F.FBUFFER[0] := ' ';
    END
END;

MODEND.

