diff -urN cui84/Makefile cui85/Makefile --- cui84/Makefile Thu Mar 27 01:00:00 2014 +++ cui85/Makefile Sun Mar 30 22:00:00 2014 @@ -1,7 +1,7 @@ CC = gcc -Wall TARG = cui_test -OBJS = cui.o focus.o etext.o menu.o dialog.o timer.o term.o scpanel.o tbar.o rszbox.o scbar.o fillbtn.o tab.o radio.o ckbox.o button.o lblfix.o fill.o label.o panel.o handler.o esc.o key.o rect.o +OBJS = cui.o focus.o etext.o menu.o dialog.o timer.o term.o scpanel.o tbar.o rszbox.o scbar.o fillbtn.o tab.o radio.o ckbox.o button.o lblfix.o fill.o label.o panel.o handler.o esc.o key.o rect.o dbg.o all: $(TARG) diff -urN cui84/cui.h cui85/cui.h --- cui84/cui.h Thu Mar 27 23:00:00 2014 +++ cui85/cui.h Sun Mar 30 22:00:00 2014 @@ -7,6 +7,8 @@ typedef struct cui_base *cui; +#include "dbg.h" + #define MSG(s) fprintf(stderr, "%s() %s L%d : %s\n", __func__, __FILE__, __LINE__, s) #define ERR(s) do{ fprintf(stderr, "ERR "); MSG(s); exit(1); }while(0) diff -urN cui84/cui_test.c cui85/cui_test.c --- cui84/cui_test.c Fri Mar 28 03:00:00 2014 +++ cui85/cui_test.c Sun Mar 30 22:00:00 2014 @@ -409,8 +409,9 @@ } int -main() +main(int ac, char **av) { + int dbg_ret = cui_dbg_open(ac, av); cui bs = cui_scpanel_new(NULL, 0, 0, 42, 23, "cui_test"); cui bs_bar = cui_base_new(bs, 1, 2, 0, 0); cui lb_bar = cui_label_new(bs_bar, 1, 1, "bar"); @@ -442,6 +443,8 @@ char lb_timer1_buf[16]; + cui_dbg_open(ac, av); + big_new(small2, 0, 0, &p); cui_wh_fit(small2); @@ -485,6 +488,7 @@ cui_main(bs, NULL); printf("result %s\n", p->btn_result); cui_free(bs); + if(dbg_ret == 0) cui_dbg_close(); return 0; } diff -urN cui84/dbg.c cui85/dbg.c --- cui84/dbg.c Thu Jan 1 09:00:00 1970 +++ cui85/dbg.c Sun Mar 30 22:00:00 2014 @@ -0,0 +1,43 @@ +#include "dbg.h" +#include +#include +#include +#include + +static FILE *fp = NULL; + +int +cui_dbg_open(int ac, char **av) +{ + char buf[1024]; + int i; + char *nc_opt = "localhost 12345"; + + for(i=1; i= ac) return 0; + + if(i+1 < ac) nc_opt = av[i+1]; + sprintf(buf, "nc %s", nc_opt); + if((fp = popen(buf, "w")) == NULL) return -1; + return 0; +} + +void +cui_dbg_close(void) +{ + if(fp) pclose(fp); +} + +void +cui_dbg(char *fmt, ...) +{ + va_list ap; + + if(!fp) return; + va_start(ap, fmt); + vfprintf(fp, fmt, ap); + fflush(fp); + va_end(ap); +} + +/* EOF */ diff -urN cui84/dbg.h cui85/dbg.h --- cui84/dbg.h Thu Jan 1 09:00:00 1970 +++ cui85/dbg.h Sun Mar 30 22:00:00 2014 @@ -0,0 +1,8 @@ +#ifndef __DBG_H__ +#define __DBG_H__ + +int cui_dbg_open(int ac, char **av); +void cui_dbg_close(void); +void cui_dbg(char *fmt, ...); + +#endif diff -urN cui84/term.c cui85/term.c --- cui84/term.c Fri Mar 28 03:00:00 2014 +++ cui85/term.c Sun Mar 30 22:00:00 2014 @@ -395,6 +395,7 @@ if(pipe(pipe_from_sh) < 0) ERR("pipe"); if((ret = fork()) < 0) ERR("fork"); if(ret == 0){ /* child */ + setsid(); close(pipe_to_sh[1]); close(pipe_from_sh[0]); dup2(pipe_to_sh[0] ,0); @@ -427,6 +428,7 @@ cui_terminal p = (cui_terminal)obj; int evts; + cui_dbg("cui_terminal_init\n"); cui_base_init(obj, parent, x, y, w, h); obj->flags |= CUI_FLG_CAN_FOCUS; @@ -438,6 +440,7 @@ p->rszbox = cui_rszbox_new(obj); boot_sh(obj); + cui_dbg("pipr_r=%d , pipe_w=%d\n", p->pipe_r, p->pipe_w); evts = CUI_EVT_DRAW|CUI_EVT_KEY|CUI_EVT_RESIZE|CUI_EVT_TIMER|CUI_EVT_READABLE; cui_bind(obj, evts, cui_terminal_hdr, NULL);