diff --git a/src/cmd/ksh93/sh/fcin.c b/src/cmd/ksh93/sh/fcin.c index ea6ea6b..08c1f2a 100644 --- a/src/cmd/ksh93/sh/fcin.c +++ b/src/cmd/ksh93/sh/fcin.c @@ -150,63 +150,19 @@ extern void fcrestore(Fcin_t *fp) _Fcin = *fp; } -/* for testing purposes with small buffers */ -#if defined(IOBSIZE) && (IOBSIZE < 2*MB_LEN_MAX) -# undef MB_LEN_MAX -# define MB_LEN_MAX (IOBSIZE/2) -#endif - -struct Extra -{ - unsigned char buff[2*MB_LEN_MAX]; - unsigned char *next; -}; - int _fcmbget(short *len) { - static struct Extra extra; - register int i, c, n; - if(_Fcin.fcleft) - { - if((c = mbsize(extra.next)) < 0) - c = 1; - if((_Fcin.fcleft -= c) <=0) - { - _Fcin.fcptr = (unsigned char*)fcfirst() - _Fcin.fcleft; - _Fcin.fcleft = 0; - } - *len = c; - if(c==1) - c = *extra.next++; - else if(c==0) - _Fcin.fcleft = 0; - else - c = mbchar(extra.next); - return(c); - } - switch(*len = mbsize(_Fcin.fcptr)) + register int c; + switch (*len = mbsize(_Fcin.fcptr)) { - case -1: - if(_Fcin._fcfile && (n=(_Fcin.fclast-_Fcin.fcptr)) < MB_LEN_MAX) - { - memcpy(extra.buff, _Fcin.fcptr, n); - _Fcin.fcptr = _Fcin.fclast; - for(i=n; i < MB_LEN_MAX+n; i++) - { - if((extra.buff[i] = fcgetc(c))==0) - break; - } - _Fcin.fcleft = n; - extra.next = extra.buff; - return(fcmbget(len)); - } + case -1: *len = 1; /* fall through */ - case 0: - case 1: + case 0: + case 1: c=fcget(); break; - default: + default: c = mbchar(_Fcin.fcptr); } return(c);