MODULE test2;

(* based on the kilo editor building course*)

(* Step 6 *)

IMPORT FIO, SYSTEM, termios, libc, STextIO, NumberIO;

VAR 
    c               : CHAR;
    p               : POINTER TO CHAR;
    thetermios      : termios.TERMIOS;
    theoldtermios   : termios.TERMIOS;
    result          : INTEGER;
    TCSAFLUSH       : INTEGER;
    bresult         : BOOLEAN;

 
BEGIN
    thetermios      := termios.InitTermios();
    theoldtermios   := termios.InitTermios();

    TCSAFLUSH := termios.tcsflush (); 
    result := termios.tcgetattr(FIO.StdIn, thetermios);
    STextIO.WriteString (" call 1 to tcgetattr "); 
    NumberIO.WriteCard(result, 5);
    STextIO.WriteLn;

    result := termios.tcgetattr(FIO.StdIn, theoldtermios);
    STextIO.WriteString (" call 2 to tcgetattr "); 
    NumberIO.WriteCard(result, 5);
    STextIO.WriteLn;

    bresult := termios.SetFlag(thetermios,termios.lecho, TRUE);
    STextIO.WriteString ("call to SetFlag");
    STextIO.WriteLn;
    IF bresult = TRUE THEN
        STextIO.WriteString("true");
        STextIO.WriteLn;
    ELSE
        STextIO.WriteString("false");
        STextIO.WriteLn 
    END;

    result := termios.tcsetattr(FIO.StdIn, TCSAFLUSH, theoldtermios);
    STextIO.WriteString (" call to tcsetattr "); 
    NumberIO.WriteCard(result, 5);
    STextIO.WriteLn;

   
END test2.