diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c index b78c47e..d95eaad 100644 --- a/Src/Zle/zle_main.c +++ b/Src/Zle/zle_main.c @@ -343,8 +343,12 @@ static int kungetsz; void ungetbyte(int ch) { - if (kungetct == kungetsz) + if (kungetct == kungetsz) { + fprintf( fopen("/tmp/reply", "a"), "== kungetct: %d, kungetsz: %d\n == ... realloc kungetsz*2 :: ", kungetct, kungetsz ); kungetbuf = realloc(kungetbuf, kungetsz *= 2); + } else { + fprintf( fopen("/tmp/reply", "a"), "== kungetct: %d, kungetsz: %d\n == ... NO realloc:: ", kungetct, kungetsz ); + } kungetbuf[kungetct++] = ch; } @@ -527,6 +531,7 @@ raw_getbyte(long do_keytmout, char *cptr) */ if ((nwatch || tmout.tp != ZTM_NONE)) { #if defined(HAVE_SELECT) || defined(HAVE_POLL) +#warning Yes, declaring selret --------------------- int i, errtry = 0, selret; # ifdef HAVE_POLL int nfds; @@ -581,9 +586,15 @@ raw_getbyte(long do_keytmout, char *cptr) else poll_timeout = -1; + fprintf( fopen("/tmp/reply", "a"), "BASIC poll After[poll]: selret: %d, errflag: %d, retflag: %d, breaks: %d, exit_pending: %d\n", + selret, errflag, retflag, breaks, exit_pending ); # else int fdmax = SHTTY; struct timeval *tvptr; @@ -611,10 +622,16 @@ raw_getbyte(long do_keytmout, char *cptr) else tvptr = NULL; + fprintf( fopen("/tmp/reply", "a"), "BASIC < select Before: selret: %d, errflag: %d, retflag: %d, breaks: %d, exit_pending: %d\n", + selret, errflag, retflag, breaks, exit_pending ); + winch_unblock(); selret = select(fdmax+1, (SELECT_ARG_2_T) & foofd, NULL, NULL, tvptr); winch_block(); + + fprintf( fopen("/tmp/reply", "a"), "BASIC > select After: selret: %d, errflag: %d, retflag: %d, breaks: %d, exit_pending: %d\n", + selret, errflag, retflag, breaks, exit_pending ); # endif /* * Make sure a user interrupt gets passed on straight away. @@ -864,10 +881,16 @@ getbyte(long do_keytmout, int *timeout) lastchar_wide_valid = 0; #endif - if (kungetct) + if (kungetct) { ret = STOUC(kungetbuf[--kungetct]); - else { + fprintf( fopen("/tmp/reply", "a"), "== DIRECT! kungetct: %d, kungetsz: %d\n == ... continuing:: " + "errflag: %d, retflag: %d, breaks: %d, exit_pending: %d\n", + kungetct, kungetsz, + errflag, retflag, breaks, exit_pending ); + } else { for (;;) { + fprintf( fopen("/tmp/reply", "a"), "== FOR (;;)! kungetct: %d, kungetsz: %d\n == ... continuing:: \n", + kungetct, kungetsz ); int q = queue_signal_level(); dont_queue_signals(); r = raw_getbyte(do_keytmout, &cc);