X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5dd5f9ec28f304ca377c42fd7f711d6cf12b90e1..5c19dc3ae3bd8e40a9c028b0deddd50ff337692c:/Security/libsecurity_utilities/lib/globalizer.cpp diff --git a/Security/libsecurity_utilities/lib/globalizer.cpp b/Security/libsecurity_utilities/lib/globalizer.cpp deleted file mode 100644 index df5af3bc..00000000 --- a/Security/libsecurity_utilities/lib/globalizer.cpp +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 2000-2004,2011-2012,2014 Apple Inc. All Rights Reserved. - * - * @APPLE_LICENSE_HEADER_START@ - * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apple Public Source License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - * - * @APPLE_LICENSE_HEADER_END@ - */ - - -// -// globalizer - multiscope globalization services. -// -// This is a tentative, partial implementation. -// Status: -// module scope: constructs, optional cleanup -// thread scope: constructs, optional cleanup -// process scope: not implemented (obsolete implementation, unused) -// system scope: not implemented (probably never will) -// -// @@@ Assumption: {bool,T*} atomic unless PTHREAD_STRICT -// -#include -#include -#include -#include - -// -// The Error class thrown if Nexus operations fail -// -GlobalNexus::Error::~Error() throw() -{ -} - -void ModuleNexusCommon::do_create(void *(*make)()) -{ - try - { - pointer = make(); - } - catch (...) - { - pointer = NULL; - } -} - - - -void *ModuleNexusCommon::create(void *(*make)()) -{ - dispatch_once(&once, ^{do_create(make);}); - - if (pointer == NULL) - { - ModuleNexusError::throwMe(); - } - - return pointer; -} - - -// -// Process nexus operation -// -ProcessNexusBase::ProcessNexusBase(const char *identifier) -{ - const char *env = getenv(identifier); - if (env == NULL) { // perhaps we're first... - auto_ptr store(new Store); - char form[2*sizeof(Store *) + 2]; - sprintf(form, "*%p", &store); - setenv(identifier, form, 0); // do NOT overwrite... - env = getenv(identifier); // ... and refetch to resolve races - if (sscanf(env, "*%p", &mStore) != 1) - throw std::runtime_error("environment communication failed"); - if (mStore == store.get()) // we won the race... - store.release(); // ... so keep the store - } else - if (sscanf(env, "*%p", &mStore) != 1) - throw std::runtime_error("environment communication failed"); -}