Lines Matching refs:st

57 void AddChar (char Char, struct _cv_state *st);
200 struct _cv_state *st; in _cv_open() local
202 if ((st = (struct _cv_state *)malloc(sizeof(struct _cv_state))) == NULL) in _cv_open()
205 st->invalid = 0; in _cv_open()
206 st->flush_obuf = 0; in _cv_open()
207 st->ibuf_left = 0; in _cv_open()
208 st->start_cnt = 0; in _cv_open()
209 st->end_cnt = 0; in _cv_open()
211 return (st); in _cv_open()
215 _cv_close(st) in _cv_close() argument
216 struct _cv_state *st; in _cv_close()
218 free(st);
223 _cv_enconv(st, inbuf, inbytesleft, outbuf, outbytesleft) in _cv_enconv() argument
224 struct _cv_state *st; in _cv_enconv()
234 st->invalid = 0;
235 st->flush_obuf = 0;
236 st->ibuf_left = 0;
237 st->start_cnt = 0;
238 st->end_cnt = 0;
242 if (st->flush_obuf) {
243 while ((*outbytesleft > 0) && (st->start_cnt < st->end_cnt)) {
244 **outbuf = st->temp_obuf[st->start_cnt];
247 (st->start_cnt)++;
250 if (st->start_cnt < st->end_cnt) {
253 st->flush_obuf = 0;
254 st->start_cnt = 0;
255 st->end_cnt = 0;
259 st->my_outbuf = outbuf;
260 st->my_outbytesleft = outbytesleft;
262 while (*inbytesleft > 0 && *(st->my_outbytesleft) > 0) {
264 if (st->ibuf_left) {
265 c = st->temp_ibuf[0];
266 st->ibuf_left = 0;
274 st->ibuf_left = 1;
275 st->temp_ibuf[0] = c;
284 AddChar ('?', st);
285 AddChar ('?', st);
287 AddChar (code>>8, st);
288 AddChar (code&BYTE_MASK, st);
290 if (st->invalid) {
291 st->invalid = 0;
296 AddChar (c, st);
297 if (st->invalid) {
298 st->invalid = 0;
307 AddChar (Char, st) in AddChar() argument
309 struct _cv_state *st;
312 if (*(st->my_outbytesleft) <= 0) {
313 st->invalid = 1;
314 st->temp_obuf[st->end_cnt] = Char;
315 st->end_cnt++;
316 st->flush_obuf = 1;
318 **(st->my_outbuf) = Char;
319 (*(st->my_outbuf))++, (*(st->my_outbytesleft))--;
342 struct _cv_state *st; in main() local
352 st = _cv_open(); in main()
360 _cv_enconv(st, &ip1, &ileft, &op1, &oleft)); in main()
362 printf(" flush_obuf %d ibuf_left %d\n", st->flush_obuf, in main()
363 st->ibuf_left); in main()
369 _cv_close(st); in main()
375 st = _cv_open(); in main()
383 _cv_enconv(st, &ip2, &ileft, &op2, &oleft)); in main()
385 printf(" flush_obuf %d ibuf_left %d\n", st->flush_obuf, in main()
386 st->ibuf_left); in main()
402 _cv_enconv(st, &ip21, &ileft, &op2, &oleft)); in main()
404 printf(" flush_obuf %d ibuf_left %d\n", st->flush_obuf, in main()
405 st->ibuf_left); in main()
411 _cv_close(st); in main()
417 st = _cv_open(); in main()
425 _cv_enconv(st, &ip3, &ileft, &op3, &oleft)); in main()
427 printf(" flush_obuf %d ibuf_left %d\n", st->flush_obuf, in main()
428 st->ibuf_left); in main()
429 printf(" strat_cnt %d end_cnt %d\n", st->start_cnt, in main()
430 st->end_cnt); in main()
440 _cv_enconv(st, &ip3, &ileft, &op3, &oleft)); in main()
442 printf(" flush_obuf %d ibuf_left %d\n", st->flush_obuf, in main()
443 st->ibuf_left); in main()
444 printf(" strat_cnt %d end_cnt %d\n", st->start_cnt, in main()
445 st->end_cnt); in main()
455 _cv_enconv(st, &ip3, &ileft, &op3, &oleft)); in main()
457 printf(" flush_obuf %d ibuf_left %d\n", st->flush_obuf, in main()
458 st->ibuf_left); in main()
459 printf(" strat_cnt %d end_cnt %d\n", st->start_cnt, in main()
460 st->end_cnt); in main()
466 _cv_close(st); in main()