Lines Matching refs:st

53 	_iconv_st  *st;  in _icv_open()  local
56 if (( st = (_iconv_st *) malloc( sizeof( _iconv_st ))) == NULL ){ in _icv_open()
62 st->Sfunc = SI; in _icv_open()
63 st->SSfunc = NONE; in _icv_open()
64 st->ESCstate = OFF; in _icv_open()
65 st->firstbyte = True; in _icv_open()
66 st->numsav = 0; in _icv_open()
67 st->SOcharset = 0; /* no default charset */ in _icv_open()
68 st->SS2charset = 0; /* no default charset */ in _icv_open()
69 st->SS3charset = 0; /* no default charset */ in _icv_open()
70 st->nonidcount = 0; in _icv_open()
71 st->_errno = 0; in _icv_open()
74 return ((void *) st); in _icv_open()
85 _icv_close(_iconv_st *st) in _icv_close() argument
87 if (st == NULL ) in _icv_close()
90 free(st); in _icv_close()
108 iso2022_icv_iconv(_iconv_st *st, char **inbuf, size_t *inbytesleft, in iso2022_icv_iconv() argument
114 if (st == NULL) { in iso2022_icv_iconv()
121 st->Sfunc = SI; in iso2022_icv_iconv()
122 st->SSfunc = NONE; in iso2022_icv_iconv()
123 st->ESCstate = OFF; in iso2022_icv_iconv()
124 st->firstbyte = True; in iso2022_icv_iconv()
125 st->numsav = 0; in iso2022_icv_iconv()
126 st->SOcharset = 0; in iso2022_icv_iconv()
127 st->SS2charset = 0; in iso2022_icv_iconv()
128 st->SS3charset = 0; in iso2022_icv_iconv()
129 st->nonidcount = 0; in iso2022_icv_iconv()
130 st->_errno = 0; in iso2022_icv_iconv()
134 st->_errno = 0; in iso2022_icv_iconv()
155 if (st->firstbyte == False) { /* Is SO, SS2, SS3 second byte */ in iso2022_icv_iconv()
156 st->keepc[1] = **inbuf; in iso2022_icv_iconv()
157 n = (*convert)( st, outbuf, outbytesleft, iscns(st) ); in iso2022_icv_iconv()
161 n = ascii_to_euc(NON_ID_CHAR, st, outbuf, outbytesleft); in iso2022_icv_iconv()
164 st->nonidcount += 1; in iso2022_icv_iconv()
166 st->nonidcount -= 1; /* The first byte identified as in iso2022_icv_iconv()
169 st->firstbyte = True; in iso2022_icv_iconv()
170 st->SSfunc = NONE; /* If we just processed SS bytes, in iso2022_icv_iconv()
174 } else if ( st->SSfunc != NONE ) { /* We are currently expecting in iso2022_icv_iconv()
176 st->keepc[0] = **inbuf; in iso2022_icv_iconv()
177 st->nonidcount += 1; in iso2022_icv_iconv()
178 st->firstbyte = False; in iso2022_icv_iconv()
179 } else if ( **inbuf == ESC && st->ESCstate == OFF ) { in iso2022_icv_iconv()
180 st->nonidcount += 1; /* For the ESC character */ in iso2022_icv_iconv()
181 st->ESCstate = E0; in iso2022_icv_iconv()
182 } else if ( st->ESCstate != OFF ) { /* Continue processing the in iso2022_icv_iconv()
184 ret = process_esc_seq( **inbuf, st ); in iso2022_icv_iconv()
187 st->ESCstate = OFF; in iso2022_icv_iconv()
189 if (st->Sfunc == SI){ /* An invalid ESC sequence in iso2022_icv_iconv()
194 n = ascii_to_euc( **inbuf, st, outbuf, outbytesleft ); in iso2022_icv_iconv()
197 st->nonidcount -= st->numsav; /* Since invalid Esc in iso2022_icv_iconv()
200 } else if (st->Sfunc == SO) { /* An invalid ESC sequence in iso2022_icv_iconv()
207 st->_errno = errno = EILSEQ; in iso2022_icv_iconv()
208 st->nonidcount += 1; /* For this character */ in iso2022_icv_iconv()
210 st->numsav = 0; /* Discard the saved characters of in iso2022_icv_iconv()
212 st->ESCstate = OFF; in iso2022_icv_iconv()
214 } else if (st->Sfunc == SI) { in iso2022_icv_iconv()
216 if ( **inbuf == SO && st->SOcharset != 0 ){ in iso2022_icv_iconv()
217 st->Sfunc = SO; in iso2022_icv_iconv()
219 n = ascii_to_euc(**inbuf, st, outbuf, outbytesleft ); in iso2022_icv_iconv()
223 } else if (st->Sfunc == SO) { in iso2022_icv_iconv()
225 st->Sfunc = SI; in iso2022_icv_iconv()
228 st->keepc[0] = **inbuf; in iso2022_icv_iconv()
229 st->nonidcount += 1; in iso2022_icv_iconv()
230 st->firstbyte = False; in iso2022_icv_iconv()
240 if ( st->_errno) in iso2022_icv_iconv()
259 return (*inbytesleft + st->nonidcount); in iso2022_icv_iconv()
264 process_esc_seq( char c, _iconv_st *st ) in process_esc_seq() argument
267 switch(st->ESCstate){ in process_esc_seq()
271 if ( st->SS2charset == 0 ){ in process_esc_seq()
274 st->savbuf[0] = ESC; in process_esc_seq()
275 st->numsav = 1; in process_esc_seq()
278 st->SSfunc = SS2; in process_esc_seq()
281 st->nonidcount -= 1; in process_esc_seq()
284 if ( st->SS3charset == 0 ){ in process_esc_seq()
287 st->savbuf[0] = ESC; in process_esc_seq()
288 st->numsav = 1; in process_esc_seq()
291 st->SSfunc = SS3; in process_esc_seq()
294 st->nonidcount -= 1; in process_esc_seq()
297 st->nonidcount += 1; /* ESC sequence not complete yet */ in process_esc_seq()
298 st->ESCstate = E1; in process_esc_seq()
301 st->savbuf[0] = ESC; in process_esc_seq()
302 st->numsav = 1; in process_esc_seq()
310 st->nonidcount += 1; /* ESC sequence not complete yet */ in process_esc_seq()
311 st->ESCstate = E2; in process_esc_seq()
314 st->nonidcount += 1; /* ESC sequence not complete yet */ in process_esc_seq()
315 st->ESCstate = E3; in process_esc_seq()
318 st->nonidcount += 1; /* ESC sequence not complete yet */ in process_esc_seq()
319 st->ESCstate = E4; in process_esc_seq()
322 st->savbuf[0] = ESC; in process_esc_seq()
323 st->savbuf[1] = '$'; in process_esc_seq()
324 st->numsav = 2; in process_esc_seq()
329 st->SOcharset = c; in process_esc_seq()
332 st->nonidcount -= 3; in process_esc_seq()
336 st->SS2charset = c; in process_esc_seq()
339 st->nonidcount -= 3; in process_esc_seq()
343 st->SS3charset = c; in process_esc_seq()
346 st->nonidcount -= 3; in process_esc_seq()
352 st->_errno = errno = EILSEQ; in process_esc_seq()
360 ascii_to_euc( char c, _iconv_st *st, unsigned char **outbuf, size_t *outbytesleft ) in ascii_to_euc() argument
365 if ( *outbytesleft < (1 + st->numsav) ) { in ascii_to_euc()
366 st->_errno = errno = E2BIG; in ascii_to_euc()
370 for ( i=0; i < st->numsav; i++ ) { in ascii_to_euc()
371 *(*outbuf)++ = (unsigned char) st->savbuf[i]; in ascii_to_euc()
383 iscns( _iconv_st *st ) in iscns() argument
387 if ( st->SSfunc == NONE && st->SOcharset == 'G' ) in iscns()
389 else if ( st->SSfunc == SS2 && st->SS2charset == 'H' ) in iscns()
391 else if ( st->SSfunc == SS3 ) in iscns()
392 switch ( st->SS3charset ){ in iscns()