size_t written;
size_t dummy;
do_in (struct _IO_codecvt *codecvt, __mbstate_t *statep,       const char *from_start, const char *from_end, const char **from_stop,       wchar_t *to_start, wchar_t *to_end, wchar_t **to_stop){  enum __codecvt_result result;#ifdef _LIBC  struct __gconv_step *gs = codecvt->__cd_in.__cd.__steps;  int status;  size_t written;  const unsigned char *from_start_copy = (unsigned char *) from_start;  codecvt->__cd_in.__cd.__data[0].__outbuf = (char *) to_start;  codecvt->__cd_in.__cd.__data[0].__outbufend = (char *) to_end;  codecvt->__cd_in.__cd.__data[0].__statep = statep;  status = (*gs->__fct) (gs, codecvt->__cd_in.__cd.__data, &from_start_copy,			 from_end, &written, 0, 0);  *from_stop = from_start_copy;  *to_stop = (wchar_t *) codecvt->__cd_in.__cd.__data[0].__outbuf;  switch (status)    {    case __GCONV_OK:    case __GCONV_EMPTY_INPUT:      result = __codecvt_ok;      break;    case __GCONV_FULL_OUTPUT:    case __GCONV_INCOMPLETE_INPUT:      result = __codecvt_partial;      break;    default:      result = __codecvt_error;      break;    }#else  /* Decide what to do.  */  result = __codecvt_error;#endif  return result;}