improve logging.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 19 Jun 2012 19:40:40 +0000 (19:40 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 19 Jun 2012 19:40:40 +0000 (19:40 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/terminology@72502 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

TODO
src/bin/termpty.c

diff --git a/TODO b/TODO
index 8654f39..57b91d1 100644 (file)
--- a/TODO
+++ b/TODO
@@ -10,7 +10,7 @@ make it a first-class terminal:
     many are commented out and unhandled)
 [ ] copy & paste support for clipboard not just primary (like xterm)
 [ ] dnd text (to/from terminal)
-[ ] ecore-imf support
+[X] ecore-imf support
 [ ] handle multibyte displays better (does handle utf8 only atm and
     then maybe not according to convention)
 [ ] general input mode handling improvements (keypad, other key
index 3154e9d..2184b6c 100644 (file)
@@ -7,6 +7,8 @@
 #include <stdlib.h>
 #include <fcntl.h>
 #include <sys/ioctl.h>
+#include <string.h>
+#include <errno.h>
 
 static void
 _text_clear(Termpty *ty, Termcell *cells, int count, int val, Eina_Bool inherit_att)
@@ -79,7 +81,7 @@ _text_scroll(Termpty *ty)
           if (ty->cb.cancel_sel.func)
             ty->cb.cancel_sel.func(ty->cb.cancel_sel.data);
      }
-   DBG("... scroll!!!!! [%i->%i]\n", start_y, end_y);
+   DBG("... scroll!!!!! [%i->%i]", start_y, end_y);
    cells2 = &(ty->screen[end_y * ty->w]);
    for (y = start_y; y < end_y; y++)
      {
@@ -101,7 +103,7 @@ _text_scroll_rev(Termpty *ty)
         start_y = ty->state.scroll_y1;
         end_y = ty->state.scroll_y2 - 1;
      }
-   DBG("... scroll rev!!!!! [%i->%i]\n", start_y, end_y);
+   DBG("... scroll rev!!!!! [%i->%i]", start_y, end_y);
    cells = &(ty->screen[end_y * ty->w]);
    for (y = end_y; y > start_y; y--)
      {
@@ -212,7 +214,7 @@ _text_append(Termpty *ty, const int *glyphs, int len)
 static void
 _term_write(Termpty *ty, const char *txt, int size)
 {
-   if (write(ty->fd, txt, size) < 0) perror("write");
+   if (write(ty->fd, txt, size) < 0) ERR("write: %s", strerror(errno));
 }
 #define _term_txt_write(ty, txt) _term_write(ty, txt, sizeof(txt) - 1)
 
@@ -386,7 +388,7 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
    if (cc == ce) return -2;
    *b = 0;
    b = buf;
-   DBG(" CSI: '%c' args '%s'\n", *cc, buf);
+   DBG(" CSI: '%c' args '%s'", *cc, buf);
    switch (*cc)
      {
       case 'm': // color set
@@ -470,12 +472,12 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
                      case 38: // xterm 256 fg color ???
                        // now check if next arg is 5
                        arg = _csi_arg_get(&b);
-                       if (arg != 5) ERR("Failed xterm 256 color fg esc 5\n");
+                       if (arg != 5) ERR("Failed xterm 256 color fg esc 5");
                        else
                          {
                             // then get next arg - should be color index 0-255
                             arg = _csi_arg_get(&b);
-                            if (!b) ERR("Failed xterm 256 color fg esc val\n");
+                            if (!b) ERR("Failed xterm 256 color fg esc val");
                             else
                               {
                                  ty->state.att.fg256 = 1;
@@ -504,12 +506,12 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
                      case 48: // xterm 256 bg color ???
                        // now check if next arg is 5
                        arg = _csi_arg_get(&b);
-                       if (arg != 5) ERR("Failed xterm 256 color bg esc 5\n");
+                       if (arg != 5) ERR("Failed xterm 256 color bg esc 5");
                        else
                          {
                             // then get next arg - should be color index 0-255
                             arg = _csi_arg_get(&b);
-                            if (!b) ERR("Failed xterm 256 color bg esc val\n");
+                            if (!b) ERR("Failed xterm 256 color bg esc val");
                             else
                               {
                                  ty->state.att.bg256 = 1;
@@ -538,12 +540,12 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
                      case 98: // xterm 256 fg color ???
                        // now check if next arg is 5
                        arg = _csi_arg_get(&b);
-                       if (arg != 5) ERR("Failed xterm 256 color fg esc 5\n");
+                       if (arg != 5) ERR("Failed xterm 256 color fg esc 5");
                        else
                          {
                             // then get next arg - should be color index 0-255
                             arg = _csi_arg_get(&b);
-                            if (!b) ERR("Failed xterm 256 color fg esc val\n");
+                            if (!b) ERR("Failed xterm 256 color fg esc val");
                             else
                               {
                                  ty->state.att.fg256 = 1;
@@ -572,12 +574,12 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
                      case 108: // xterm 256 bg color ???
                        // now check if next arg is 5
                        arg = _csi_arg_get(&b);
-                       if (arg != 5) ERR("Failed xterm 256 color bg esc 5\n");
+                       if (arg != 5) ERR("Failed xterm 256 color bg esc 5");
                        else
                          {
                             // then get next arg - should be color index 0-255
                             arg = _csi_arg_get(&b);
-                            if (!b) ERR("Failed xterm 256 color bg esc val\n");
+                            if (!b) ERR("Failed xterm 256 color bg esc val");
                             else
                               {
                                  ty->state.att.bg256 = 1;
@@ -592,7 +594,7 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
                        ty->state.att.bgintense = 1;
                        break;
                      default: //  not handled???
-                       ERR("  color cmd [%i] not handled\n", arg);
+                       ERR("  color cmd [%i] not handled", arg);
                        break;
                     }
                }
@@ -800,7 +802,7 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
              if ((arg >= CLR_END) && (arg <= CLR_ALL))
                _clear_screen(ty, arg);
              else
-               ERR("invalid clr scr %i\n", arg);
+               ERR("invalid clr scr %i", arg);
           }
         else _clear_screen(ty, CLR_END);
         break;
@@ -811,7 +813,7 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
              if ((arg >= CLR_END) && (arg <= CLR_ALL))
                _clear_line(ty, arg, ty->w);
              else
-               ERR("invalid clr lin %i\n", arg);
+               ERR("invalid clr lin %i", arg);
           }
         else _clear_line(ty, CLR_END, ty->w);
         break;
@@ -847,7 +849,7 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
                                  break;
                                case 7:
                                  handled = 1;
-                                 DBG("DDD: set wrap mode to %i\n", mode);
+                                 DBG("DDD: set wrap mode to %i", mode);
                                  ty->state.wrap = mode;
                                  break;
                                case 20:
@@ -855,7 +857,7 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
                                  break;
                                case 12:
                                  handled = 1;
-//                                 DBG("XXX: set blinking cursor to (stop?) %i\n", mode);
+//                                 DBG("XXX: set blinking cursor to (stop?) %i", mode);
                                  break;
                                case 25:
                                  handled = 1;
@@ -863,13 +865,13 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
                                  break;
                                case 1000:
                                  handled = 1;
-                                 INF("XXX: set x11 mouse reporting to %i\n", mode);
+                                 INF("XXX: set x11 mouse reporting to %i", mode);
                                  break;
                                case 1049:
                                case 47:
                                case 1047:
                                  handled = 1;
-                                 DBG("DDD: switch buf\n");
+                                 DBG("DDD: switch buf");
                                  if (ty->altbuf)
                                    {
                                       // if we are looking at alt buf now,
@@ -914,7 +916,7 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
                                   DBG("Ignored screen mode %i", arg);
                                   break;
                                default:
-                                 ERR("unhandled screen mode arg %i\n", arg);
+                                 ERR("unhandled screen mode arg %i", arg);
                                  break;
                               }
                          }
@@ -935,27 +937,27 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
                             else if (arg == 4)
                               {
                                  handled = 1;
-                                 DBG("DDD: set insert mode to %i\n", mode);
+                                 DBG("DDD: set insert mode to %i", mode);
                                  ty->state.insert = mode;
                               }
 //                            else if (arg == 24)
 //                              {
-//                                 ERR("unhandled #24 arg %i\n", arg);
+//                                 ERR("unhandled #24 arg %i", arg);
 //                                  // ???
 //                              }
                             else
-                              ERR("unhandled screen non-priv mode arg %i, mode %i, ch '%c'\n", arg, mode, *cc);
+                              ERR("unhandled screen non-priv mode arg %i, mode %i, ch '%c'", arg, mode, *cc);
                          }
                     }
                }
-             if (!handled) ERR("unhandled '%c' : '%s'\n", *cc, buf);
+             if (!handled) ERR("unhandled '%c' : '%s'", *cc, buf);
           }
         break;
       case 'r':
         arg = _csi_arg_get(&b);
         if (!b)
           {
-             INF("no region args reset region\n");
+             INF("no region args reset region");
              ty->state.scroll_y1 = 0;
              ty->state.scroll_y2 = 0;
           }
@@ -966,7 +968,7 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
              arg2 = _csi_arg_get(&b);
              if (!b)
                {
-                  INF("failed to give 2 region args reset region\n");
+                  INF("failed to give 2 region args reset region");
                   ty->state.scroll_y1 = 0;
                   ty->state.scroll_y2 = 0;
                }
@@ -974,13 +976,13 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
                {
                   if (arg >= arg2)
                     {
-                       ERR("scroll region beginning >= end [%i %i]\n", arg, arg2);
+                       ERR("scroll region beginning >= end [%i %i]", arg, arg2);
                        ty->state.scroll_y1 = 0;
                        ty->state.scroll_y2 = 0;
                     }
                   else
                     {
-                       INF("2 region args: %i %i\n", arg, arg2);
+                       INF("2 region args: %i %i", arg, arg2);
                        if (arg >= ty->h) arg = ty->h - 1;
                        if (arg2 > ty->h) arg2 = ty->h;
                        arg2++;
@@ -1019,7 +1021,7 @@ _handle_esc_csi(Termpty *ty, const int *c, int *ce)
         break;
  */
       default:
-        ERR("unhandled CSI '%c' (0x%02x), buf='%s'\n", *cc, *cc, buf);
+        ERR("unhandled CSI '%c' (0x%02x), buf='%s'", *cc, *cc, buf);
         break;
      }
    cc++;
@@ -1075,7 +1077,7 @@ _handle_esc_xterm(Termpty *ty, const int *c, int *ce)
         break;
       default:
         // many others
-        ERR("unhandled xterm esc '%c' -> '%s'\n", buf[0], buf);
+        ERR("unhandled xterm esc '%c' -> '%s'", buf[0], buf);
         break;
      }
     return cc - c;
@@ -1085,7 +1087,7 @@ static int
 _handle_esc(Termpty *ty, const int *c, int *ce)
 {
    if ((ce - c) < 2) return 0;
-   DBG("ESC: '%c'\n", c[1]);
+   DBG("ESC: '%c'", c[1]);
    switch (c[1])
      {
       case '[':
@@ -1118,7 +1120,7 @@ _handle_esc(Termpty *ty, const int *c, int *ce)
         _term_txt_write(ty, "\033[?1;2C");
         return 2;
       case 'c': // reset terminal to initial state
-        DBG("reset to init mode and clear\n");
+        DBG("reset to init mode and clear");
         _reset_state(ty);
         _clear_screen(ty, CLR_ALL);
         if (ty->cb.cancel_sel.func)
@@ -1150,7 +1152,7 @@ _handle_esc(Termpty *ty, const int *c, int *ce)
              int i, size;
              Termcell *cells;
 
-             DBG("reset to init mode and clear then fill with E\n");
+             DBG("reset to init mode and clear then fill with E");
              _reset_state(ty);
              ty->save = ty->state;
              ty->swap = ty->state;
@@ -1184,7 +1186,7 @@ _handle_esc(Termpty *ty, const int *c, int *ce)
         return 2;
  */
       default:
-        ERR("eek - esc unhandled '%c' (0x%02x)\n", c[1], c[1]);
+        ERR("eek - esc unhandled '%c' (0x%02x)", c[1], c[1]);
         break;
      }
    return 1;
@@ -1220,18 +1222,18 @@ _handle_seq(Termpty *ty, const int *c, int *ce)
              return 1;
  */
            case 0x07: // BEL '\a' (bell)
-             INF("BEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEP\n");
+             INF("BEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEP");
              ty->state.had_cr = 0;
              return 1;
            case 0x08: // BS  '\b' (backspace)
-             DBG("->BS\n");
+             DBG("->BS");
              ty->state.wrapnext = 0;
              ty->state.cx--;
              if (ty->state.cx < 0) ty->state.cx = 0;
              ty->state.had_cr = 0;
              return 1;
            case 0x09: // HT  '\t' (horizontal tab)
-             DBG("->HT\n");
+             DBG("->HT");
              ty->screen[ty->state.cx + (ty->state.cy * ty->w)].att.tab = 1;
              ty->state.wrapnext = 0;
              ty->state.cx += 8;
@@ -1243,7 +1245,7 @@ _handle_seq(Termpty *ty, const int *c, int *ce)
            case 0x0a: // LF  '\n' (new line)
            case 0x0b: // VT  '\v' (vertical tab)
            case 0x0c: // FF  '\f' (form feed)
-             DBG("->LF\n");
+             DBG("->LF");
              if (ty->state.had_cr)
                ty->screen[ty->state.had_cr_x + (ty->state.had_cr_y * ty->w)].att.newline = 1;
              ty->state.wrapnext = 0;
@@ -1253,7 +1255,7 @@ _handle_seq(Termpty *ty, const int *c, int *ce)
              ty->state.had_cr = 0;
              return 1;
            case 0x0d: // CR  '\r' (carriage ret)
-             DBG("->CR\n");
+             DBG("->CR");
              if (ty->state.cx != 0)
                {
                   ty->state.had_cr_x = ty->state.cx;
@@ -1310,14 +1312,14 @@ _handle_seq(Termpty *ty, const int *c, int *ce)
              return 1;
  */
            default:
-             ERR("unhandled char 0x%02x\n", c[0]);
+             ERR("unhandled char 0x%02x", c[0]);
              ty->state.had_cr = 0;
              return 1;
           }
      }
    else if (c[0] == 0xf7) // DEL
      {
-        ERR("unhandled char 0x%02x [DEL]\n", c[0]);
+        ERR("unhandled char 0x%02x [DEL]", c[0]);
         ty->state.had_cr = 0;
         return 1;
      }
@@ -1330,7 +1332,7 @@ _handle_seq(Termpty *ty, const int *c, int *ce)
         cc++;
         len++;
      }
-   DBG("]\n");
+   DBG("]");
    _text_append(ty, c, len);
    ty->state.had_cr = 0;
    return len;
@@ -1350,9 +1352,9 @@ _handle_buf(Termpty *ty, const int *glyphs, int len)
         b = realloc(ty->buf, bytes);
         if (!b)
           {
-             ERR("memerr\n");
+             ERR("memerr");
           }
-        INF("realloc add %i + %i\n", (int)(ty->buflen * sizeof(int)), (int)(len * sizeof(int)));
+        INF("realloc add %i + %i", (int)(ty->buflen * sizeof(int)), (int)(len * sizeof(int)));
         bytes = len * sizeof(int);
         memcpy(&(b[ty->buflen]), glyphs, bytes);
         ty->buf = b;
@@ -1369,11 +1371,11 @@ _handle_buf(Termpty *ty, const int *glyphs, int len)
                   ty->buf = NULL;
                   ty->buflen = 0;
                   bytes = ((char *)ce - (char *)c) + sizeof(int);
-                  INF("malloc til %i\n", (int)(bytes - sizeof(int)));
+                  INF("malloc til %i", (int)(bytes - sizeof(int)));
                   ty->buf = malloc(bytes);
                   if (!ty->buf)
                     {
-                       ERR("memerr\n");
+                       ERR("memerr");
                     }
                   bytes = (char *)ce - (char *)c;
                   memcpy(ty->buf, c, bytes);
@@ -1403,10 +1405,10 @@ _handle_buf(Termpty *ty, const int *glyphs, int len)
                {
                   bytes = ((char *)ce - (char *)c) + sizeof(int);
                   ty->buf = malloc(bytes);
-                  INF("malloc %i\n", (int)(bytes - sizeof(int)));
+                  INF("malloc %i", (int)(bytes - sizeof(int)));
                   if (!ty->buf)
                     {
-                       ERR("memerr\n");
+                       ERR("memerr");
                     }
                   bytes = (char *)ce - (char *)c;
                   memcpy(ty->buf, c, bytes);
@@ -1428,7 +1430,8 @@ _pty_size(Termpty *ty)
    sz.ws_row = ty->h;
    sz.ws_xpixel = 0;
    sz.ws_ypixel = 0;
-   if (ioctl(ty->fd, TIOCSWINSZ, &sz) < 0) perror("Size set ioctl failed\n");
+   if (ioctl(ty->fd, TIOCSWINSZ, &sz) < 0)
+     ERR("Size set ioctl failed: %s", strerror(errno));
 }
 
 static Eina_Bool
@@ -1467,11 +1470,11 @@ _cb_fd_read(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__)
                {
                   i = evas_string_char_next_get(buf, i, &g);
                   if (i < 0) break;
-//                  DBG("(%i) %02x '%c'\n", j, g, g);
+//                  DBG("(%i) %02x '%c'", j, g, g);
                }
              else
                {
-                  ERR("ZERO GLYPH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
+                  ERR("ZERO GLYPH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                   g = 0;
                   i++;
                }
@@ -1479,7 +1482,7 @@ _cb_fd_read(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__)
              j++;
           }
         glyph[j] = 0;
-//        DBG("---------------- handle buf %i\n", j);
+//        DBG("---------------- handle buf %i", j);
         _handle_buf(ty, glyph, j);
      }
    if (ty->cb.change.func) ty->cb.change.func(ty->cb.change.data);
@@ -1654,7 +1657,7 @@ termpty_cellrow_get(Termpty *ty, int y, int *wret)
 void
 termpty_write(Termpty *ty, const char *input, int len)
 {
-   if (write(ty->fd, input, len) < 0) perror("write");
+   if (write(ty->fd, input, len) < 0) ERR("write %s", strerror(errno));
 }
 
 void