steps[cnt].__init_fct = steps[cnt].__shlib_handle->init_fct; steps[cnt].__fct = steps[cnt].__shlib_handle->fct; steps[cnt].__end_fct = steps[cnt].__shlib_handle->end_fct;  if (steps[cnt].__end_fct != NULL) DL_CALL_FCT (steps[cnt].__end_fct, &steps[cnt]); if (steps[cnt].__init_fct != NULL) DL_CALL_FCT (steps[cnt].__init_fct, &steps[cnt]);
increment_counter (struct __gconv_step *steps, size_t nsteps){  /* Increment the user counter.  */  size_t cnt = nsteps;  int result = __GCONV_OK;  while (cnt-- > 0)    if (steps[cnt].__counter++ == 0)      {	steps[cnt].__shlib_handle =	  __gconv_find_shlib (steps[cnt].__modname);	if (steps[cnt].__shlib_handle == NULL)	  {	    /* Oops, this is the second time we use this module (after	       unloading) and this time loading failed!?  */	    while (++cnt < nsteps)	      __gconv_release_shlib (steps[cnt].__shlib_handle);	    result = __GCONV_NOCONV;	    break;	  }      }  return result;}