X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fm17n.c;h=4a9ac5ead536eb0cf6e35a1a3d462e0b5b9f006a;hb=819616dacfef49aad64a7a6f7460ab26c0bfbf2b;hp=90bdd20961d07218ebdd097baaa7cfdeeb9ecbbf;hpb=bee03d70bf007ab9f0b619f97bf772b220840d33;p=m17n%2Fm17n-lib.git diff --git a/src/m17n.c b/src/m17n.c index 90bdd20..4a9ac5e 100644 --- a/src/m17n.c +++ b/src/m17n.c @@ -29,7 +29,7 @@ #include "charset.h" #include "coding.h" -static int shell_initialized; +#if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE) /* Internal API */ @@ -42,11 +42,15 @@ m17n_init (void) { int mdebug_mask = MDEBUG_INIT; - if (shell_initialized++) + merror_code = MERROR_NONE; + if (m17n__shell_initialized++) return; m17n_init_core (); if (merror_code != MERROR_NONE) - return; + { + m17n__shell_initialized--; + return; + } MDEBUG_PUSH_TIME (); MDEBUG_PUSH_TIME (); if (mcharset__init () < 0) @@ -88,34 +92,34 @@ m17n_fini (void) { int mdebug_mask = MDEBUG_FINI; - if (shell_initialized > 1) - shell_initialized--; - else - { - shell_initialized = 0; - MDEBUG_PUSH_TIME (); - MDEBUG_PUSH_TIME (); - MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize input module.")); - minput__fini (); - MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize locale module.")); - mlocale__fini (); - MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize language module.")); - mlang__fini (); - MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize character module.")); - mchar__fini (); - MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize database module.")); - mdatabase__fini (); - MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize coding module.")); - mcoding__fini (); - MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize charset module.")); - mcharset__fini (); - MDEBUG_POP_TIME (); - MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize the shell modules.")); - MDEBUG_POP_TIME (); - } + if (m17n__shell_initialized == 0 + || --m17n__shell_initialized > 0) + return; + + MDEBUG_PUSH_TIME (); + MDEBUG_PUSH_TIME (); + MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize input module.")); + minput__fini (); + MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize locale module.")); + mlocale__fini (); + MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize language module.")); + mlang__fini (); + MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize character module.")); + mchar__fini (); + MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize database module.")); + mdatabase__fini (); + MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize coding module.")); + mcoding__fini (); + MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize charset module.")); + mcharset__fini (); + MDEBUG_POP_TIME (); + MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize the shell modules.")); + MDEBUG_POP_TIME (); m17n_fini_core (); } +#endif /* !FOR_DOXYGEN || DOXYGEN_INTERNAL_MODULE */ + /* Local Variables: coding: euc-japan