2  * Copyright (c) 2000-2005, 2009-2011 Apple Inc. All rights reserved. 
   4  * @APPLE_LICENSE_HEADER_START@ 
   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 
  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. 
  21  * @APPLE_LICENSE_HEADER_END@ 
  25  * Modification History 
  27  * June 1, 2001                 Allan Nathanson <ajn@apple.com> 
  28  * - public API conversion 
  30  * March 24, 2000               Allan Nathanson <ajn@apple.com> 
  34 #include <mach/mach.h> 
  35 #include <mach/mach_error.h> 
  37 #include <SystemConfiguration/SystemConfiguration.h> 
  38 #include <SystemConfiguration/SCPrivate.h> 
  39 #include "SCDynamicStoreInternal.h" 
  40 #include "config.h"             /* MiG generated file */ 
  43 SCDynamicStoreAddTemporaryValue(SCDynamicStoreRef store
, CFStringRef key
, CFPropertyListRef value
) 
  45         SCDynamicStorePrivateRef        storePrivate 
= (SCDynamicStorePrivateRef
)store
; 
  47         CFDataRef                       utfKey
;         /* serialized key */ 
  50         CFDataRef                       xmlData
;        /* serialized data */ 
  57                 /* sorry, you must provide a session */ 
  58                 _SCErrorSet(kSCStatusNoStoreSession
); 
  62         if (storePrivate
->server 
== MACH_PORT_NULL
) { 
  63                 /* sorry, you must have an open session to play */ 
  64                 _SCErrorSet(kSCStatusNoStoreServer
); 
  68         /* serialize the key */ 
  69         if (!_SCSerializeString(key
, &utfKey
, (void **)&myKeyRef
, &myKeyLen
)) { 
  70                 _SCErrorSet(kSCStatusFailed
); 
  74         /* serialize the data */ 
  75         if (!_SCSerialize(value
, &xmlData
, (void **)&myDataRef
, &myDataLen
)) { 
  77                 _SCErrorSet(kSCStatusFailed
); 
  83         /* send the key & data to the server */ 
  84         status 
= configadd_s(storePrivate
->server
, 
  92         if (__SCDynamicStoreCheckRetryAndHandleError(store
, 
  95                                                      "SCDynamicStoreAddTemporaryValue configadd_s()")) { 
 103         if (sc_status 
!= kSCStatusOK
) { 
 104                 _SCErrorSet(sc_status
); 
 112 SCDynamicStoreAddValue(SCDynamicStoreRef store
, CFStringRef key
, CFPropertyListRef value
) 
 114         SCDynamicStorePrivateRef        storePrivate
; 
 115         kern_return_t                   status
; 
 116         CFDataRef                       utfKey
;         /* serialized key */ 
 119         CFDataRef                       xmlData
;        /* serialized data */ 
 126                 store 
= __SCDynamicStoreNullSession(); 
 128                         /* sorry, you must provide a session */ 
 129                         _SCErrorSet(kSCStatusNoStoreSession
); 
 134         storePrivate 
= (SCDynamicStorePrivateRef
)store
; 
 135         if (storePrivate
->server 
== MACH_PORT_NULL
) { 
 136                 /* sorry, you must have an open session to play */ 
 137                 _SCErrorSet(kSCStatusNoStoreServer
); 
 141         /* serialize the key */ 
 142         if (!_SCSerializeString(key
, &utfKey
, (void **)&myKeyRef
, &myKeyLen
)) { 
 143                 _SCErrorSet(kSCStatusFailed
); 
 147         /* serialize the data */ 
 148         if (!_SCSerialize(value
, &xmlData
, (void **)&myDataRef
, &myDataLen
)) { 
 150                 _SCErrorSet(kSCStatusFailed
); 
 156         /* send the key & data to the server */ 
 157         status 
= configadd(storePrivate
->server
, 
 165         if (__SCDynamicStoreCheckRetryAndHandleError(store
, 
 168                                                      "SCDynamicStoreAddValue configadd()")) { 
 176         if (sc_status 
!= kSCStatusOK
) { 
 177                 _SCErrorSet(sc_status
);