1/* 2 * Copyright (c) 2000, 2001, 2004, 2005, 2009-2011 Apple Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24/* 25 * Modification History 26 * 27 * June 1, 2001 Allan Nathanson <ajn@apple.com> 28 * - public API conversion 29 * 30 * April 14, 2000 Allan Nathanson <ajn@apple.com> 31 * - initial revision 32 */ 33 34#include <mach/mach.h> 35#include <mach/mach_error.h> 36 37#include <SystemConfiguration/SystemConfiguration.h> 38#include <SystemConfiguration/SCPrivate.h> 39#include "SCDynamicStoreInternal.h" 40#include "config.h" /* MiG generated file */ 41 42Boolean 43SCDynamicStoreSnapshot(SCDynamicStoreRef store) 44{ 45 SCDynamicStorePrivateRef storePrivate; 46 kern_return_t status; 47 int sc_status; 48 49 if (store == NULL) { 50 store = __SCDynamicStoreNullSession(); 51 if (store == NULL) { 52 /* sorry, you must provide a session */ 53 _SCErrorSet(kSCStatusNoStoreSession); 54 return FALSE; 55 } 56 } 57 58 storePrivate = (SCDynamicStorePrivateRef)store; 59 if (storePrivate->server == MACH_PORT_NULL) { 60 /* sorry, you must have an open session to play */ 61 _SCErrorSet(kSCStatusNoStoreServer); 62 return FALSE; 63 } 64 65 retry : 66 67 status = snapshot(storePrivate->server, (int *)&sc_status); 68 69 if (__SCDynamicStoreCheckRetryAndHandleError(store, 70 status, 71 &sc_status, 72 "SCDynamicStoreSnapshot snapshot()")) { 73 goto retry; 74 } 75 76 if (sc_status != kSCStatusOK) { 77 _SCErrorSet(sc_status); 78 return FALSE; 79 } 80 81 return TRUE; 82} 83