Changeset 2005


Ignore:
Timestamp:
Oct 9, 2012, 9:36:01 PM (5 years ago)
Author:
sam
Message:

neercs: ESC no longer quits; but closing the shell does.

Location:
trunk/tools/neercs
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/neercs/term/pty.cpp

    r1896 r2005  
    4545  : m_fd(-1),
    4646    m_pid(-1),
     47    m_eof(false),
    4748    m_unread_data(0),
    4849    m_unread_len(0)
     
    105106}
    106107
     108bool Pty::IsEof() const
     109{
     110    return m_eof;
     111}
     112
    107113size_t Pty::ReadData(char *data, size_t maxlen)
    108114{
     
    142148        {
    143149            Log::Error("cannot read from PTY\n");
     150            m_eof = true;
    144151            return 0;
    145152        }
    146 
    147         if (ret)
     153        else if (ret)
    148154        {
    149155            if (FD_ISSET((int)m_fd, &fdset))
    150156            {
    151157                ssize_t nr = read((int)m_fd, data, maxlen);
     158
     159                /* Data available but zero-length read: EOF */
     160                if (nr <= 0)
     161                    m_eof = true;
     162
    152163                if (nr >= 0)
    153164                    return nr;
  • trunk/tools/neercs/term/pty.h

    r1896 r2005  
    1313
    1414    void Run(char const *command, ivec2 size);
     15    bool IsEof() const;
    1516
    1617    size_t ReadData(char *data, size_t maxlen);
     
    2324    int64_t m_fd;
    2425    int64_t m_pid;
     26    bool m_eof;
    2527    char const *m_argv[2];
    2628    char *m_unread_data;
  • trunk/tools/neercs/term/term.cpp

    r1978 r2005  
    114114    }
    115115
    116     /* This is the real terminal code */
    117     /* XXX: for now we draw fancy shit */
    118116    m_time += seconds;
     117
     118    if (m_pty->IsEof())
     119    {
     120        /* FIXME: we could do more interesting things here… */
     121        Ticker::Shutdown();
     122    }
    119123
    120124    m_pty->SetWindowSize(ivec2(caca_get_canvas_width(m_caca),
    121125                               caca_get_canvas_height(m_caca)));
    122126
     127    /* This is the real terminal code */
    123128    size_t total = 0;
    124129    for (;;)
  • trunk/tools/neercs/video/render.cpp

    r2003 r2005  
    727727{
    728728    /* keyboard manager */
    729     if (Input::WasReleased(Key::Escape))
    730     {
    731         Ticker::Shutdown();
    732     }
    733729    if (Input::WasPressed(Key::F1))
    734730    {
Note: See TracChangeset for help on using the changeset viewer.