require 'Foundation.pm';
$configFilePath = "/System/Library/LaunchDaemons/org.postfix.master.plist";
$configFilePathNS = NSString->stringWithCString_($configFilePath);
if (! -e "$configFilePath") {
log_message("Error: Config file: '$configFilePath' does not exist");
exit;
}
$configDictNS = NSMutableDictionary->dictionaryWithContentsOfFile_($configFilePathNS);
if (!$configDictNS or !$$configDictNS) {
log_message("Error: Can't get NSDictionary for '$configFilePath'");
exit;
}
system( "/bin/launchctl unload -w /System/Library/LaunchDaemons/org.postfix.master.plist");
$OnDemandKey = "OnDemand";
$OnDemandKeyNS = NSString->stringWithCString_($OnDemandKey);
$DisabledKey = "Disabled";
$DisabledKeyNS = NSString->stringWithCString_($DisabledKey);
$ProgramArgumentsKey = "ProgramArguments";
$ProgramArgumentsKeyNS = NSString->stringWithCString_($ProgramArgumentsKey);
$MasterValue = "master";
$MasterValueNS = NSString->stringWithCString_($MasterValue);
$ProgramArgumentsValue = NSArray->arrayWithObjects_( $MasterValueNS );
$configDictNS->setObject_forKey_( NSNumber->numberWithBool_(0), $OnDemandKeyNS );
$configDictNS->setObject_forKey_( NSNumber->numberWithBool_(0), $DisabledKeyNS );
$configDictNS->setObject_forKey_( $ProgramArgumentsValue, $ProgramArgumentsKeyNS );
$configDictNS->writeToFile_atomically_( $configFilePathNS, 0 );
system( "/bin/launchctl load -w /System/Library/LaunchDaemons/org.postfix.master.plist");
sub log_message
{
`logger -t toggle_on_demand -p "mail.notice" "@_".`;
}