int main(int argc, char **argv) { krb5_error_code ret; setprogname(argv[0]); ret = krb5_init_context(&kcm_context); if (ret) { errx (1, "krb5_init_context failed: %d", ret); return ret; } kcm_configure(argc, argv); #ifdef HAVE_SIGACTION { struct sigaction sa; sa.sa_flags = 0; sa.sa_handler = sigterm; sigemptyset(&sa.sa_mask); sigaction(SIGINT, &sa, NULL); sigaction(SIGTERM, &sa, NULL); sa.sa_handler = sigusr1; sigaction(SIGUSR1, &sa, NULL); sa.sa_handler = sigusr2; sigaction(SIGUSR2, &sa, NULL); sa.sa_handler = SIG_IGN; sigaction(SIGPIPE, &sa, NULL); } #else signal(SIGINT, sigterm); signal(SIGTERM, sigterm); signal(SIGUSR1, sigusr1); signal(SIGUSR2, sigusr2); signal(SIGPIPE, SIG_IGN); #endif #ifdef SUPPORT_DETACH if (detach_from_console) daemon(0, 0); #endif pidfile(NULL); if (launchd_flag) { heim_sipc mach; heim_sipc_launchd_mach_init(service_name, kcm_service, NULL, &mach); } else { heim_sipc un; heim_sipc_service_unix(service_name, kcm_service, NULL, &un); } heim_ipc_main(); krb5_free_context(kcm_context); return 0; }
int main(int argc, char **argv) { krb5_error_code ret; setprogname(argv[0]); ret = krb5_init_context(&kcm_context); if (ret) { errx (1, "krb5_init_context failed: %d", ret); return ret; } kcm_configure(argc, argv); #ifdef HAVE_SIGACTION { struct sigaction sa; sa.sa_flags = 0; sa.sa_handler = sigusr1; sigemptyset(&sa.sa_mask); sigaction(SIGUSR1, &sa, NULL); sa.sa_handler = sigusr2; sigaction(SIGUSR2, &sa, NULL); sa.sa_handler = SIG_IGN; sigaction(SIGPIPE, &sa, NULL); } #else signal(SIGUSR1, sigusr1); signal(SIGUSR2, sigusr2); signal(SIGPIPE, SIG_IGN); #endif if (detach_from_console && !launchd_flag && daemon_child == -1) roken_detach_prep(argc, argv, "--daemon-child"); rk_pidfile(NULL); if (launchd_flag) { heim_sipc mach; heim_sipc_launchd_mach_init(service_name, kcm_service, NULL, &mach); } else { heim_sipc un; heim_sipc_service_unix(service_name, kcm_service, NULL, &un); } roken_detach_finish(NULL, daemon_child); heim_ipc_main(); krb5_free_context(kcm_context); return 0; }