void LaunchDaemon::_AddRunTargets(BMessage& message) { BMessage runMessage; for (int32 index = 0; message.FindMessage("run", index, &runMessage) == B_OK; index++) { BMessage conditions; bool pass = true; if (runMessage.FindMessage("if", &conditions) == B_OK) { Condition* condition = Conditions::FromMessage(conditions); if (condition != NULL) { pass = condition->Test(*this); debug_printf("Test: %s -> %d\n", condition->ToString().String(), pass); delete condition; } else debug_printf("Could not parse condition!\n"); } if (pass) { _AddRunTargets(runMessage, NULL); _AddRunTargets(runMessage, "then"); } else { _AddRunTargets(runMessage, "else"); } } }