123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- {
- }
- {******************************************************************************
- IOCtl and Termios calls
- ******************************************************************************}
- Function TCGetAttr(fd:cint;var tios:TermIOS):cint; {$ifdef VER2_0}inline;{$endif}
- begin
- TCGetAttr:=fpIOCtl(fd,TCGETS,@tios);
- end;
- Function TCSetAttr(fd:cint;OptAct:cint;const tios:TermIOS):cint;
- var
- nr:culong;
- begin
- case OptAct of
- TCSANOW : nr:=TCSETS;
- TCSADRAIN : nr:=TCSETSW;
- TCSAFLUSH : nr:=TCSETSF;
- else
- begin
- fpsetErrNo(ESysEINVAL);
- TCSetAttr:=-1;
- exit;
- end;
- end;
- TCSetAttr:=fpIOCtl(fd,nr,@Tios);
- end;
- Procedure CFSetISpeed(var tios:TermIOS;speed:Cardinal); {$ifdef VER2_0}inline;{$endif}
- begin
- tios.c_cflag:=(tios.c_cflag and (not CBAUD)) or speed;
- end;
- Procedure CFSetOSpeed(var tios:TermIOS;speed:Cardinal); {$ifdef VER2_0}inline;{$endif}
- begin
- CFSetISpeed(tios,speed);
- end;
- { checked against glibc 2.3.3 (FK) }
- Procedure CFMakeRaw(var tios:TermIOS);
- begin
- with tios do
- begin
- c_iflag:=c_iflag and (not (IGNBRK or BRKINT or PARMRK or ISTRIP or
- INLCR or IGNCR or ICRNL or IXON));
- c_oflag:=c_oflag and (not OPOST);
- c_lflag:=c_lflag and (not (ECHO or ECHONL or ICANON or ISIG or IEXTEN));
- c_cflag:=(c_cflag and (not (CSIZE or PARENB))) or CS8;
- c_cc[VMIN]:=1;
- c_cc[VTIME]:=0;
- end;
- end;
- Function TCSendBreak(fd,duration:cint):cint; {$ifdef VER2_0}inline;{$endif}
- begin
- TCSendBreak:=fpIOCtl(fd,TCSBRK,pointer(ptrint(duration)));
- end;
- Function TCSetPGrp(fd,id:cint):cint; {$ifdef VER2_0}inline;{$endif}
- begin
- TCSetPGrp:=fpIOCtl(fd,TIOCSPGRP,pointer(ptrint(id)));
- end;
- Function TCGetPGrp(fd:cint;var id:cint):cint; {$ifdef VER2_0}inline;{$endif}
- begin
- TCGetPGrp:=fpIOCtl(fd,TIOCGPGRP,@id);
- end;
- Function TCDrain(fd:cint):cint; {$ifdef VER2_0}inline;{$endif}
- begin
- TCDrain:=fpIOCtl(fd,TCSBRK,pointer(1));
- end;
- Function TCFlow(fd,act:cint):cint; {$ifdef VER2_0}inline;{$endif}
- begin
- TCFlow:=fpIOCtl(fd,TCXONC,pointer(ptrint(act)));
- end;
- Function TCFlush(fd,qsel:cint):cint; {$ifdef VER2_0}inline;{$endif}
- begin
- TCFlush:=fpIOCtl(fd,TCFLSH,pointer(ptrint(qsel)));
- end;
- Function IsATTY (Handle:cint):cint;
- {
- Check if the filehandle described by 'handle' is a TTY (Terminal)
- }
- var
- t : Termios;
- begin
- if TCGetAttr(Handle,t)=0 then
- IsAtty:=1
- else
- IsAtty:=0;
- end;
- Function IsATTY(var f: text):cint; {$ifdef VER2_0}inline;{$endif}
- {
- Idem as previous, only now for text variables.
- }
- begin
- IsATTY:=IsaTTY(textrec(f).handle);
- end;
|