package Mac::InternetConfig;=include InternetConfig.xs=cutrequire Tie::Hash;require DynaLoader;require Exporter;@ISA = qw(Exporter DynaLoader);@EXPORT = qw(	kICRealName	kICEmail	kICMailAccount	kICMailPassword	kICNewsAuthUsername	kICNewsAuthPassword	kICArchiePreferred	kICArchieAll	kICUMichPreferred	kICUMichAll	kICInfoMacPreferred	kICInfoMacAll	kICPhHost	kICWhoisHost	kICFingerHost	kICFTPHost	kICTelnetHost	kICSMTPHost	kICNNTPHost	kICGopherHost	kICLDAPServer	kICLDAPSearchbase	kICWWWHomePage	kICWAISGateway	kICListFont	kICScreenFont	kICPrinterFont	kICTextCreator	kICBinaryTypeCreator	kICDownloadFolder	kICSignature	kICOrganization	kICPlan	kICQuotingString	kICMailHeaders	kICNewsHeaders	kICMapping	kICCharacterSet	kICHelper	kICServices	kICNewMailFlashIcon	kICNewMailDialog	kICNewMailPlaySound	kICNewMailSoundName	kICWebBackgroundColour	kICNoProxyDomains	kICUseSocks	kICSocksHost	kICUseHTTPProxy	kICHTTPProxyHost	kICUseFTPProxy	kICFTPProxyHost	kICFTPProxyUser	kICFTPProxyPassword	kICFTPProxyAccount	ICmap_binary	ICmap_resource_fork	ICmap_data_fork	ICmap_post	ICmap_not_incoming	ICmap_not_outgoing	ICservices_tcp	ICservices_udp	icNoPerm	icReadOnlyPerm	icReadWritePerm	ICStart	ICStop	ICFindConfigFile	ICFindUserConfigFile	ICGeneralFindConfigFile	ICChooseConfig	ICChooseNewConfig	ICGetConfigName	ICGetConfigReference	ICSetConfigReference	ICGetSeed	ICGetComponentInstance	ICBegin	ICGetPref	ICSetPref	ICCountPref	ICGetIndPref	ICDeletePref	ICEnd	ICEditPreferences	ICParseURL	ICLaunchURL	%RawInternetConfig 	%InternetConfig);sub kICRealName ()                 { "RealName"; }sub kICEmail ()                    { "Email"; }sub kICMailAccount ()              { "MailAccount"; }sub kICMailPassword ()             { "MailPassword"; }sub kICNewsAuthUsername ()         { "NewsAuthUsername"; }sub kICNewsAuthPassword ()         { "NewsAuthPassword"; }sub kICArchiePreferred ()          { "ArchiePreferred"; }sub kICArchieAll ()                { "ArchieAll"; }sub kICUMichPreferred ()           { "UMichPreferred"; }sub kICUMichAll ()                 { "UMichAll"; }sub kICInfoMacPreferred ()         { "InfoMacPreferred"; }sub kICInfoMacAll ()               { "InfoMacAll"; }sub kICPhHost ()                   { "PhHost"; }sub kICWhoisHost ()                { "WhoisHost"; }sub kICFingerHost ()               { "FingerHost"; }sub kICFTPHost ()                  { "FTPHost"; }sub kICTelnetHost ()               { "TelnetHost"; }sub kICSMTPHost ()                 { "SMTPHost"; }sub kICNNTPHost ()                 { "NNTPHost"; }sub kICGopherHost ()               { "GopherHost"; }sub kICLDAPServer ()               { "LDAPServer"; }sub kICLDAPSearchbase ()           { "LDAPSearchbase"; }sub kICWWWHomePage ()              { "WWWHomePage"; }sub kICWAISGateway ()              { "WAISGateway"; }sub kICListFont ()                 { "ListFont"; }sub kICScreenFont ()               { "ScreenFont"; }sub kICPrinterFont ()              { "PrinterFont"; }sub kICTextCreator ()              { "TextCreator"; }sub kICBinaryTypeCreator ()        { "BinaryTypeCreator"; }sub kICDownloadFolder ()           { "DownloadFolder"; }sub kICSignature ()                { "Signature"; }sub kICOrganization ()             { "Organization"; }sub kICPlan ()                     {  "Plan"; }sub kICQuotingString ()            { "QuotingString"; }sub kICMailHeaders ()              { "MailHeaders"; }sub kICNewsHeaders ()              { "NewsHeaders"; }sub kICMapping ()                  { "Mapping"; }sub kICCharacterSet ()             { "CharacterSet"; }sub kICHelper ()                   { "Helper„"; }sub kICServices ()                 { "Services"; }sub kICNewMailFlashIcon ()         { "NewMailFlashIcon"; }sub kICNewMailDialog ()            { "NewMailDialog"; }sub kICNewMailPlaySound ()         { "NewMailPlaySound"; }sub kICNewMailSoundName ()         { "NewMailSoundName"; }sub kICWebBackgroundColour ()      { "WebBackgroundColour"; }sub kICNoProxyDomains ()           { "NoProxyDomains"; }sub kICUseSocks ()                 { "UseSocks"; }sub kICSocksHost ()                { "SocksHost"; }sub kICUseHTTPProxy ()             { "UseHTTPProxy"; }sub kICHTTPProxyHost ()            { "HTTPProxyHost"; }sub kICUseFTPProxy ()              { "UseFTPProxy"; }sub kICFTPProxyHost ()             { "FTPProxyHost"; }sub kICFTPProxyUser ()             { "FTPProxyUser"; }sub kICFTPProxyPassword ()         { "FTPProxyPassword"; }sub kICFTPProxyAccount ()          { "FTPProxyAccount"; }sub ICmap_binary ()           	  { 0x00000001; }sub ICmap_resource_fork ()    	  { 0x00000002; }sub ICmap_data_fork ()       	     { 0x00000004; }sub ICmap_post ()             	  { 0x00000008; }sub ICmap_not_incoming ()     	  { 0x00000010; }sub ICmap_not_outgoing ()     	  { 0x00000020; }sub ICservices_tcp ()        	     { 0x00000001; }sub ICservices_udp ()        	     { 0x00000002; }sub icNoPerm ()					  	  { 0; }sub icReadOnlyPerm ()			     { 1; }sub icReadWritePerm ()				  { 2; }bootstrap Mac::InternetConfig;sub ICFindConfigFile {	my($inst, @folders) = @_;	ICGeneralFindConfigFile($inst, 1, 0, @folders);}sub ICFindUserConfigFile {	my($inst, @folders) = @_;	ICGeneralFindConfigFile($inst, 0, 0, @folders);}package Mac::InternetConfig::_Raw;import Mac::InternetConfig;@ISA = qw(Tie::Hash);sub TIEHASH {	my($package) = @_;		my(@data) = (ICStart(), 0);	ICFindConfigFile($data[0]);		bless \@data, $package;}sub DESTROY {	my($me) = @_;		ICStop $me->[0];}sub FETCH {	my($me, $key) = @_;		ICGetPref($me->[0], $key);}sub STORE {	my($me, $key, @value) = @_;		ICSetPref($me->[0], $key, @value);}sub DELETE {	my($me, $key) = @_;		ICDeletePref($me->[0], $key);}sub FIRSTKEY {	my($me) = @_;		$me->[1] = 0;		NEXTKEY $me;}sub NEXTKEY {	my($me) = @_;	++${$me}[1];		ICBegin($me->[0], icReadOnlyPerm());	my($key) = ICGetIndPref(@{$me});	ICEnd($me->[0]);		$key;}package Mac::InternetConfig::_Cooked;use Mac::Types;@ISA = qw(Tie::Hash);import Mac::InternetConfig;%ictypes = (	kICRealName() 				=> 'STR ',	kICEmail() 					=> 'STR ',	kICMailAccount() 			=> 'STR ',	kICMailPassword() 		=> 'STR ',	kICNewsAuthUsername() 	=> 'STR ',	kICNewsAuthPassword() 	=> 'STR ',	kICArchiePreferred() 	=> 'STR ',	kICArchieAll() 			=> 'STR#',	kICUMichPreferred() 		=> 'STR ',	kICUMichAll() 				=> 'STR#',	kICInfoMacPreferred() 	=> 'STR ',	kICInfoMacAll() 			=> 'STR#',	kICPhHost() 				=> 'STR ',	kICWhoisHost() 			=> 'STR ',	kICFingerHost() 			=> 'STR ',	kICFTPHost() 				=> 'STR ',	kICTelnetHost() 			=> 'STR ',	kICSMTPHost() 				=> 'STR ',	kICNNTPHost() 				=> 'STR ',	kICGopherHost() 			=> 'STR ',	kICLDAPServer() 			=> 'STR ',	kICLDAPSearchbase() 		=> 'STR ',	kICWWWHomePage() 			=> 'STR ',	kICWAISGateway() 			=> 'STR ',	kICListFont() 				=> 'ICFontRecord',	kICScreenFont() 			=> 'ICFontRecord',	kICPrinterFont() 			=> 'ICFontRecord',	kICTextCreator() 			=> 'ICAppSpec',	kICBinaryTypeCreator() 	=> 'ICFileInfo',	kICDownloadFolder() 		=> 'ICFileSpec',	kICSignature() 			=> 'TEXT',	kICOrganization() 		=> 'STR ',	kICPlan() 					=> 'TEXT',	kICQuotingString() 		=> 'STR ',	kICMailHeaders() 			=> 'TEXT',	kICNewsHeaders() 			=> 'TEXT',	kICMapping() 				=> 'ICMapEntries',	kICCharacterSet() 		=> 'ICCharTable',	kICHelper() 				=> 'ICAppSpec',	kICServices() 				=> 'ICServices',	kICNewMailFlashIcon() 	=> 'bool',	kICNewMailDialog() 		=> 'bool',	kICNewMailPlaySound() 	=> 'bool',	kICNewMailSoundName() 	=> 'STR ',	kICWebBackgroundColour()=> 'RGBColor',	kICNoProxyDomains() 		=> 'STR#',	kICUseSocks() 				=> 'bool',	kICSocksHost() 			=> 'STR ',	kICUseHTTPProxy() 		=> 'bool',	kICHTTPProxyHost() 		=> 'STR ',	kICUseFTPProxy() 			=> 'bool',	kICFTPProxyHost() 		=> 'STR ',	kICFTPProxyUser() 		=> 'STR ',	kICFTPProxyPassword() 	=> 'STR ',	kICFTPProxyAccount() 	=> 'STR ',);sub _PackICFontRecord {	my($size,$face,$font) = @_;	return pack("sCx", $size, $face) . MacPack('STR ', $font);}sub _UnpackICFontRecord {	my($blob) = @_;	return (unpack("sC", $blob), MacUnpack('STR ', substr($blob, 4)));}sub _PackICAppSpec {	my($type,$name) = @_;	return MacPack('type', $type) . MacPack('STR ', $name);}sub _UnpackICAppSpec {	my($blob) = @_;	return (MacUnpack('type', $blob), MacUnpack('STR ', substr($blob, 4)));}sub _PackICFileInfo {	my($type,$creator,$name) = @_;	return MacPack('type', $type) . MacPack('type', $creator) . MacPack('STR ', $name);}sub _UnpackICFileInfo {	my($blob) = @_;	return (MacUnpack('type', $blob), MacUnpack('type', substr($blob, 4, 4)), MacUnpack('STR ', substr($blob, 8)));}%ICPack = (	ICFileInfo		=> \&_PackICFileInfo,	ICFontRecord	=> \&_PackICFontRecord,	ICAppSpec		=> \&_PackICAppSpec,);%ICUnpack = (	ICFileInfo		=> \&_UnpackICFileInfo,	ICFontRecord	=> \&_UnpackICFontRecord,	ICAppSpec		=> \&_UnpackICAppSpec,);sub TIEHASH {	my($package) = @_;		bless {}, $package;}sub DESTROY {	# Do *not* inherit _Raw::DESTROY}sub FETCH {	my($me, $key) = @_;		my($data) = $RawInternetConfig{$key};	if ($ictypes{$key}) {		return MacUnpack(\%ICUnpack, $ictypes{$key}, $data);	} else {		return $data;	}}sub STORE {	my($me, $key, @value) = @_;		if ($ictypes{$key}) {		$RawInternetConfig{$key} = MacPack(\%ICPack, $ictypes{$key}, @value);	} else {		$RawInternetConfig{$key} = $value[0];	}}sub FIRSTKEY {	 Mac::InternetConfig::_Raw::FIRSTKEY(tied(%RawInternetConfig));}sub NEXTKEY {	Mac::InternetConfig::_Raw::NEXTKEY(tied(%RawInternetConfig));}package Mac::InternetConfig;tie %RawInternetConfig, Mac::InternetConfig::_Raw;tie %InternetConfig, Mac::InternetConfig::_Cooked;1;__END__