- if (shell_initialized)
- {
- MDEBUG_PUSH_TIME ();
- MDEBUG_PUSH_TIME ();
- MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize input module."));
- minput__fini ();
- MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize locale module."));
- mlocale__fini ();
- MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize language module."));
- mlang__fini ();
- MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize character module."));
- mchar__fini ();
- MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize database module."));
- mdatabase__fini ();
- MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize coding module."));
- mcoding__fini ();
- MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize charset module."));
- mcharset__fini ();
- MDEBUG_POP_TIME ();
- MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize the shell modules."));
- MDEBUG_POP_TIME ();
- shell_initialized = 0;
- }
+ if (m17n__shell_initialized == 0
+ || --m17n__shell_initialized > 0)
+ return;
+
+ MDEBUG_PUSH_TIME ();
+ MDEBUG_PUSH_TIME ();
+ minput__fini ();
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize input module."));
+ mlocale__fini ();
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize locale module."));
+ mlang__fini ();
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize language module."));
+ mchar__fini ();
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize character module."));
+ mdatabase__fini ();
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize database module."));
+ mcoding__fini ();
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize coding module."));
+ mcharset__fini ();
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize charset module."));
+ MDEBUG_POP_TIME ();
+ MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize the shell modules."));
+ MDEBUG_POP_TIME ();