X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=madtty%2Fmadtty.c;h=c35959aaee21539f0b3198e0e4b3d76721681a74;hb=0b11e26f67ee0114f87c692c0d8f9e66ddf8b9ef;hp=317712c147756556deca45b2eb9abe76151c8536;hpb=c50afdbb8673cc2becc273935b05833c0b06daf2;p=apps%2Fmadtty.git diff --git a/madtty/madtty.c b/madtty/madtty.c index 317712c..c35959a 100644 --- a/madtty/madtty.c +++ b/madtty/madtty.c @@ -106,6 +106,8 @@ struct madtty_t { char rbuf[BUFSIZ]; char ebuf[BUFSIZ]; int rlen, elen; + madtty_handler_t handler; + void *data; }; typedef struct t_row_t { @@ -597,11 +599,17 @@ static void es_interpret_csi(madtty_t *t) static void try_interpret_escape_seq(madtty_t *t) { char lastchar = t->ebuf[t->elen-1]; - + if(!*t->ebuf) + return; + if(t->handler){ + switch((*(t->handler))(t, t->ebuf)){ + case MADTTY_HANDLER_OK: + goto cancel; + case MADTTY_HANDLER_NOTYET: + return; + } + } switch (*t->ebuf) { - case '\0': - return; - case 'M': interpret_csi_SR(t); cancel_escape_sequence(t); @@ -1083,3 +1091,18 @@ int madtty_color_pair(int fg, int bg) bg = COLOR_BLACK; return COLOR_PAIR((7 - fg) * 8 + bg); } + +void madtty_set_handler(madtty_t *t, madtty_handler_t handler) +{ + t->handler = handler; +} + +void madtty_set_data(madtty_t *t, void *data) +{ + t->data = data; +} + +void *madtty_get_data(madtty_t *t) +{ + return t->data; +}