X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fm17n.c;h=c12424a781c60ecc729ead2c73959a831573c334;hb=216e8bfcfec7ad940d18e274a6b76179ef9371ef;hp=d8ca38f2e6329c4993de090f8de1b3e046865712;hpb=8fa960686724e2840028bde6f9f821ff9bbb2a46;p=m17n%2Fm17n-lib.git diff --git a/src/m17n.c b/src/m17n.c index d8ca38f..c12424a 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) @@ -76,7 +80,6 @@ m17n_init (void) if (minput__init () < 0) goto err; MDEBUG_PRINT_TIME ("INIT", (stderr, " to initialize input module.")); - shell_initialized = 1; err: MDEBUG_POP_TIME (); @@ -89,32 +92,34 @@ m17n_fini (void) { int mdebug_mask = MDEBUG_FINI; - 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 (); m17n_fini_core (); } +#endif /* !FOR_DOXYGEN || DOXYGEN_INTERNAL_MODULE */ + /* Local Variables: coding: euc-japan