intl/icu/source/io/ucln_io.c

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /*
     2 ******************************************************************************
     3 *                                                                            *
     4 * Copyright (C) 2001-2013, International Business Machines                   *
     5 *                Corporation and others. All Rights Reserved.                *
     6 *                                                                            *
     7 ******************************************************************************
     8 *   file name:  ucln_io.c
     9 *   encoding:   US-ASCII
    10 *   tab size:   8 (not used)
    11 *   indentation:4
    12 *
    13 *   created on: 2006August11
    14 *   created by: George Rhoten
    15 */
    17 #include "ucln.h"
    18 #include "ucln_io.h"
    19 #include "uassert.h"
    21 #ifndef U_IO_IMPLEMENTATION
    22 #error U_IO_IMPLEMENTATION not set - must be set for all ICU source files in io/ - see http://userguide.icu-project.org/howtouseicu
    23 #endif
    26 /**  Auto-client */
    27 #define UCLN_TYPE UCLN_IO
    28 #include "ucln_imp.h"
    30 /* Leave this copyright notice here! It needs to go somewhere in this library. */
    31 static const char copyright[] = U_COPYRIGHT_STRING;
    33 static cleanupFunc *gCleanupFunctions[UCLN_IO_COUNT];
    35 static UBool io_cleanup(void)
    36 {
    37     ECleanupIOType libType = UCLN_IO_START;
    39     while (++libType<UCLN_IO_COUNT) {
    40         if (gCleanupFunctions[libType])
    41         {
    42             gCleanupFunctions[libType]();
    43             gCleanupFunctions[libType] = NULL;
    44         }
    45     }
    46 #if !UCLN_NO_AUTO_CLEANUP && (defined(UCLN_AUTO_ATEXIT) || defined(UCLN_AUTO_LOCAL))
    47     ucln_unRegisterAutomaticCleanup();
    48 #endif
    49     return TRUE;
    50 }
    52 void ucln_io_registerCleanup(ECleanupIOType type,
    53                                cleanupFunc *func)
    54 {
    55     U_ASSERT(UCLN_IO_START < type && type < UCLN_IO_COUNT);
    56     ucln_registerCleanup(UCLN_IO, io_cleanup);
    57     if (UCLN_IO_START < type && type < UCLN_IO_COUNT)
    58     {
    59         gCleanupFunctions[type] = func;
    60     }
    62 #if !UCLN_NO_AUTO_CLEANUP && (defined(UCLN_AUTO_ATEXIT) || defined(UCLN_AUTO_LOCAL))
    63     ucln_registerAutomaticCleanup();
    64 #endif
    65 }

mercurial