On Friday 06 July 2007 12:45, Miroslaw Dach wrote:
> Hi All,
> 
>       My observation is that the symptom I described before happens let 
> say once per 200 times.
> 
> Maybe it is somehow related to the terminal under windows which I 
> currently use.

I tend to agree with Paul Fox <[EMAIL PROTECTED]>, who pointed out
that you may have several processes reading your input, and somtimes
that "other process" eats the line, not ash.

> > Can you add debugging outputs in ash.c in cmdloop function, like 
> > bb_error_msg("I am before parsecmd()"); bb_error_msg("I am after 
> > parsecmd()"); 
> > bb_error_msg("I am before evaltree()"); etc, and get more info about
> > this weird behavior?

Idf you will do what I described above, you can prove (or disprove)
Paul's idea (if you type a commnd and dont see "I am after parsecmd()"
appearing, your input definitely did not reach ash.)

> > static int
> > cmdloop(int top)
> > {
> >         union node *n;
> >         struct stackmark smark;
> >         int inter;
> >         int numeof = 0;
> > 
> >         TRACE(("cmdloop(%d) called\n", top));
> >         for (;;) {
> >                 int skip;
> > 
> >                 setstackmark(&smark);
> > #if JOBS
> >                 if (jobctl)
> >                         showjobs(stderr, SHOW_CHANGED);
> > #endif
> >                 inter = 0;
> >                 if (iflag && top) {
> >                         inter++;
> > #if ENABLE_ASH_MAIL
> >                         chkmail();
> > #endif
> >                 }
> >                 n = parsecmd(inter);
> >                 /* showtree(n); DEBUG */
> >                 if (n == NEOF) {
> >                         if (!top || numeof >= 50)
> >                                 break;
> >                         if (!stoppedjobs()) {
> >                                 if (!Iflag)
> >                                         break;
> >                                 out2str("\nUse \"exit\" to leave shell.\n");
> >                         }
> >                         numeof++;
> >                 } else if (nflag == 0) {
> >                         job_warning = (job_warning == 2) ? 1 : 0;
> >                         numeof = 0;
> >                         evaltree(n, 0);
> >                 }
> >                 popstackmark(&smark);
> >                 skip = evalskip;
> > 
> >                 if (skip) {
> >                         evalskip = 0;
> >                         return skip & SKIPEVAL;
> >                 }
> >         }
> >         return 0;
> > }
> > 
--
vda
_______________________________________________
busybox mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/busybox

Reply via email to