PreviousUpNext

15.3.509  src/lib/std/src/posix-1003.1b/posix-tty.api

## posix-tty.api

# Compiled by:
#     src/lib/std/src/standard-core.sublib



# Api for POSIX 1003.1 operations on terminal devices



###                        "I wanted to avoid special IO for terminals."
###
###                                            -- Ken Thompson



api  Posix_Tty {

    eqtype Process_Id;                  #  process ID 
    eqtype File_Descriptor;             #  file descriptor 
    
    package i:
    api {
        include Bit_Flags;              # Bit_Flags     is from   src/lib/std/src/bit-flags.api
        
        brkint:  Flags;
        icrnl:   Flags;
        ignbrk:  Flags;
        igncr:   Flags;
        ignpar:  Flags;
        inlcr:   Flags;
        inpck:   Flags;
        istrip:  Flags;
        ixoff:   Flags;
        ixon:    Flags;
        parmrk:  Flags;
    };

    package o:
    api {
        include Bit_Flags;              # Bit_Flags     is from   src/lib/std/src/bit-flags.api
        
        opost:  Flags;
    };

    package c:
      api {
        include Bit_Flags;              # Bit_Flags     is from   src/lib/std/src/bit-flags.api
        
         clocal:  Flags;
         cread:   Flags;
         csize:   Flags;
         cs5:     Flags;
         cs6:     Flags;
         cs7:     Flags;
         cs8:     Flags;
         cstopb:  Flags;
         hupcl:   Flags;
         parenb:  Flags;
         parodd:  Flags;
      };

    package l:
      api {
        include Bit_Flags;              # Bit_Flags     is from   src/lib/std/src/bit-flags.api
        
         echo:    Flags;
         echoe:   Flags;
         echok:   Flags;
         echonl:  Flags;
         icanon:  Flags;
         iexten:  Flags;
         isig:    Flags;
         noflsh:  Flags;
         tostop:  Flags;
      };

    package v:
      api {
         eof:    Int;
         eol:    Int;
         erase:  Int;
         intr:   Int;
         kill:   Int;
         min:    Int;
         quit:   Int;
         susp:   Int;
         time:   Int;
         start:  Int;
         stop:   Int;

         nccs:  Int;

         Cc;

         cc:       List ((Int, Char)) -> Cc;
         update:  ((Cc, List ((Int, Char)))) -> Cc;
         sub:     ((Cc, Int)) -> Char;
      };

    eqtype Speed;
    compare_speed:  (Speed, Speed) -> exceptions_guts::Order;                           # exceptions_guts       is from   src/lib/std/src/exceptions-guts.pkg
    speed_to_unt:  Speed -> host_unt::Unt;
    unt_to_speed:  host_unt::Unt -> Speed;
    b0:      Speed;
    b50:     Speed;
    b75:     Speed;
    b110:    Speed;
    b134:    Speed;
    b150:    Speed;
    b200:    Speed;
    b300:    Speed;
    b600:    Speed;
    b1200:   Speed;
    b1800:   Speed;
    b2400:   Speed;
    b4800:   Speed;
    b9600:   Speed;
    b19200:  Speed;
    b38400:  Speed;

     Termios;
    
     termios:  { iflag:  i::Flags,
                    oflag:  o::Flags,
                    cflag:  c::Flags,
                    lflag:  l::Flags,
                    cc:  v::Cc,
                    ispeed:  Speed,
                    ospeed:  Speed } -> Termios;

     fields_of:  Termios -> { iflag:  i::Flags,
                                oflag:  o::Flags,
                                cflag:  c::Flags,
                                lflag:  l::Flags,
                                cc:  v::Cc,
                                ispeed:  Speed,
                                ospeed:  Speed };

     getiflag:   Termios -> i::Flags;
     getoflag:   Termios -> o::Flags;
     getcflag:   Termios -> c::Flags;
     getlflag:   Termios -> l::Flags;
     getcc:      Termios -> v::Cc;

     getospeed:  Termios -> Speed;
     setospeed:  ((Termios, Speed)) -> Termios;
     getispeed:  Termios -> Speed;
     setispeed:  ((Termios, Speed)) -> Termios;
    
    package tc:
      api {
        eqtype Set_Action;

         sanow:    Set_Action;
         sadrain:  Set_Action;
         saflush:  Set_Action;

        eqtype Flow_Action;

         ooff:  Flow_Action;
         oon:   Flow_Action;
         ioff:  Flow_Action;
         ion:   Flow_Action;

        eqtype Queue_Sel;

         iflush:   Queue_Sel;
         oflush:   Queue_Sel;
         ioflush:  Queue_Sel;
      };

     getattr:  File_Descriptor -> Termios;
     setattr:  (File_Descriptor, tc::Set_Action, Termios) -> Void;

     sendbreak:  (File_Descriptor, Int) -> Void;
     drain:   File_Descriptor -> Void;
     flush:  (File_Descriptor, tc::Queue_Sel) -> Void;
     flow:  (File_Descriptor, tc::Flow_Action) -> Void;

     getpgrp:  File_Descriptor -> Process_Id;
     setpgrp: (File_Descriptor,   Process_Id) -> Void;

  }; #  Api Posix_Tty 



## COPYRIGHT (c) 1995 AT&T Bell Laboratories.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2012,
## released under Gnu Public Licence version 3.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext