]> git.saurik.com Git - apple/configd.git/blob - SystemConfiguration.fproj/genSCPreferences.c
c6573abb4128f549c7675d0773c4282b7343e8bd
[apple/configd.git] / SystemConfiguration.fproj / genSCPreferences.c
1 /*
2 * Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
7 *
8 * This file contains Original Code and/or Modifications of Original Code
9 * as defined in and that are subject to the Apple Public Source License
10 * Version 2.0 (the 'License'). You may not use this file except in
11 * compliance with the License. Please obtain a copy of the License at
12 * http://www.opensource.apple.com/apsl/ and read it before using this
13 * file.
14 *
15 * The Original Code and all software distributed under the License are
16 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
17 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
18 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
20 * Please see the License for the specific language governing rights and
21 * limitations under the License.
22 *
23 * @APPLE_LICENSE_HEADER_END@
24 */
25
26 /*
27 * genSCPreferences.c
28 * - generates System Configuration header/cfile
29 * - invoke with "header" to generate the header
30 * - invoke with "cfile" to generate the cfile
31 */
32
33 /*
34 * Modification History
35 *
36 * 16 July 2003 Allan Nathanson (ajn@apple.com)
37 * - changes to facilitate cross-compilation to earlier releases
38 *
39 * 5 May 2003 Allan Nathanson (ajn@apple.com)
40 * - switch back to "extern const CFStringRef ..."
41 *
42 * 1 June 2001 Allan Nathanson <ajn@apple.com>
43 * - public API conversion
44 *
45 * 27 Apr 2001 Allan Nathanson (ajn@apple.com)
46 * - switch from "extern const CFStringRef ..." to "#define ..."
47 *
48 * 3 Nov 2000 Dieter Siegmund (dieter@apple)
49 * - created
50 */
51 #include <stdio.h>
52 #include <stdlib.h>
53 #include <string.h>
54 #include <unistd.h>
55 #include <mach/boolean.h>
56
57 char copyright_string[] =
58 "/*\n"
59 " * Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.\n"
60 " *\n"
61 " * @APPLE_LICENSE_HEADER_START@
62 " *
63 " * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
64 " *
65 " * This file contains Original Code and/or Modifications of Original Code
66 " * as defined in and that are subject to the Apple Public Source License
67 " * Version 2.0 (the 'License'). You may not use this file except in
68 " * compliance with the License. Please obtain a copy of the License at
69 " * http://www.opensource.apple.com/apsl/ and read it before using this
70 " * file.
71 " *
72 " * The Original Code and all software distributed under the License are
73 " * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
74 " * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
75 " * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
76 " * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
77 " * Please see the License for the specific language governing rights and
78 " * limitations under the License.
79 " *
80 " * @APPLE_LICENSE_HEADER_END@
81 " */\n";
82
83
84 typedef enum {
85 COMMENT,
86 OBSOLETE,
87 REGULAR,
88 DEFINE,
89 FUTURE,
90 END
91 } controlType;
92
93 #define SC_SCHEMA_DECLARATION "SC_SCHEMA_DECLARATION"
94
95 #define KEY_PREFIX "kSC"
96
97 #define COMP "Comp"
98 #define DYNAMICSTORE "DynamicStore"
99 #define PREF "Pref"
100 #define PROP "Prop"
101 #define PATH "Path"
102 #define NETENT "EntNet"
103 #define NETPROP "PropNet"
104 #define NETVAL "ValNet"
105 #define SETUPENT "EntSetup"
106 #define SETUPPROP "PropSetup"
107 #define SYSTEMENT "EntSystem"
108 #define SYSTEMPROP "PropSystem"
109 #define RESV "Resv"
110 #define USERSENT "EntUsers"
111 #define USERSPROP "PropUsers"
112 #define VERSION "Version"
113
114 #define CFARRAY_CFNUMBER "CFArray[CFNumber]"
115 #define CFARRAY_CFSTRING "CFArray[CFString]"
116 #define CFBOOLEAN "CFBoolean"
117 #define CFDATA "CFData"
118 #define CFDICTIONARY "CFDictionary"
119 #define CFNUMBER "CFNumber"
120 #define CFNUMBER_BOOL "CFNumber (0 or 1)"
121 #define CFSTRING "CFString"
122
123 #define ACSPENABLED "ACSPEnabled" // Apple Client Server Protocol
124 #define ACTIVE "Active"
125 #define ADDRESSES "Addresses"
126 #define AFTER "After"
127 #define AIRPORT "AirPort"
128 #define ALERT "Alert"
129 #define ALLOWNETCREATION "AllowNetCreation"
130 #define ALTERNATEREMOTEADDRESS "AlternateRemoteAddress"
131 #define ANYREGEX "AnyRegex"
132 #define APPLETALK "AppleTalk"
133 #define AUTH "Auth"
134 #define AUTOMATIC "Automatic"
135 #define BEFORE "Before"
136 #define BINDINGMETHODS "BindingMethods"
137 #define BOOTP "BOOTP"
138 #define BROADCAST "Broadcast"
139 #define BROADCASTADDRESSES "BroadcastAddresses"
140 #define BROADCASTSERVERTAG "BroadcastServerTag"
141 #define CALLWAITINGAUDIBLEALERT "CallWaitingAudibleAlert"
142 #define CCP "CCP"
143 #define CHAP "CHAP"
144 #define COMM "Comm"
145 #define COMPRESSIONACFIELD "CompressionACField"
146 #define COMPRESSIONPFIELD "CompressionPField"
147 #define COMPRESSIONVJ "CompressionVJ"
148 #define COMPUTERNAME "ComputerName"
149 #define CONFIGMETHOD "ConfigMethod"
150 #define CONNECTDELAY "ConnectDelay"
151 #define CONNECTIONSCRIPT "ConnectionScript"
152 #define CONNECTSPEED "ConnectSpeed"
153 #define CONNECTTIME "ConnectTime"
154 #define CONSOLEUSER "ConsoleUser"
155 #define CURRENTSET "CurrentSet"
156 #define DATACOMPRESSION "DataCompression"
157 #define DEFAULTSERVERTAG "DefaultServerTag"
158 #define DEFAULTZONE "DefaultZone"
159 #define DESTADDRESSES "DestAddresses"
160 #define DETACHING "Detaching"
161 #define DEVICE "Device"
162 #define DEVICENAME "DeviceName"
163 #define DHCP "DHCP"
164 #define DHCPCLIENTID "DHCPClientID"
165 #define DIALMODE "DialMode"
166 #define DIALONDEMAND "DialOnDemand"
167 #define DISCONNECTONANSWER "DisconnectOnAnswer"
168 #define DISCONNECTONIDLE "DisconnectOnIdle"
169 #define DISCONNECTONIDLETIMER "DisconnectOnIdleTimer"
170 #define DISCONNECTONLOGOUT "DisconnectOnLogout"
171 #define DISCONNECTONSLEEP "DisconnectOnSleep"
172 #define DISCONNECTTIME "DisconnectTime"
173 #define DISPLAYTERMINALWINDOW "DisplayTerminalWindow"
174 #define DNS "DNS"
175 #define DOMAIN "Domain"
176 #define DOMAINNAME "DomainName"
177 #define DOMAINSEPARATOR "DomainSeparator"
178 #define EAP "EAP"
179 #define ECHOENABLED "EchoEnabled"
180 #define ECHOFAILURE "EchoFailure"
181 #define ECHOINTERVAL "EchoInterval"
182 #define ENABLED "Enabled"
183 #define ENCODING "Encoding"
184 #define ENCRYPTION "Encryption"
185 #define ERRORCORRECTION "ErrorCorrection"
186 #define ETHERNET "Ethernet"
187 #define EXCEPTIONSLIST "ExceptionsList"
188 #define FILE "File"
189 #define FIREWIRE "FireWire"
190 #define FLAGS "Flags"
191 #define FTPENABLE "FTPEnable"
192 #define FTPPASSIVE "FTPPassive"
193 #define FTPPORT "FTPPort"
194 #define FTPPROXY "FTPProxy"
195 #define GID "GID"
196 #define GLOBAL "Global"
197 #define GOPHERENABLE "GopherEnable"
198 #define GOPHERPORT "GopherPort"
199 #define GOPHERPROXY "GopherProxy"
200 #define HARDWARE "Hardware"
201 #define HOLD "Hold"
202 #define HOSTNAMES "HostNames"
203 #define HTTPENABLE "HTTPEnable"
204 #define HTTPPORT "HTTPPort"
205 #define HTTPPROXY "HTTPProxy"
206 #define HTTPSENABLE "HTTPSEnable"
207 #define HTTPSPORT "HTTPSPort"
208 #define HTTPSPROXY "HTTPSProxy"
209 #define IDLEREMINDER "IdleReminder"
210 #define IDLEREMINDERTIMER "IdleReminderTimer"
211 #define IGNOREDIALTONE "IgnoreDialTone"
212 #define INACTIVE "Inactive"
213 #define INFORM "INFORM"
214 #define INTERFACE "Interface"
215 #define INTERFACENAME "InterfaceName"
216 #define INTERFACES "Interfaces"
217 #define IP "IP"
218 #define IPCP "IPCP"
219 #define IPV4 "IPv4"
220 #define IPV6 "IPv6"
221 #define IPSEC "IPSec"
222 #define JOINMODE "JoinMode"
223 #define KEYCHAIN "Keychain"
224 #define L2TP "L2TP"
225 #define LASTCAUSE "LastCause"
226 #define LASTUPDATED "LastUpdated"
227 #define LCP "LCP"
228 #define LINK "Link"
229 #define LINKLOCAL "LinkLocal"
230 #define LOCALHOSTNAME "LocalHostName"
231 #define LOGFILE "Logfile"
232 #define MACADDRESS "MACAddress"
233 #define MANUAL "Manual"
234 #define MEDIA "Media"
235 #define OPTIONS "Options"
236 #define MODEM "Modem"
237 #define MRU "MRU"
238 #define MSCHAP1 "MSCHAP1"
239 #define MSCHAP2 "MSCHAP2"
240 #define MTU "MTU"
241 #define NAME "Name"
242 #define NETINFO "NetInfo"
243 #define NETWORK "Network"
244 #define NETWORKID "NetworkID"
245 #define NETWORKRANGE "NetworkRange"
246 #define NETWORKSERVICES "NetworkServices"
247 #define NIS "NIS"
248 #define NODE "Node"
249 #define NODEID "NodeID"
250 #define NOTE "Note"
251 #define OVERRIDEPRIMARY "OverridePrimary"
252 #define PAP "PAP"
253 #define PASSWORD "Password"
254 #define PLUGIN "Plugin"
255 #define PLUGINS "Plugins"
256 #define POWERENABLED "PowerEnabled"
257 #define PPP "PPP"
258 #define PPPOE "PPPoE"
259 #define PPPOVERRIDEPRIMARY "PPPOverridePrimary"
260 #define PPPSERIAL "PPPSerial"
261 #define PPTP "PPTP"
262 #define PREFERRED "Preferred"
263 #define PREFERREDNETWORK "PreferredNetwork"
264 #define PREFIXLENGTH "PrefixLength"
265 #define PREFS "Prefs"
266 #define PRIMARYINTERFACE "PrimaryInterface"
267 #define PRIMARYSERVICE "PrimaryService"
268 #define PROMPT "Prompt"
269 #define PROTOCOL "Protocol"
270 #define PROXIES "Proxies"
271 #define PULSEDIAL "PulseDial"
272 #define RECEIVEACCM "ReceiveACCM"
273 #define RECENT "Recent"
274 #define REDIALCOUNT "RedialCount"
275 #define REDIALENABLED "RedialEnabled"
276 #define REDIALINTERVAL "RedialInterval"
277 #define RELAY "Relay"
278 #define REMINDER "Reminder"
279 #define REMINDERTIME "ReminderTime"
280 #define REMOTEADDRESS "RemoteAddress"
281 #define RETRYCONNECTTIME "RetryConnectTime"
282 #define ROOTSEPARATOR "RootSeparator"
283 #define ROUTER "Router"
284 #define ROUTERADVERTISEMENT "RouterAdvertisement"
285 #define RTSPENABLE "RTSPEnable"
286 #define RTSPPORT "RTSPPort"
287 #define RTSPPROXY "RTSPProxy"
288 #define SAVEPASSWORDS "SavePasswords"
289 #define SEARCHDOMAINS "SearchDomains"
290 #define SEEDNETWORKRANGE "SeedNetworkRange"
291 #define SEEDROUTER "SeedRouter"
292 #define SEEDZONES "SeedZones"
293 #define SERVERADDRESSES "ServerAddresses"
294 #define SERVERTAGS "ServerTags"
295 #define SERVICE "Service"
296 #define SERVICEIDS "ServiceIDs"
297 #define SERVICEORDER "ServiceOrder"
298 #define SESSIONTIMER "SessionTimer"
299 #define SETS "Sets"
300 #define SETUP "Setup"
301 #define SHAREDSECRET "SharedSecret"
302 #define SOCKSENABLE "SOCKSEnable"
303 #define SOCKSPORT "SOCKSPort"
304 #define SOCKSPROXY "SOCKSProxy"
305 #define SORTLIST "SortList"
306 #define SPEAKER "Speaker"
307 #define SPEED "Speed"
308 #define STATE "State"
309 #define STATUS "Status"
310 #define STF "6to4"
311 #define STRONGEST "Strongest"
312 #define SUBNETMASKS "SubnetMasks"
313 #define SUBTYPE "SubType"
314 #define SUPPORTSMODEMONHOLD "SupportsModemOnHold"
315 #define SYSTEM "System"
316 #define TERMINALSCRIPT "TerminalScript"
317 #define TRANSMITACCM "TransmitACCM"
318 #define TRANSPORT "Transport"
319 #define TYPE "Type"
320 #define UID "UID"
321 #define USERDEFINEDNAME "UserDefinedName"
322 #define USE "Use"
323 #define USERS "Users"
324 #define VERBOSELOGGING "VerboseLogging"
325 #define WAITFORDIALTONE "WaitForDialTone"
326
327 struct {
328 int control;
329 const char * prefix;
330 const char * key;
331 const char * value;
332 const char * type;
333 } names[] = {
334 { COMMENT, "/*\n * Reserved Keys\n */", NULL, NULL },
335 { REGULAR, RESV, LINK, "__LINK__", CFSTRING },
336 { REGULAR, RESV, INACTIVE, "__INACTIVE__", NULL },
337 { COMMENT, "", NULL, NULL, NULL },
338
339 { COMMENT, "/*\n * Generic Keys\n */", NULL },
340 { DEFINE , PROP, INTERFACENAME, NULL, CFSTRING },
341 { REGULAR, PROP, MACADDRESS, NULL, CFSTRING },
342 { REGULAR, PROP, USERDEFINEDNAME, NULL, CFSTRING },
343 { DEFINE , PROP, VERSION, NULL, CFSTRING },
344 { COMMENT, "", NULL, NULL, NULL },
345
346 { COMMENT, "/*\n * Preference Keys\n */", NULL },
347 { REGULAR, PREF, CURRENTSET, NULL, CFSTRING },
348 { REGULAR, PREF, NETWORKSERVICES, NULL, CFDICTIONARY },
349 { REGULAR, PREF, SETS, NULL, CFDICTIONARY },
350 { REGULAR, PREF, SYSTEM, NULL, CFDICTIONARY },
351 { COMMENT, "", NULL, NULL, NULL },
352
353 { COMMENT, "/*\n * Component Keys\n */", NULL },
354 { REGULAR, COMP, NETWORK, NULL, NULL },
355 { REGULAR, COMP, SERVICE, NULL, NULL },
356 { REGULAR, COMP, GLOBAL, NULL, NULL },
357 { DEFINE , COMP, HOSTNAMES, NULL, NULL },
358 { REGULAR, COMP, INTERFACE, NULL, NULL },
359 { REGULAR, COMP, SYSTEM, NULL, NULL },
360 { REGULAR, COMP, USERS, NULL, NULL },
361 { COMMENT, "", NULL, NULL, NULL },
362
363 { COMMENT, "/*\n * Regex key which matches any component\n */", NULL },
364 { REGULAR, COMP, ANYREGEX, "[^/]+", NULL },
365 { COMMENT, "", NULL, NULL, NULL },
366
367 { COMMENT, "/*\n * Network Entity Keys\n */", NULL },
368 { REGULAR, NETENT, AIRPORT, NULL, CFDICTIONARY },
369 { REGULAR, NETENT, APPLETALK, NULL, CFDICTIONARY },
370 { DEFINE , NETENT, DHCP, NULL, CFDICTIONARY },
371 { REGULAR, NETENT, DNS, NULL, CFDICTIONARY },
372 { REGULAR, NETENT, ETHERNET, NULL, CFDICTIONARY },
373 { DEFINE , NETENT, FIREWIRE, NULL, CFDICTIONARY },
374 { REGULAR, NETENT, INTERFACE, NULL, CFDICTIONARY },
375 { REGULAR, NETENT, IPV4, NULL, CFDICTIONARY },
376 { REGULAR, NETENT, IPV6, NULL, CFDICTIONARY },
377 { DEFINE , NETENT, L2TP, NULL, CFDICTIONARY },
378 { REGULAR, NETENT, LINK, NULL, CFDICTIONARY },
379 { REGULAR, NETENT, MODEM, NULL, CFDICTIONARY },
380 { REGULAR, NETENT, NETINFO, NULL, CFDICTIONARY },
381 { FUTURE , NETENT, NIS, NULL, CFDICTIONARY },
382 { REGULAR, NETENT, PPP, NULL, CFDICTIONARY },
383 { REGULAR, NETENT, PPPOE, NULL, CFDICTIONARY },
384 { DEFINE , NETENT, PPPSERIAL, NULL, CFDICTIONARY },
385 { DEFINE , NETENT, PPTP, NULL, CFDICTIONARY },
386 { REGULAR, NETENT, PROXIES, NULL, CFDICTIONARY },
387 { DEFINE , NETENT, STF, NULL, CFDICTIONARY },
388 { COMMENT, "", NULL, NULL, NULL },
389
390 { COMMENT, "/*\n * " KEY_PREFIX COMP NETWORK " Properties\n */", NULL },
391 { DEFINE , NETPROP, OVERRIDEPRIMARY, NULL, CFNUMBER_BOOL },
392 { REGULAR, NETPROP, SERVICEORDER, NULL, CFARRAY_CFSTRING },
393 { REGULAR, NETPROP, PPPOVERRIDEPRIMARY, NULL, CFNUMBER_BOOL },
394 { COMMENT, "", NULL, NULL, NULL },
395
396 { COMMENT, "/*\n * " KEY_PREFIX COMP NETWORK INTERFACE " Properties\n */", NULL },
397 { DEFINE , NETPROP, INTERFACES, NULL, CFARRAY_CFSTRING },
398 { COMMENT, "", NULL, NULL, NULL },
399
400 { COMMENT, "/*\n * " KEY_PREFIX COMP NETWORK HOSTNAMES " Properties\n */", NULL },
401 { DEFINE , NETPROP, LOCALHOSTNAME, NULL, CFSTRING },
402 { COMMENT, "", NULL, NULL, NULL },
403
404 { COMMENT, "/*\n * " KEY_PREFIX NETENT AIRPORT " (Hardware) Entity Keys\n */", NULL, NULL, NULL },
405 { DEFINE , NETPROP AIRPORT, ALLOWNETCREATION, NULL, CFNUMBER_BOOL },
406 { REGULAR, NETPROP AIRPORT, AUTH PASSWORD, NULL, CFDATA },
407 { REGULAR, NETPROP AIRPORT, AUTH PASSWORD ENCRYPTION, NULL, CFSTRING },
408 { DEFINE , NETPROP AIRPORT, JOINMODE, NULL, CFSTRING },
409 { REGULAR, NETPROP AIRPORT, POWERENABLED, NULL, CFNUMBER_BOOL },
410 { REGULAR, NETPROP AIRPORT, PREFERREDNETWORK, NULL, CFSTRING },
411 { DEFINE , NETPROP AIRPORT, SAVEPASSWORDS, NULL, CFNUMBER_BOOL },
412 { COMMENT, "", NULL, NULL, NULL },
413 { COMMENT, "/* " KEY_PREFIX NETPROP AIRPORT JOINMODE " values */", NULL, NULL, NULL },
414 { DEFINE , NETVAL AIRPORT JOINMODE, AUTOMATIC, NULL, NULL },
415 { DEFINE , NETVAL AIRPORT JOINMODE, PREFERRED, NULL, NULL },
416 { DEFINE , NETVAL AIRPORT JOINMODE, RECENT, NULL, NULL },
417 { DEFINE , NETVAL AIRPORT JOINMODE, STRONGEST, NULL, NULL },
418 { COMMENT, "", NULL, NULL, NULL },
419 { COMMENT, "/* " KEY_PREFIX NETPROP AIRPORT PASSWORD ENCRYPTION " values */", NULL, NULL, NULL },
420 { DEFINE , NETVAL AIRPORT AUTH PASSWORD ENCRYPTION, KEYCHAIN, NULL, NULL },
421 { COMMENT, "", NULL, NULL, NULL },
422
423 { COMMENT, "/*\n * " KEY_PREFIX NETENT APPLETALK " Entity Keys\n */", NULL, NULL, NULL },
424 { REGULAR, NETPROP APPLETALK, COMPUTERNAME, NULL, CFSTRING },
425 { REGULAR, NETPROP APPLETALK, COMPUTERNAME ENCODING, NULL, CFNUMBER },
426 { REGULAR, NETPROP APPLETALK, CONFIGMETHOD, NULL, CFSTRING },
427 { REGULAR, NETPROP APPLETALK, DEFAULTZONE, NULL, CFSTRING },
428 { REGULAR, NETPROP APPLETALK, NETWORKID, NULL, CFNUMBER },
429 { REGULAR, NETPROP APPLETALK, NETWORKRANGE, NULL, CFARRAY_CFNUMBER },
430 { REGULAR, NETPROP APPLETALK, NODEID, NULL, CFNUMBER },
431 { REGULAR, NETPROP APPLETALK, SEEDNETWORKRANGE, NULL, CFARRAY_CFNUMBER },
432 { REGULAR, NETPROP APPLETALK, SEEDZONES, NULL, CFARRAY_CFSTRING },
433 { COMMENT, "", NULL, NULL, NULL },
434 { COMMENT, "/* " KEY_PREFIX NETPROP APPLETALK CONFIGMETHOD " values */", NULL, NULL, NULL },
435 { REGULAR, NETVAL APPLETALK CONFIGMETHOD, NODE, NULL, NULL },
436 { REGULAR, NETVAL APPLETALK CONFIGMETHOD, ROUTER, NULL, NULL },
437 { REGULAR, NETVAL APPLETALK CONFIGMETHOD, SEEDROUTER, NULL, NULL },
438 { COMMENT, "", NULL, NULL, NULL },
439
440 { COMMENT, "/*\n * " KEY_PREFIX NETENT DNS " Entity Keys\n */", NULL, NULL, NULL },
441 { REGULAR, NETPROP DNS, DOMAINNAME, NULL, CFSTRING },
442 { REGULAR, NETPROP DNS, SEARCHDOMAINS, NULL, CFARRAY_CFSTRING},
443 { REGULAR, NETPROP DNS, SERVERADDRESSES, NULL, CFARRAY_CFSTRING },
444 { DEFINE , NETPROP DNS, SORTLIST, NULL, CFARRAY_CFSTRING },
445 { COMMENT, "", NULL, NULL, NULL },
446
447 { COMMENT, "/*\n * " KEY_PREFIX NETENT ETHERNET " (Hardware) Entity Keys\n */", NULL, NULL, NULL },
448 { DEFINE , NETPROP ETHERNET, MEDIA SUBTYPE, NULL, CFSTRING },
449 { DEFINE , NETPROP ETHERNET, MEDIA OPTIONS, NULL, CFARRAY_CFSTRING },
450 { DEFINE , NETPROP ETHERNET, MTU, NULL, CFNUMBER },
451 { COMMENT, "", NULL, NULL, NULL },
452
453 { COMMENT, "/*\n * " KEY_PREFIX NETENT FIREWIRE " (Hardware) Entity Keys\n */", NULL, NULL, NULL },
454 { COMMENT, "/* RESERVED FOR FUTURE USE */", NULL, NULL, NULL },
455 { COMMENT, "", NULL, NULL, NULL },
456
457 { COMMENT, "/*\n * " KEY_PREFIX NETENT INTERFACE " Entity Keys\n */", NULL },
458 { REGULAR, NETPROP INTERFACE, DEVICENAME, NULL, CFSTRING },
459 { REGULAR, NETPROP INTERFACE, HARDWARE, NULL, CFSTRING },
460 { REGULAR, NETPROP INTERFACE, TYPE, NULL, CFSTRING },
461 { REGULAR, NETPROP INTERFACE, SUBTYPE, NULL, CFSTRING },
462 { DEFINE , NETPROP INTERFACE, SUPPORTSMODEMONHOLD, NULL, CFNUMBER_BOOL },
463 { COMMENT, "", NULL, NULL, NULL },
464 { COMMENT, "/* " KEY_PREFIX NETPROP INTERFACE TYPE " values */", NULL, NULL, NULL },
465 { REGULAR, NETVAL INTERFACE TYPE, ETHERNET, NULL, NULL },
466 { DEFINE , NETVAL INTERFACE TYPE, FIREWIRE, NULL, NULL },
467 { REGULAR, NETVAL INTERFACE TYPE, PPP, NULL, NULL },
468 { DEFINE , NETVAL INTERFACE TYPE, STF, NULL, NULL },
469 { COMMENT, "", NULL, NULL, NULL },
470 { COMMENT, "/* " KEY_PREFIX NETPROP SERVICE SUBTYPE " values (for " PPP ") */", NULL, NULL, NULL },
471 { REGULAR, NETVAL INTERFACE SUBTYPE, PPPOE, NULL, NULL },
472 { REGULAR, NETVAL INTERFACE SUBTYPE, PPPSERIAL, NULL, NULL },
473 { DEFINE , NETVAL INTERFACE SUBTYPE, PPTP, NULL, NULL },
474 { DEFINE , NETVAL INTERFACE SUBTYPE, L2TP, NULL, NULL },
475 { COMMENT, "", NULL, NULL, NULL },
476
477 { COMMENT, "/*\n * " KEY_PREFIX NETENT IPV4 " Entity Keys\n */", NULL, NULL, NULL },
478 { REGULAR, NETPROP IPV4, ADDRESSES, NULL, CFARRAY_CFSTRING },
479 { REGULAR, NETPROP IPV4, CONFIGMETHOD, NULL, CFSTRING },
480 { REGULAR, NETPROP IPV4, DHCPCLIENTID, NULL, CFSTRING },
481 { REGULAR, NETPROP IPV4, ROUTER, NULL, CFSTRING },
482 { REGULAR, NETPROP IPV4, SUBNETMASKS, NULL, CFARRAY_CFSTRING },
483 { REGULAR, NETPROP IPV4, DESTADDRESSES, NULL, CFARRAY_CFSTRING },
484 { REGULAR, NETPROP IPV4, BROADCASTADDRESSES, NULL, CFARRAY_CFSTRING },
485 { COMMENT, "", NULL, NULL, NULL },
486 { COMMENT, "/* " KEY_PREFIX NETPROP IPV4 CONFIGMETHOD " values */", NULL, NULL, NULL },
487 { REGULAR, NETVAL IPV4 CONFIGMETHOD, BOOTP, NULL, NULL },
488 { REGULAR, NETVAL IPV4 CONFIGMETHOD, DHCP, NULL, NULL },
489 { REGULAR, NETVAL IPV4 CONFIGMETHOD, INFORM, NULL, NULL },
490 { REGULAR, NETVAL IPV4 CONFIGMETHOD, LINKLOCAL, NULL, NULL },
491 { REGULAR, NETVAL IPV4 CONFIGMETHOD, MANUAL, NULL, NULL },
492 { REGULAR, NETVAL IPV4 CONFIGMETHOD, PPP, NULL, NULL },
493 { COMMENT, "", NULL, NULL, NULL },
494
495 { COMMENT, "/*\n * " KEY_PREFIX NETENT IPV6 " Entity Keys\n */", NULL, NULL, NULL },
496 { REGULAR, NETPROP IPV6, ADDRESSES, NULL, CFARRAY_CFSTRING },
497 { REGULAR, NETPROP IPV6, CONFIGMETHOD, NULL, CFSTRING },
498 { DEFINE , NETPROP IPV6, DESTADDRESSES, NULL, CFARRAY_CFSTRING },
499 { DEFINE , NETPROP IPV6, FLAGS, NULL, CFNUMBER },
500 { DEFINE , NETPROP IPV6, PREFIXLENGTH, NULL, CFARRAY_CFNUMBER },
501 { DEFINE , NETPROP IPV6, ROUTER, NULL, CFSTRING },
502 { COMMENT, "", NULL, NULL, NULL },
503 { COMMENT, "/* " KEY_PREFIX NETPROP IPV6 CONFIGMETHOD " values */", NULL, NULL, NULL },
504 { DEFINE , NETVAL IPV6 CONFIGMETHOD, AUTOMATIC, NULL, NULL },
505 { DEFINE , NETVAL IPV6 CONFIGMETHOD, MANUAL, NULL, NULL },
506 { DEFINE , NETVAL IPV6 CONFIGMETHOD, ROUTERADVERTISEMENT, NULL, NULL },
507 { DEFINE , NETVAL IPV6 CONFIGMETHOD, STF, NULL, NULL },
508 { COMMENT, "", NULL, NULL, NULL },
509
510 { COMMENT, "/*\n * " KEY_PREFIX NETENT STF " Entity Keys\n */", NULL, NULL, NULL },
511 { DEFINE , NETPROP STF, RELAY, NULL, CFSTRING },
512 { COMMENT, "", NULL, NULL, NULL },
513
514 { COMMENT, "/*\n * " KEY_PREFIX NETENT LINK " Entity Keys\n */", NULL, NULL, NULL },
515 { REGULAR, NETPROP LINK, ACTIVE, NULL, CFBOOLEAN },
516 { DEFINE , NETPROP LINK, DETACHING, NULL, CFBOOLEAN },
517 { COMMENT, "", NULL, NULL, NULL },
518
519 { COMMENT, "/*\n * " KEY_PREFIX NETENT MODEM " (Hardware) Entity Keys\n */", NULL, NULL, NULL },
520 { REGULAR, NETPROP MODEM, CONNECTIONSCRIPT, NULL, CFSTRING },
521 { DEFINE , NETPROP MODEM, CONNECTSPEED, NULL, CFNUMBER },
522 { DEFINE , NETPROP MODEM, DATACOMPRESSION, NULL, CFNUMBER_BOOL },
523 { REGULAR, NETPROP MODEM, DIALMODE, NULL, CFSTRING },
524 { DEFINE , NETPROP MODEM, ERRORCORRECTION, NULL, CFNUMBER_BOOL },
525 { DEFINE , NETPROP MODEM, HOLD CALLWAITINGAUDIBLEALERT, NULL, CFNUMBER_BOOL },
526 { DEFINE , NETPROP MODEM, HOLD DISCONNECTONANSWER, NULL, CFNUMBER_BOOL },
527 { DEFINE , NETPROP MODEM, HOLD ENABLED, NULL, CFNUMBER_BOOL },
528 { DEFINE , NETPROP MODEM, HOLD REMINDER, NULL, CFNUMBER_BOOL },
529 { DEFINE , NETPROP MODEM, HOLD REMINDERTIME, NULL, CFNUMBER },
530 { DEFINE , NETPROP MODEM, NOTE, NULL, CFSTRING },
531 { REGULAR, NETPROP MODEM, PULSEDIAL, NULL, CFNUMBER_BOOL },
532 { REGULAR, NETPROP MODEM, SPEAKER, NULL, CFNUMBER_BOOL },
533 { REGULAR, NETPROP MODEM, SPEED, NULL, CFNUMBER },
534 { COMMENT, "", NULL, NULL, NULL },
535 { COMMENT, "/* " KEY_PREFIX NETPROP MODEM DIALMODE " values */", NULL, NULL, NULL },
536 { REGULAR, NETVAL MODEM DIALMODE, IGNOREDIALTONE, NULL, NULL },
537 { REGULAR, NETVAL MODEM DIALMODE, MANUAL, NULL, NULL },
538 { REGULAR, NETVAL MODEM DIALMODE, WAITFORDIALTONE, NULL, NULL },
539 { COMMENT, "", NULL, NULL, NULL },
540
541 { COMMENT, "/*\n * " KEY_PREFIX NETENT NETINFO " Entity Keys\n */", NULL, NULL, NULL },
542 { REGULAR, NETPROP NETINFO, BINDINGMETHODS, NULL, CFSTRING },
543 { REGULAR, NETPROP NETINFO, SERVERADDRESSES, NULL, CFARRAY_CFSTRING },
544 { REGULAR, NETPROP NETINFO, SERVERTAGS, NULL, CFARRAY_CFSTRING },
545 { REGULAR, NETPROP NETINFO, BROADCASTSERVERTAG, NULL, CFSTRING },
546 { COMMENT, "", NULL, NULL, NULL },
547 { COMMENT, "/* " KEY_PREFIX NETPROP NETINFO BINDINGMETHODS " values */", NULL, NULL, NULL },
548 { REGULAR, NETVAL NETINFO BINDINGMETHODS, BROADCAST, NULL, NULL },
549 { REGULAR, NETVAL NETINFO BINDINGMETHODS, DHCP, NULL, NULL },
550 { REGULAR, NETVAL NETINFO BINDINGMETHODS, MANUAL, NULL, NULL },
551 { COMMENT, "", NULL, NULL, NULL },
552 { COMMENT, "/* " KEY_PREFIX NETPROP NETINFO BROADCASTSERVERTAG " default value */", NULL, NULL, NULL },
553 { REGULAR, NETVAL NETINFO, DEFAULTSERVERTAG, "network", NULL },
554 { COMMENT, "", NULL, NULL, NULL },
555
556 { COMMENT, "/*\n * " KEY_PREFIX NETENT NIS " Entity Keys\n */", NULL, NULL, NULL },
557 { COMMENT, "/* RESERVED FOR FUTURE USE */", NULL, NULL, NULL },
558 { COMMENT, "", NULL, NULL, NULL },
559
560 { COMMENT, "/*\n * " KEY_PREFIX NETENT PPP " Entity Keys\n */", NULL, NULL, NULL },
561 { DEFINE , NETPROP PPP, ACSPENABLED, NULL, CFNUMBER_BOOL },
562 { DEFINE , NETPROP PPP, CONNECTTIME, NULL, CFNUMBER },
563 { DEFINE , NETPROP PPP, DEVICE LASTCAUSE, NULL, CFNUMBER },
564 { REGULAR, NETPROP PPP, DIALONDEMAND, NULL, CFNUMBER_BOOL },
565 { REGULAR, NETPROP PPP, DISCONNECTONIDLE, NULL, CFNUMBER_BOOL },
566 { REGULAR, NETPROP PPP, DISCONNECTONIDLETIMER, NULL, CFNUMBER },
567 { REGULAR, NETPROP PPP, DISCONNECTONLOGOUT, NULL, CFNUMBER_BOOL },
568 { DEFINE , NETPROP PPP, DISCONNECTONSLEEP, NULL, CFNUMBER_BOOL },
569 { DEFINE , NETPROP PPP, DISCONNECTTIME, NULL, CFNUMBER },
570 { REGULAR, NETPROP PPP, IDLEREMINDERTIMER, NULL, CFNUMBER },
571 { REGULAR, NETPROP PPP, IDLEREMINDER, NULL, CFNUMBER_BOOL },
572 { DEFINE , NETPROP PPP, LASTCAUSE, NULL, CFNUMBER },
573 { REGULAR, NETPROP PPP, LOGFILE, NULL, CFSTRING },
574 { DEFINE , NETPROP PPP, PLUGINS, NULL, CFARRAY_CFSTRING },
575 { DEFINE , NETPROP PPP, RETRYCONNECTTIME, NULL, CFNUMBER },
576 { DEFINE , NETPROP PPP, SESSIONTIMER, NULL, CFNUMBER },
577 { DEFINE , NETPROP PPP, STATUS, NULL, CFNUMBER },
578 { DEFINE , NETPROP PPP, USE SESSIONTIMER, NULL, CFNUMBER_BOOL },
579 { REGULAR, NETPROP PPP, VERBOSELOGGING, NULL, CFNUMBER_BOOL },
580 { COMMENT, "", NULL, NULL, NULL },
581
582 { COMMENT, "/* " AUTH ": */", NULL, NULL, NULL },
583 { DEFINE , NETPROP PPP, AUTH EAP PLUGINS, NULL, CFARRAY_CFSTRING },
584 { REGULAR, NETPROP PPP, AUTH NAME, NULL, CFSTRING },
585 { REGULAR, NETPROP PPP, AUTH PASSWORD, NULL, CFSTRING },
586 { REGULAR, NETPROP PPP, AUTH PASSWORD ENCRYPTION, NULL, CFSTRING },
587 { DEFINE , NETPROP PPP, AUTH PROMPT, NULL, CFSTRING },
588 { REGULAR, NETPROP PPP, AUTH PROTOCOL, NULL, CFARRAY_CFSTRING },
589 { COMMENT, "", NULL, NULL, NULL },
590 { COMMENT, "/* " KEY_PREFIX NETPROP PPP AUTH PASSWORD ENCRYPTION " values */", NULL, NULL, NULL },
591 { DEFINE , NETVAL PPP AUTH PASSWORD ENCRYPTION, KEYCHAIN, NULL, NULL },
592 { COMMENT, "", NULL, NULL, NULL },
593 { COMMENT, "/* " KEY_PREFIX NETPROP PPP AUTH PROMPT " values */", NULL, NULL, NULL },
594 { DEFINE , NETVAL PPP AUTH PROMPT, BEFORE, NULL, CFSTRING },
595 { DEFINE , NETVAL PPP AUTH PROMPT, AFTER, NULL, CFSTRING },
596 { COMMENT, "", NULL, NULL, NULL },
597 { COMMENT, "/* " KEY_PREFIX NETPROP PPP AUTH PROTOCOL " values */", NULL, NULL, NULL },
598 { REGULAR, NETVAL PPP AUTH PROTOCOL, CHAP, NULL, CFSTRING },
599 { DEFINE , NETVAL PPP AUTH PROTOCOL, EAP, NULL, CFSTRING },
600 { DEFINE , NETVAL PPP AUTH PROTOCOL, MSCHAP1, NULL, CFSTRING },
601 { DEFINE , NETVAL PPP AUTH PROTOCOL, MSCHAP2, NULL, CFSTRING },
602 { REGULAR, NETVAL PPP AUTH PROTOCOL, PAP, NULL, CFSTRING },
603
604 { COMMENT, "\n/* " COMM ": */", NULL, NULL, NULL },
605 { REGULAR, NETPROP PPP, COMM ALTERNATEREMOTEADDRESS, NULL, CFSTRING },
606 { REGULAR, NETPROP PPP, COMM CONNECTDELAY, NULL, CFNUMBER },
607 { REGULAR, NETPROP PPP, COMM DISPLAYTERMINALWINDOW, NULL, CFNUMBER_BOOL },
608 { REGULAR, NETPROP PPP, COMM REDIALCOUNT, NULL, CFNUMBER },
609 { REGULAR, NETPROP PPP, COMM REDIALENABLED, NULL, CFNUMBER_BOOL },
610 { REGULAR, NETPROP PPP, COMM REDIALINTERVAL, NULL, CFNUMBER },
611 { REGULAR, NETPROP PPP, COMM REMOTEADDRESS, NULL, CFSTRING },
612 { REGULAR, NETPROP PPP, COMM TERMINALSCRIPT, NULL, CFSTRING },
613 { DEFINE , NETPROP PPP, COMM USE TERMINALSCRIPT, NULL, CFNUMBER_BOOL },
614
615 { COMMENT, "\n/* " CCP ": */", NULL, NULL, NULL },
616 { DEFINE , NETPROP PPP, CCP ENABLED, NULL, CFNUMBER_BOOL },
617
618 { COMMENT, "\n/* " IPCP ": */", NULL, NULL, NULL },
619 { REGULAR, NETPROP PPP, IPCP COMPRESSIONVJ, NULL, CFNUMBER_BOOL },
620
621 { COMMENT, "\n/* " LCP ": */", NULL, NULL, NULL },
622 { REGULAR, NETPROP PPP, LCP ECHOENABLED, NULL, CFNUMBER_BOOL },
623 { REGULAR, NETPROP PPP, LCP ECHOFAILURE, NULL, CFNUMBER },
624 { REGULAR, NETPROP PPP, LCP ECHOINTERVAL, NULL, CFNUMBER },
625 { REGULAR, NETPROP PPP, LCP COMPRESSIONACFIELD, NULL, CFNUMBER_BOOL },
626 { REGULAR, NETPROP PPP, LCP COMPRESSIONPFIELD, NULL, CFNUMBER_BOOL },
627 { REGULAR, NETPROP PPP, LCP MRU, NULL, CFNUMBER },
628 { REGULAR, NETPROP PPP, LCP MTU, NULL, CFNUMBER },
629 { REGULAR, NETPROP PPP, LCP RECEIVEACCM, NULL, CFNUMBER },
630 { REGULAR, NETPROP PPP, LCP TRANSMITACCM, NULL, CFNUMBER },
631 { COMMENT, "", NULL, NULL, NULL },
632
633 { COMMENT, "/*\n * " KEY_PREFIX NETENT PPPOE " Entity Keys\n */", NULL, NULL, NULL },
634 { COMMENT, "/* RESERVED FOR FUTURE USE */", NULL, NULL, NULL },
635 { COMMENT, "", NULL, NULL, NULL },
636
637 { COMMENT, "/*\n * " KEY_PREFIX NETENT PPPSERIAL " Entity Keys\n */", NULL, NULL, NULL },
638 { COMMENT, "/* RESERVED FOR FUTURE USE */", NULL, NULL, NULL },
639 { COMMENT, "", NULL, NULL, NULL },
640
641 { COMMENT, "/*\n * " KEY_PREFIX NETENT PPTP " Entity Keys\n */", NULL, NULL, NULL },
642 { COMMENT, "/* RESERVED FOR FUTURE USE */", NULL, NULL, NULL },
643 { COMMENT, "", NULL, NULL, NULL },
644
645 { COMMENT, "/*\n * " KEY_PREFIX NETENT L2TP " Entity Keys\n */", NULL, NULL, NULL },
646 { DEFINE , NETPROP L2TP, IPSEC SHAREDSECRET, NULL, CFSTRING },
647 { DEFINE , NETPROP L2TP, IPSEC SHAREDSECRET ENCRYPTION, NULL, CFSTRING },
648 { DEFINE , NETPROP L2TP, TRANSPORT, NULL, CFSTRING },
649 { COMMENT, "", NULL, NULL, NULL },
650 { COMMENT, "/* " KEY_PREFIX NETPROP L2TP IPSEC SHAREDSECRET ENCRYPTION " values */", NULL, NULL, NULL },
651 { DEFINE , NETVAL L2TP IPSEC SHAREDSECRET ENCRYPTION, KEYCHAIN, NULL, NULL },
652 { COMMENT, "", NULL, NULL, NULL },
653 { COMMENT, "/* " KEY_PREFIX NETPROP L2TP TRANSPORT " values */", NULL, NULL, NULL },
654 { DEFINE , NETVAL L2TP TRANSPORT, IP, NULL, NULL },
655 { DEFINE , NETVAL L2TP TRANSPORT, IPSEC, NULL, NULL },
656 { COMMENT, "", NULL, NULL, NULL },
657
658 { COMMENT, "/*\n * " KEY_PREFIX NETENT PROXIES " Entity Keys\n */", NULL, NULL, NULL },
659 { REGULAR, NETPROP PROXIES, EXCEPTIONSLIST, NULL, CFARRAY_CFSTRING },
660 { REGULAR, NETPROP PROXIES, FTPENABLE, NULL, CFNUMBER_BOOL },
661 { REGULAR, NETPROP PROXIES, FTPPASSIVE, NULL, CFNUMBER_BOOL },
662 { REGULAR, NETPROP PROXIES, FTPPORT, NULL, CFNUMBER },
663 { REGULAR, NETPROP PROXIES, FTPPROXY, NULL, CFSTRING },
664 { REGULAR, NETPROP PROXIES, GOPHERENABLE, NULL, CFNUMBER_BOOL },
665 { REGULAR, NETPROP PROXIES, GOPHERPORT, NULL, CFNUMBER },
666 { REGULAR, NETPROP PROXIES, GOPHERPROXY, NULL, CFSTRING },
667 { REGULAR, NETPROP PROXIES, HTTPENABLE, NULL, CFNUMBER_BOOL },
668 { REGULAR, NETPROP PROXIES, HTTPPORT, NULL, CFNUMBER },
669 { REGULAR, NETPROP PROXIES, HTTPPROXY, NULL, CFSTRING },
670 { DEFINE , NETPROP PROXIES, HTTPSENABLE, NULL, CFNUMBER_BOOL },
671 { DEFINE , NETPROP PROXIES, HTTPSPORT, NULL, CFNUMBER },
672 { DEFINE , NETPROP PROXIES, HTTPSPROXY, NULL, CFSTRING },
673 { REGULAR, NETPROP PROXIES, RTSPENABLE, NULL, CFNUMBER_BOOL },
674 { REGULAR, NETPROP PROXIES, RTSPPORT, NULL, CFNUMBER },
675 { REGULAR, NETPROP PROXIES, RTSPPROXY, NULL, CFSTRING },
676 { REGULAR, NETPROP PROXIES, SOCKSENABLE, NULL, CFNUMBER_BOOL },
677 { REGULAR, NETPROP PROXIES, SOCKSPORT, NULL, CFNUMBER },
678 { REGULAR, NETPROP PROXIES, SOCKSPROXY, NULL, CFSTRING },
679 { COMMENT, "", NULL, NULL, NULL },
680
681 { COMMENT, "/*\n " KEY_PREFIX COMP USERS " Entity Keys\n */", NULL, NULL, NULL },
682 { REGULAR, USERSENT, CONSOLEUSER, NULL, NULL },
683 { COMMENT, "", NULL, NULL, NULL },
684
685 { COMMENT, "/*\n * " KEY_PREFIX COMP SYSTEM " Properties\n */", NULL, NULL, NULL },
686 { REGULAR, SYSTEMPROP, COMPUTERNAME, NULL, CFSTRING },
687 { REGULAR, SYSTEMPROP, COMPUTERNAME ENCODING, NULL, CFNUMBER },
688 { COMMENT, "", NULL, NULL, NULL },
689
690 { COMMENT, "/*\n * Configuration Store Definitions\n */", NULL },
691 { COMMENT, "/* domain prefixes */", NULL },
692 { DEFINE , DYNAMICSTORE DOMAIN, FILE, "File:", NULL },
693 { DEFINE , DYNAMICSTORE DOMAIN, PLUGIN, "Plugin:", NULL },
694 { DEFINE , DYNAMICSTORE DOMAIN, SETUP, "Setup:", NULL },
695 { DEFINE , DYNAMICSTORE DOMAIN, STATE, "State:", NULL },
696 { DEFINE , DYNAMICSTORE DOMAIN, PREFS, "Prefs:", NULL },
697 { COMMENT, "", NULL, NULL, NULL },
698
699 { COMMENT, "/* " KEY_PREFIX DYNAMICSTORE DOMAIN SETUP " Properties */", NULL },
700 { DEFINE , DYNAMICSTORE SETUPPROP, CURRENTSET, NULL, CFSTRING },
701 { DEFINE , DYNAMICSTORE SETUPPROP, LASTUPDATED, NULL, NULL },
702 { COMMENT, "", NULL, NULL, NULL },
703
704 { COMMENT, "/* Properties */", NULL },
705 { DEFINE , DYNAMICSTORE NETPROP, INTERFACES, NULL, CFARRAY_CFSTRING },
706 { DEFINE , DYNAMICSTORE NETPROP, PRIMARYINTERFACE, NULL, CFSTRING },
707 { DEFINE , DYNAMICSTORE NETPROP, PRIMARYSERVICE, NULL, CFSTRING },
708 { DEFINE , DYNAMICSTORE NETPROP, SERVICEIDS, NULL, CFARRAY_CFSTRING },
709 { COMMENT, "", NULL, NULL, NULL },
710
711 { COMMENT, "/*\n * Obsolete schema definitions which will be removed \"soon\".\n */", NULL },
712 { OBSOLETE, USERSPROP CONSOLEUSER, NAME, NULL, CFSTRING },
713 { OBSOLETE, USERSPROP CONSOLEUSER, UID, NULL, CFNUMBER },
714 { OBSOLETE, USERSPROP CONSOLEUSER, GID, NULL, CFNUMBER },
715 { COMMENT, "", NULL, NULL, NULL },
716
717 { END, NULL, NULL, NULL, NULL },
718 };
719
720 static inline void
721 setmax(int *max, char **maxstr, char *str)
722 {
723 int l;
724
725 l = strlen(str);
726 if (l > *max) {
727 if (*maxstr) free(*maxstr);
728 *maxstr = strdup(str);
729 *max = l;
730 }
731 return;
732 }
733
734 enum {
735 gen_header_e,
736 gen_hfile_e,
737 gen_cfile_e,
738 };
739
740 void
741 dump_names(int type)
742 {
743 int i;
744 int maxkbuf = 0;
745 char *maxkstr = NULL;
746 int maxvbuf = 0;
747 char *maxvstr = NULL;
748
749 for (i = 0; TRUE; i++) {
750 switch (names[i].control) {
751 case END: {
752 goto done;
753 break;
754 }
755 case COMMENT: {
756 switch (type) {
757 case gen_header_e:
758 case gen_hfile_e:
759 if (names[i].prefix)
760 printf("%s\n", names[i].prefix);
761 break;
762 default:
763 break;
764 }
765 break;
766 }
767 case DEFINE: {
768 char kbuf[256];
769 char vbuf[256];
770
771 switch (type) {
772 case gen_header_e:
773 snprintf(kbuf, sizeof(kbuf), KEY_PREFIX "%s%s",
774 names[i].prefix, names[i].key);
775
776 if (names[i].value)
777 snprintf(vbuf, sizeof(vbuf), "SCSTR(\"%s\")",
778 names[i].value);
779 else
780 snprintf(vbuf, sizeof(vbuf), "SCSTR(\"%s\")",
781 names[i].key);
782
783 if (names[i].type)
784 printf("#define %-40s %-40s /* %s */\n",
785 kbuf, vbuf, names[i].type);
786 else
787 printf("#define %-40s %-40s\n",
788 kbuf, vbuf);
789 break;
790 case gen_hfile_e:
791 snprintf(kbuf, sizeof(kbuf), "(" KEY_PREFIX "%s%s);",
792 names[i].prefix, names[i].key);
793 setmax(&maxkbuf, &maxkstr, kbuf);
794
795 snprintf(vbuf, sizeof(vbuf), "\"%s\"",
796 names[i].value ? names[i].value : names[i].key);
797 setmax(&maxvbuf, &maxvstr, vbuf);
798
799 printf("SC_SCHEMA_DECLARATION%-42s /* %-17s %-30s */\n",
800 kbuf,
801 names[i].type ? names[i].type : "",
802 vbuf);
803 break;
804 case gen_cfile_e:
805 snprintf(kbuf, sizeof(kbuf), KEY_PREFIX "%s%s",
806 names[i].prefix, names[i].key);
807
808 if (names[i].value)
809 printf("const CFStringRef %-45s = CFSTR(\"%s\");\n",
810 kbuf, names[i].value);
811 else
812 printf("const CFStringRef %-45s = CFSTR(\"%s\");\n",
813 kbuf, names[i].key);
814 break;
815 default:
816 break;
817 }
818 break;
819 }
820 case REGULAR: {
821 char kbuf[256];
822 char vbuf[256];
823
824 switch (type) {
825 case gen_header_e:
826 snprintf(kbuf, sizeof(kbuf), KEY_PREFIX "%s%s",
827 names[i].prefix, names[i].key);
828
829 if (names[i].value)
830 snprintf(vbuf, sizeof(vbuf), "SCSTR(\"%s\")",
831 names[i].value);
832 else
833 snprintf(vbuf, sizeof(vbuf), "SCSTR(\"%s\")",
834 names[i].key);
835
836 if (names[i].type)
837 printf("#define %-40s %-40s /* %s */\n",
838 kbuf, vbuf, names[i].type);
839 else
840 printf("#define %-40s %-40s\n",
841 kbuf, vbuf);
842 break;
843 case gen_hfile_e:
844 snprintf(kbuf, sizeof(kbuf), "(" KEY_PREFIX "%s%s);",
845 names[i].prefix, names[i].key);
846 setmax(&maxkbuf, &maxkstr, kbuf);
847
848 snprintf(vbuf, sizeof(vbuf), "\"%s\"",
849 names[i].value ? names[i].value : names[i].key);
850 setmax(&maxvbuf, &maxvstr, vbuf);
851
852 printf("SC_SCHEMA_DECLARATION%-42s /* %-17s %-30s */\n",
853 kbuf,
854 names[i].type ? names[i].type : "",
855 vbuf);
856 break;
857 case gen_cfile_e:
858 snprintf(kbuf, sizeof(kbuf), KEY_PREFIX "%s%s",
859 names[i].prefix, names[i].key);
860
861 if (names[i].value)
862 printf("const CFStringRef %-45s = CFSTR(\"%s\");\n",
863 kbuf, names[i].value);
864 else
865 printf("const CFStringRef %-45s = CFSTR(\"%s\");\n",
866 kbuf, names[i].key);
867 break;
868 default:
869 break;
870 }
871 break;
872 }
873 case OBSOLETE: {
874 static int nObsolete = 0;
875 char kbuf[256];
876 char vbuf[256];
877
878 switch (type) {
879 case gen_hfile_e:
880 if (nObsolete++ == 0) {
881 printf("#ifndef SCSTR\n");
882 printf("#include <CoreFoundation/CFString.h>\n");
883 printf("#define SCSTR(s) CFSTR(s)\n");
884 printf("#endif\n");
885 }
886
887 snprintf(kbuf, sizeof(kbuf), KEY_PREFIX "%s%s",
888 names[i].prefix, names[i].key);
889
890 if (names[i].value)
891 snprintf(vbuf, sizeof(vbuf), "SCSTR(\"%s\")",
892 names[i].value);
893 else
894 snprintf(vbuf, sizeof(vbuf), "SCSTR(\"%s\")",
895 names[i].key);
896
897 printf("#define %-40s %-40s /* %s */\n",
898 kbuf,
899 vbuf,
900 names[i].type ? names[i].type : "");
901 break;
902 default:
903 break;
904 }
905 break;
906 }
907 case FUTURE: {
908 char kbuf[256];
909
910 switch (type) {
911 case gen_header_e:
912 snprintf(kbuf, sizeof(kbuf), KEY_PREFIX "%s%s",
913 names[i].prefix, names[i].key);
914
915 printf("// #define %-37s %-40s /* %s */\n",
916 kbuf,
917 "SCSTR(\"???\") */",
918 "RESERVED FOR FUTURE USE");
919 break;
920 case gen_hfile_e:
921 snprintf(kbuf, sizeof(kbuf), "(" KEY_PREFIX "%s%s);",
922 names[i].prefix, names[i].key);
923 setmax(&maxkbuf, &maxkstr, kbuf);
924
925 printf("// SC_SCHEMA_DECLARATION%-39s /* %s */\n",
926 kbuf, "RESERVED FOR FUTURE USE");
927 break;
928 default:
929 break;
930 }
931 break;
932 }
933 default: {
934 break;
935 }
936 }
937 }
938 done:
939 switch (type) {
940 case gen_hfile_e:
941 fprintf(stderr, "max key: length = %2d, string = %s\n", maxkbuf, maxkstr);
942 fprintf(stderr, "max val: length = %2d, string = %s\n", maxvbuf, maxvstr);
943 break;
944 }
945 return;
946 }
947
948 int
949 main(int argc, char * argv[])
950 {
951 char * type = "";
952
953 if (argc >= 2)
954 type = argv[1];
955
956 if (strcmp(type, "header-x") == 0) {
957 printf("%s\n", copyright_string);
958 printf("/*\n * This file is automatically generated\n * DO NOT EDIT!\n */\n\n");
959
960 printf("/*\n");
961 printf(" * Note: For Cocoa/Obj-C/Foundation programs accessing these preference\n");
962 printf(" * keys you may want to consider the following:\n");
963 printf(" *\n");
964 printf(" * #define SCSTR(s) (NSString *)CFSTR(s)\n");
965 printf(" * #import <SystemConfiguration/SystemConfiguration.h>\n");
966 printf(" */\n\n");
967
968 printf("#ifndef _SCSCHEMADEFINITIONS_10_1_H\n#define _SCSCHEMADEFINITIONS_10_1_H\n\n");
969
970 printf("#ifndef SCSTR\n");
971 printf("#include <CoreFoundation/CFString.h>\n");
972 printf("#define SCSTR(s) CFSTR(s)\n");
973 printf("#endif\n");
974
975 printf("\n");
976 dump_names(gen_header_e);
977 printf("#endif /* _SCSCHEMADEFINITIONS_10_1_H */\n");
978 }
979 else if (strcmp(type, "header") == 0) {
980 printf("%s\n", copyright_string);
981 printf("/*\n * This file is automatically generated\n * DO NOT EDIT!\n */\n\n");
982
983 printf("/*\n");
984 printf(" * Note: For Cocoa/Obj-C/Foundation programs accessing these preference\n");
985 printf(" * keys you may want to consider the following:\n");
986 printf(" *\n");
987 printf(" * #define " SC_SCHEMA_DECLARATION "(x)\t\textern NSString * x\n");
988 printf(" * #import <SystemConfiguration/SystemConfiguration.h>\n");
989 printf(" */\n\n");
990
991 printf("#ifndef _SCSCHEMADEFINITIONS_H\n#define _SCSCHEMADEFINITIONS_H\n\n");
992
993 printf("#ifndef SC_SCHEMA_DECLARATION\n");
994 printf("#ifndef SCSTR\n");
995 printf("#include <CoreFoundation/CFString.h>\n");
996 printf("#define " SC_SCHEMA_DECLARATION "(x)\textern const CFStringRef x\n");
997 printf("#else\n");
998 printf("#import <Foundation/NSString.h>\n");
999 printf("#define " SC_SCHEMA_DECLARATION "(x)\textern NSString * x\n");
1000 printf("#endif\n");
1001 printf("#endif\n");
1002
1003 printf("\n");
1004 dump_names(gen_hfile_e);
1005
1006 printf("#include <AvailabilityMacros.h>\n");
1007 printf("#if MAC_OS_X_VERSION_10_3 > MAC_OS_X_VERSION_MIN_REQUIRED\n");
1008 printf(" #if MAC_OS_X_VERSION_10_1 <= MAC_OS_X_VERSION_MIN_REQUIRED\n");
1009 printf(" #include <SystemConfiguration/SCSchemaDefinitions_10_1.h>\n");
1010 printf(" #endif\n");
1011 printf("#endif\n\n");
1012
1013 printf("#endif /* _SCSCHEMADEFINITIONS_H */\n");
1014 }
1015 else if (strcmp(type, "cfile") == 0) {
1016 printf("/*\n");
1017 printf(" * This file is automatically generated\n");
1018 printf(" * DO NOT EDIT!\n");
1019 printf(" */\n");
1020 printf("\n");
1021 printf("#include <CoreFoundation/CFString.h>\n");
1022 printf("\n");
1023 dump_names(gen_cfile_e);
1024 }
1025 exit(0);
1026 return (0);
1027 }
1028