/* * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * * The contents of this file constitute Original Code as defined in and * are subject to the Apple Public Source License Version 1.1 (the * "License"). You may not use this file except in compliance with the * License. Please obtain a copy of the License at * http://www.apple.com/publicsource and read it before using this file. * * This 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 OR NON-INFRINGEMENT. Please see the * License for the specific language governing rights and limitations * under the License. * * @APPLE_LICENSE_HEADER_END@ */ /* * genSCPreferences.c * - generates System Configuration header/cfile * - invoke with "header" to generate the header * - invoke with "cfile" to generate the cfile */ /* * Modification History * 3 Nov 2000 Dieter Siegmund (dieter@apple) * - created */ #include #include #include #include char copyright_string[] = "/*\n" " * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.\n" " *\n" " * @APPLE_LICENSE_HEADER_START@\n" " * \n" " * The contents of this file constitute Original Code as defined in and\n" " * are subject to the Apple Public Source License Version 1.1 (the\n" " * \"License\"). You may not use this file except in compliance with the\n" " * License. Please obtain a copy of the License at\n" " * http://www.apple.com/publicsource and read it before using this file.\n" " * \n" " * This Original Code and all software distributed under the License are\n" " * distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY KIND, EITHER\n" " * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,\n" " * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,\n" " * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the\n" " * License for the specific language governing rights and limitations\n" " * under the License.\n" " * \n" " * @APPLE_LICENSE_HEADER_END@\n" " */\n"; #define REGULAR 0 #define COMMENT 1 #define END 2 #define STRING_MACRO_NAME "STRING_DECL" #define KEY_PREFIX "kSC" #define CACHE "Cache" #define COMP "Comp" #define PREF "Pref" #define PROP "Prop" #define PATH "Path" #define NETENT "EntNet" #define NETPROP "PropNet" #define NETVAL "ValNet" #define SETUPENT "EntSetup" #define SETUPPROP "PropSetup" #define SYSTEMENT "EntSystem" #define SYSTEMPROP "PropSystem" #define RESV "Resv" #define USERSENT "EntUsers" #define USERSPROP "PropUsers" #define CFNUMBER "CFNumber" #define CFSTRING "CFString" #define CFNUMBER_BOOL "CFNumber (0 or 1)" #define CFARRAY_CFSTRING "CFArray[CFString]" #define ACTIVE "Active" #define ADDRESSES "Addresses" #define AIRPORT "AirPort" #define ALERT "Alert" #define ANYREGEX "AnyRegex" #define AUTOMATIC "Automatic" #define APPLETALK "AppleTalk" #define AUTH "Auth" #define BINDINGMETHODS "BindingMethods" #define BOOTP "BOOTP" #define BROADCAST "Broadcast" #define BROADCASTADDRESSES "BroadcastAddresses" #define BROADCASTSERVERTAG "BroadcastServerTag" #define COMM "Comm" #define COMPONENTSEPARATOR "ComponentSeparator" #define COMPUTERNAME "ComputerName" #define CONFIGMETHOD "ConfigMethod" #define CONSOLEUSER "ConsoleUser" #define CURRENTSET "CurrentSet" #define DEFAULTSERVERTAG "DefaultServerTag" #define DEFAULTZONE "DefaultZone" #define DESTADDRESSES "DestAddresses" #define DHCP "DHCP" #define DHCPCLIENTID "DHCPClientID" #define DEVICENAME "DeviceName" #define DIALMODE "DialMode" #define DNS "DNS" #define DOMAIN "Domain" #define DOMAINNAME "DomainName" #define DOMAINSEPARATOR "DomainSeparator" #define DUPLEX "Duplex" #define ENCODING "Encoding" #define ENCRYPTION "Encryption" #define ETHERNET "Ethernet" #define EXCEPTIONSLIST "ExceptionsList" #define FILE "File" #define FTPENABLE "FTPEnable" #define FTPPASSIVE "FTPPassive" #define FTPPORT "FTPPort" #define FTPPROXY "FTPProxy" #define GID "GID" #define GLOBAL "Global" #define GOPHERENABLE "GopherEnable" #define GOPHERPORT "GopherPort" #define GOPHERPROXY "GopherProxy" #define HARDWARE "Hardware" #define HTTPENABLE "HTTPEnable" #define HTTPPORT "HTTPPort" #define HTTPPROXY "HTTPProxy" #define INACTIVE "Inactive" #define INCLUDEPRIVATENETS "IncludePrivateNets" #define INFORM "INFORM" #define INTERFACE "Interface" #define INTERFACES "Interfaces" #define IPCP "IPCP" #define IPV4 "IPv4" #define IPV6 "IPv6" #define LASTUPDATED "LastUpdated" #define LCP "LCP" #define LINK "Link" #define MACADDRESS "MACAddress" #define MANUAL "Manual" #define MEDIA "Media" #define MODEM "Modem" #define NAME "Name" #define NETINFO "NetInfo" #define NETWORK "Network" #define NETWORKSERVICES "NetworkServices" #define NETWORKID "NetworkID" #define NIS "NIS" #define NODE "Node" #define NODEID "NodeID" #define PASSWORD "Password" #define PLUGIN "Plugin" #define PORTNAME "PortName" #define PPP "PPP" #define PPPOE "PPPoE" #define PPPSERIAL "PPPSerial" #define PPPOVERRIDEPRIMARY "PPPOverridePrimary" #define PREFS "Prefs" #define PRIMARYINTERFACE "PrimaryInterface" #define PROTOCOL "Protocol" #define PROXIES "Proxies" #define ROOTSEPARATOR "RootSeparator" #define ROUTER "Router" #define RTSPENABLE "RTSPEnable" #define RTSPPORT "RTSPPort" #define RTSPPROXY "RTSPProxy" #define SEARCHDOMAINS "SearchDomains" #define SEEDNETWORKRANGE "SeedNetworkRange" #define SEEDROUTER "SeedRouter" #define SEEDZONES "SeedZones" #define SERVICE "Service" #define SERVERADDRESSES "ServerAddresses" #define SERVERTAGS "ServerTags" #define SERVICEORDER "ServiceOrder" #define SERVICEIDS "ServiceIDs" #define SETS "Sets" #define SETUP "Setup" #define SPEED "Speed" #define STATE "State" #define SOCKSENABLE "SOCKSEnable" #define SOCKSPORT "SOCKSPort" #define SOCKSPROXY "SOCKSProxy" #define SUBNETMASKS "SubnetMasks" #define SUBTYPE "SubType" #define SYSTEM "System" #define TYPE "Type" #define UID "UID" #define USERS "Users" #define USERDEFINEDNAME "UserDefinedName" #define VERBOSELOGGING "VerboseLogging" struct { int control; unsigned char * prefix; unsigned char * key; unsigned char * value; unsigned char * type; } names[] = { { COMMENT, "/*\n * Reserved Keys\n */", NULL, NULL }, { REGULAR, RESV, LINK, "__LINK__", CFSTRING }, { REGULAR, RESV, INACTIVE, "__INACTIVE__", NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * Generic Keys\n */", NULL }, { REGULAR, PROP, MACADDRESS, NULL, CFSTRING }, { REGULAR, PROP, USERDEFINEDNAME, NULL, CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * Preference Keys\n */", NULL }, { REGULAR, PREF, CURRENTSET, NULL, NULL }, { REGULAR, PREF, HARDWARE, NULL, NULL }, { REGULAR, PREF, NETWORKSERVICES, NULL, NULL }, { REGULAR, PREF, SETS, NULL, NULL }, { REGULAR, PREF, SYSTEM, NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * Component Keys\n */", NULL }, { REGULAR, COMP, NETWORK, NULL, NULL }, { REGULAR, COMP, SERVICE, NULL, NULL }, { REGULAR, COMP, GLOBAL, NULL, NULL }, { REGULAR, COMP, INTERFACE, NULL, NULL }, { REGULAR, COMP, SYSTEM, NULL, NULL }, { REGULAR, COMP, USERS, "users", NULL }, /* FIX ME! */ { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * Regex key which matches any component\n */", NULL }, { REGULAR, COMP, ANYREGEX, "[^/]+", NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * Network Entity Keys\n */", NULL }, { REGULAR, NETENT, AIRPORT, NULL, NULL }, { REGULAR, NETENT, APPLETALK, NULL, NULL }, { REGULAR, NETENT, DNS, NULL, NULL }, { REGULAR, NETENT, ETHERNET, NULL, NULL }, { REGULAR, NETENT, INTERFACE, NULL, NULL }, { REGULAR, NETENT, IPV4, NULL, NULL }, { REGULAR, NETENT, IPV6, NULL, NULL }, { REGULAR, NETENT, LINK, NULL, NULL }, { REGULAR, NETENT, MODEM, NULL, NULL }, { REGULAR, NETENT, NETINFO, NULL, NULL }, { REGULAR, NETENT, NIS, NULL, NULL }, { REGULAR, NETENT, PPP, NULL, NULL }, { REGULAR, NETENT, PPPOE, NULL, NULL }, { REGULAR, NETENT, PROXIES, NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " NETWORK " Properties\n */", NULL }, { REGULAR, NETPROP, SERVICEORDER, NULL, CFARRAY_CFSTRING }, { REGULAR, NETPROP, PPPOVERRIDEPRIMARY, NULL, CFNUMBER_BOOL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " AIRPORT " (Hardware) Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, NETPROP AIRPORT, "PowerEnabled", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP AIRPORT, AUTH PASSWORD, NULL, CFSTRING }, { REGULAR, NETPROP AIRPORT, AUTH PASSWORD ENCRYPTION, NULL, CFSTRING }, { REGULAR, NETPROP AIRPORT, "PreferredNetwork", NULL, CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " APPLETALK " Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, NETPROP APPLETALK, COMPUTERNAME, NULL, CFSTRING }, { REGULAR, NETPROP APPLETALK, COMPUTERNAME ENCODING, NULL, CFNUMBER }, { REGULAR, NETPROP APPLETALK, CONFIGMETHOD, NULL, CFSTRING }, { REGULAR, NETPROP APPLETALK, DEFAULTZONE, NULL, CFSTRING }, { REGULAR, NETPROP APPLETALK, NETWORKID, NULL, CFNUMBER }, { REGULAR, NETPROP APPLETALK, NODEID, NULL, CFNUMBER }, { REGULAR, NETPROP APPLETALK, SEEDNETWORKRANGE, NULL, CFARRAY_CFSTRING }, { REGULAR, NETPROP APPLETALK, SEEDZONES, NULL, CFARRAY_CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/* " KEY_PREFIX NETPROP APPLETALK CONFIGMETHOD " values */", NULL, NULL, NULL }, { REGULAR, NETVAL APPLETALK CONFIGMETHOD, NODE, NULL, NULL }, { REGULAR, NETVAL APPLETALK CONFIGMETHOD, ROUTER, NULL, NULL }, { REGULAR, NETVAL APPLETALK CONFIGMETHOD, SEEDROUTER, NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " DNS " Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, NETPROP DNS, DOMAINNAME, NULL, CFSTRING }, { REGULAR, NETPROP DNS, SEARCHDOMAINS, NULL, CFARRAY_CFSTRING}, { REGULAR, NETPROP DNS, SERVERADDRESSES, NULL, CFARRAY_CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " ETHERNET " (Hardware) Entity Keys\n */", NULL, NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " INTERFACE " Entity Keys\n */", NULL }, { REGULAR, NETPROP INTERFACE, DEVICENAME, NULL, CFSTRING }, { REGULAR, NETPROP INTERFACE, HARDWARE, NULL, CFSTRING }, { REGULAR, NETPROP INTERFACE, TYPE, NULL, CFSTRING }, { REGULAR, NETPROP INTERFACE, SUBTYPE, NULL, CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/* " KEY_PREFIX NETPROP INTERFACE TYPE " values */", NULL, NULL, NULL }, { REGULAR, NETVAL INTERFACE TYPE, ETHERNET, NULL, NULL }, { REGULAR, NETVAL INTERFACE TYPE, PPP, NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/* " KEY_PREFIX NETPROP SERVICE SUBTYPE " values (for " PPP ") */", NULL, NULL, NULL }, { REGULAR, NETVAL INTERFACE SUBTYPE, PPPOE, NULL, NULL }, { REGULAR, NETVAL INTERFACE SUBTYPE, PPPSERIAL, NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " IPV4 " Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, NETPROP IPV4, ADDRESSES, NULL, CFARRAY_CFSTRING }, { REGULAR, NETPROP IPV4, CONFIGMETHOD, NULL, CFSTRING }, { REGULAR, NETPROP IPV4, DHCPCLIENTID, NULL, CFSTRING }, { REGULAR, NETPROP IPV4, ROUTER, NULL, CFSTRING }, { REGULAR, NETPROP IPV4, SUBNETMASKS, NULL, CFARRAY_CFSTRING }, { REGULAR, NETPROP IPV4, DESTADDRESSES, NULL, CFARRAY_CFSTRING }, { REGULAR, NETPROP IPV4, BROADCASTADDRESSES, NULL, CFARRAY_CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/* " KEY_PREFIX NETPROP IPV4 CONFIGMETHOD " values */", NULL, NULL, NULL }, { REGULAR, NETVAL IPV4 CONFIGMETHOD, BOOTP, NULL, NULL }, { REGULAR, NETVAL IPV4 CONFIGMETHOD, DHCP, NULL, NULL }, { REGULAR, NETVAL IPV4 CONFIGMETHOD, INFORM, NULL, NULL }, { REGULAR, NETVAL IPV4 CONFIGMETHOD, MANUAL, NULL, NULL }, { REGULAR, NETVAL IPV4 CONFIGMETHOD, PPP, NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " IPV6 " Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, NETPROP IPV6, ADDRESSES, NULL, CFARRAY_CFSTRING }, { REGULAR, NETPROP IPV6, CONFIGMETHOD, NULL, CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " LINK " Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, NETPROP LINK, ACTIVE, NULL, CFNUMBER_BOOL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " MODEM " (Hardware) Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, NETPROP MODEM, "ConnectionScript", NULL, CFSTRING }, { REGULAR, NETPROP MODEM, DIALMODE, NULL, CFSTRING }, { REGULAR, NETPROP MODEM, "PulseDial", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP MODEM, "Speaker", NULL, CFNUMBER_BOOL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/* " KEY_PREFIX NETPROP MODEM DIALMODE " values */", NULL, NULL, NULL }, { REGULAR, NETVAL MODEM DIALMODE, "IgnoreDialTone", NULL, NULL }, { REGULAR, NETVAL MODEM DIALMODE, MANUAL, NULL, NULL }, { REGULAR, NETVAL MODEM DIALMODE, "WaitForDialTone", NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " NETINFO " Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, NETPROP NETINFO, BINDINGMETHODS, NULL, CFSTRING }, { REGULAR, NETPROP NETINFO, SERVERADDRESSES, NULL, CFARRAY_CFSTRING }, { REGULAR, NETPROP NETINFO, SERVERTAGS, NULL, CFARRAY_CFSTRING }, { REGULAR, NETPROP NETINFO, BROADCASTSERVERTAG, NULL, CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/* " KEY_PREFIX NETPROP NETINFO BINDINGMETHODS " values */", NULL, NULL, NULL }, { REGULAR, NETVAL NETINFO BINDINGMETHODS, BROADCAST, NULL, NULL }, { REGULAR, NETVAL NETINFO BINDINGMETHODS, DHCP, NULL, NULL }, { REGULAR, NETVAL NETINFO BINDINGMETHODS, MANUAL, NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/* " KEY_PREFIX NETPROP NETINFO BROADCASTSERVERTAG " default value */", NULL, NULL, NULL }, { REGULAR, NETVAL NETINFO, DEFAULTSERVERTAG, "network", NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " NIS " Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, NETPROP NIS, DOMAINNAME, NULL, CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " PPP " Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, NETPROP PPP, "DialOnDemand", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, "DisconnectOnIdle", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, "DisconnectOnIdleTimer", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, "DisconnectOnLogout", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, "IdleReminderTimer", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, "IdleReminder", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, "Logfile", NULL, CFSTRING }, { REGULAR, NETPROP PPP, VERBOSELOGGING, NULL, CFNUMBER_BOOL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/* " AUTH ": */", NULL, NULL, NULL }, { REGULAR, NETPROP PPP, AUTH NAME, NULL, CFSTRING }, { REGULAR, NETPROP PPP, AUTH PASSWORD, NULL, CFSTRING }, { REGULAR, NETPROP PPP, AUTH PASSWORD ENCRYPTION, NULL, CFSTRING }, { REGULAR, NETPROP PPP, AUTH PROTOCOL, NULL, CFARRAY_CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/* " KEY_PREFIX NETPROP PPP AUTH PROTOCOL " values */", NULL, NULL, NULL }, { REGULAR, NETVAL PPP AUTH PROTOCOL, "CHAP", NULL, CFSTRING }, { REGULAR, NETVAL PPP AUTH PROTOCOL, "PAP", NULL, CFSTRING }, { COMMENT, "\n/* " COMM ": */", NULL, NULL, NULL }, { REGULAR, NETPROP PPP, COMM "AlternateRemoteAddress", NULL, CFSTRING }, { REGULAR, NETPROP PPP, COMM "ConnectDelay", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, COMM "DisplayTerminalWindow", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, COMM "RedialCount", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, COMM "RedialEnabled", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, COMM "RedialInterval", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, COMM "RemoteAddress", NULL, CFSTRING }, { REGULAR, NETPROP PPP, COMM "TerminalScript", NULL, CFSTRING }, { COMMENT, "\n/* " IPCP ": */", NULL, NULL, NULL }, { REGULAR, NETPROP PPP, IPCP "CompressionVJ", NULL, CFNUMBER_BOOL }, { COMMENT, "\n/* " LCP ": */", NULL, NULL, NULL }, { REGULAR, NETPROP PPP, LCP "EchoEnabled", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, LCP "EchoFailure", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, LCP "EchoInterval", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, LCP "CompressionACField", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, LCP "CompressionPField", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, LCP "MRU", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, LCP "MTU", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, LCP "ReceiveACCM", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, LCP "TransmitACCM", NULL, CFNUMBER }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " PPPOE " Entity Keys\n */", NULL, NULL, NULL }, { COMMENT, "/* RESERVED FOR FUTURE USE */", NULL, NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " PPPSERIAL " Entity Keys\n */", NULL, NULL, NULL }, { COMMENT, "/* RESERVED FOR FUTURE USE */", NULL, NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " PROXIES " Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, NETPROP PROXIES, EXCEPTIONSLIST, NULL, CFARRAY_CFSTRING }, { REGULAR, NETPROP PROXIES, FTPENABLE, NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PROXIES, FTPPASSIVE, NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PROXIES, FTPPORT, NULL, CFNUMBER }, { REGULAR, NETPROP PROXIES, FTPPROXY, NULL, CFSTRING }, { REGULAR, NETPROP PROXIES, GOPHERENABLE, NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PROXIES, GOPHERPORT, NULL, CFNUMBER }, { REGULAR, NETPROP PROXIES, GOPHERPROXY, NULL, CFSTRING }, { REGULAR, NETPROP PROXIES, HTTPENABLE, NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PROXIES, HTTPPORT, NULL, CFNUMBER }, { REGULAR, NETPROP PROXIES, HTTPPROXY, NULL, CFSTRING }, { REGULAR, NETPROP PROXIES, RTSPENABLE, NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PROXIES, RTSPPORT, NULL, CFNUMBER }, { REGULAR, NETPROP PROXIES, RTSPPROXY, NULL, CFSTRING }, { REGULAR, NETPROP PROXIES, SOCKSENABLE, NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PROXIES, SOCKSPORT, NULL, CFNUMBER }, { REGULAR, NETPROP PROXIES, SOCKSPROXY, NULL, CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * Users Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, USERSENT, CONSOLEUSER, NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n " CONSOLEUSER " Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, USERSPROP CONSOLEUSER, NAME, "username", CFSTRING }, /* FIX ME! */ { REGULAR, USERSPROP CONSOLEUSER, UID, "uid", CFSTRING }, /* FIX ME! */ { REGULAR, USERSPROP CONSOLEUSER, GID, "gid", CFSTRING }, /* FIX ME! */ { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * " SYSTEM " Entity Keys\n */", NULL, NULL, NULL }, { REGULAR, SYSTEMPROP, COMPUTERNAME, NULL, CFSTRING }, { REGULAR, SYSTEMPROP, COMPUTERNAME ENCODING, NULL, CFNUMBER }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/*\n * Configuration Cache Definitions\n */", NULL }, { COMMENT, "/* domain prefixes */", NULL }, { REGULAR, CACHE DOMAIN, FILE, "File:", NULL }, { REGULAR, CACHE DOMAIN, PLUGIN, "Plugin:", NULL }, { REGULAR, CACHE DOMAIN, SETUP, "Setup:", NULL }, { REGULAR, CACHE DOMAIN, STATE, "State:", NULL }, { REGULAR, CACHE DOMAIN, PREFS, "Prefs:", NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/* Setup: properties */", NULL }, { REGULAR, CACHE SETUPPROP, CURRENTSET, NULL, NULL }, { REGULAR, CACHE SETUPPROP, LASTUPDATED, NULL, NULL }, { COMMENT, "", NULL, NULL, NULL }, { COMMENT, "/* properties */", NULL }, { REGULAR, CACHE NETPROP, INTERFACES, NULL, CFARRAY_CFSTRING }, { REGULAR, CACHE NETPROP, PRIMARYINTERFACE, NULL, CFSTRING }, { REGULAR, CACHE NETPROP, SERVICEIDS, NULL, CFARRAY_CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, // XXX OBSOLETE XXX { COMMENT, "/* OBSOLETE " NETPROP AIRPORT ": */", NULL, NULL, NULL }, { REGULAR, NETPROP AIRPORT, INCLUDEPRIVATENETS, NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP AIRPORT, "PreferredAirportNetwork", NULL, CFSTRING }, { COMMENT, "/* OBSOLETE " NETPROP ETHERNET ": */", NULL, NULL, NULL }, { REGULAR, NETPROP ETHERNET, SPEED, NULL, CFNUMBER }, { REGULAR, NETPROP ETHERNET, DUPLEX, NULL, CFSTRING }, { REGULAR, NETPROP ETHERNET, "WakeOnSignal", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP ETHERNET, "WakeOnTraffic", NULL, CFNUMBER_BOOL }, { COMMENT, "/* " KEY_PREFIX NETPROP ETHERNET DUPLEX " values */", NULL, NULL, NULL }, { REGULAR, NETVAL ETHERNET DUPLEX, AUTOMATIC, NULL, NULL }, { REGULAR, NETVAL ETHERNET DUPLEX, "FULL", NULL, NULL }, { REGULAR, NETVAL ETHERNET DUPLEX, "HALF", NULL, NULL }, { COMMENT, "/* OBSOLETE " NETPROP INTERFACE ": */", NULL, NULL, NULL }, { REGULAR, NETPROP INTERFACE, INTERFACE NAME, NULL, CFSTRING }, { REGULAR, NETPROP INTERFACE, MACADDRESS, NULL, CFSTRING }, { REGULAR, NETPROP INTERFACE, PORTNAME, NULL, CFSTRING }, { COMMENT, "/* OBSOLETE " NETPROP MODEM ": */", NULL, NULL, NULL }, { REGULAR, NETPROP MODEM, "IgnoreDialTone", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP MODEM, "InitString", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP MODEM, "Port", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP MODEM, PORTNAME, NULL, CFSTRING }, { REGULAR, NETPROP MODEM, "RedialCount", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP MODEM, "RedialEnabled", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP MODEM, "RedialTimeout", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP MODEM, "Script", NULL, CFSTRING }, { REGULAR, NETPROP MODEM, "SpeakerEnable", NULL, CFNUMBER }, { REGULAR, NETPROP MODEM, SPEED, NULL, CFNUMBER }, { REGULAR, NETPROP MODEM, "ToneDial", NULL, CFNUMBER }, { REGULAR, NETPROP MODEM, "WaitForTone", NULL, CFNUMBER }, { COMMENT, "/* OBSOLETE " NETPROP PPP ": */", NULL, NULL, NULL }, { REGULAR, NETPROP PPP, ALERT, NULL, CFARRAY_CFSTRING }, { REGULAR, NETVAL PPP ALERT, "Password", NULL, CFSTRING }, { REGULAR, NETVAL PPP ALERT, "Reminder", NULL, CFSTRING }, { REGULAR, NETVAL PPP ALERT, "Status", NULL, CFSTRING }, { REGULAR, NETPROP PPP, "CompressionEnable", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, "DeviceEntity", NULL, CFSTRING }, { REGULAR, NETPROP PPP, "HeaderCompression", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, "IdleDisconnect", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, "IdlePrompt", NULL, CFNUMBER_BOOL }, { REGULAR, NETPROP PPP, "IdleTimeout", NULL, CFSTRING }, { REGULAR, NETPROP PPP, "PromptTimeout", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, "ReminderTimer", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, "SessionTimer", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, COMM "IdleTimer", NULL, CFNUMBER }, { REGULAR, NETPROP PPP, IPCP "LocalAddress", NULL, CFSTRING }, { REGULAR, NETPROP PPP, IPCP "RemoteAddress", NULL, CFSTRING }, { REGULAR, NETPROP PPP, IPCP "UseServerDNS", NULL, CFNUMBER_BOOL }, { COMMENT, "/* OBSOLETE " NETPROP PPPOE ": */", NULL, NULL, NULL }, { REGULAR, NETPROP PPPOE, PORTNAME, NULL, CFSTRING }, { COMMENT, "", NULL, NULL, NULL }, // XXX OBSOLETE XXX { END, NULL, NULL, NULL, NULL }, }; enum { gen_extern_e, gen_init_e, gen_header_e, }; void dump_names(int type) { int i; for (i = 0; TRUE; i++) { switch (names[i].control) { case END: { goto done; break; } case COMMENT: { if (type != gen_extern_e && type != gen_init_e) { if (names[i].prefix) printf("%s\n", names[i].prefix); } break; } case REGULAR: { char buf[256]; switch (type) { case gen_header_e: snprintf(buf, sizeof(buf), KEY_PREFIX "%s%s;", names[i].prefix, names[i].key); if (names[i].type) printf(STRING_MACRO_NAME " %-40s /* %s */\n", buf, names[i].type); else printf(STRING_MACRO_NAME " %s\n", buf); break; case gen_extern_e: snprintf(buf, sizeof(buf), KEY_PREFIX "%s%s", names[i].prefix, names[i].key); printf("volatile CFStringRef " KEY_PREFIX "%s%s = NULL;\n", names[i].prefix, names[i].key); break; case gen_init_e: snprintf(buf, sizeof(buf), KEY_PREFIX "%s%s", names[i].prefix, names[i].key); if (names[i].value) printf(" *((void **)&%s) = (void *)CFSTR(\"%s\");\n", buf, names[i].value); else printf(" *((void **)&%s) = (void *)CFSTR(\"%s\");\n", buf, names[i].key); break; default: break; } } default: { break; } } } done: return; } int main(int argc, char * argv[]) { char * type = ""; if (argc >= 2) type = argv[1]; if (strcmp(type, "header") == 0) { printf("%s\n", copyright_string); printf("/*\n * This file is automatically generated\n * DO NOT EDIT!\n */\n\n"); printf("#ifndef _SCPREFERENCES_H\n#define _SCPREFERENCES_H\n\n"); //printf("#ifndef " STRING_MACRO_NAME "\n"); printf("#ifndef __OBJC__\n"); printf("#define " STRING_MACRO_NAME "\t\textern const CFStringRef\n"); printf("#else\n"); printf("#define " STRING_MACRO_NAME "\t\textern NSString *\n"); printf("#endif\n"); //printf("#endif " STRING_MACRO_NAME "\n"); printf("\n"); dump_names(gen_header_e); printf("#endif /* _SCPREFERENCES_H */\n"); } else if (strcmp(type, "cfile") == 0) { printf("/*\n * This file is automatically generated\n * DO NOT EDIT!\n */\n\n"); printf("\n#include \n\n"); dump_names(gen_extern_e); printf("\n\nvoid\n__private_extern__\n__Initialize(void)\n{\n"); dump_names(gen_init_e); printf("}\n"); } exit(0); return (0); }