int main(int argc, char *argv[]) { ARRAY_TYPE(const_string) aenvs; const char *binary; const char *const *envs; int c, i; master_service = master_service_init("script", 0, &argc, &argv, "+e:"); t_array_init(&aenvs, 16); while ((c = master_getopt(master_service)) > 0) { switch (c) { case 'e': envs = t_strsplit_spaces(optarg,", \t"); while (*envs != NULL) { array_append(&aenvs, envs, 1); envs++; } break; default: return FATAL_DEFAULT; } } argc -= optind; argv += optind; array_append_zero(&aenvs); accepted_envs = p_strarray_dup(default_pool, array_idx(&aenvs, 0)); master_service_init_log(master_service, "script: "); if (argv[0] == NULL) i_fatal("Missing script path"); restrict_access_by_env(RESTRICT_ACCESS_FLAG_ALLOW_ROOT, NULL); restrict_access_allow_coredumps(TRUE); master_service_init_finish(master_service); master_service_set_service_count(master_service, 1); if (argv[0][0] == '/') binary = argv[0]; else binary = t_strconcat(PKG_LIBEXECDIR"/", argv[0], NULL); i_array_init(&exec_args, argc + 16); array_append(&exec_args, &binary, 1); for (i = 1; i < argc; i++) { const char *arg = argv[i]; array_append(&exec_args, &arg, 1); } master_service_run(master_service, client_connected); array_free(&exec_args); i_free(accepted_envs); master_service_deinit(&master_service); return 0; }
int main(int argc, char *argv[]) { enum master_service_flags flags = 0; int i, c; if (getenv(MASTER_IS_PARENT_ENV) == NULL) flags |= MASTER_SERVICE_FLAG_STANDALONE; master_service = master_service_init("script-login", flags, &argc, &argv, "+d"); while ((c = master_getopt(master_service)) > 0) { switch (c) { case 'd': drop_to_userdb_privileges = TRUE; break; default: return FATAL_DEFAULT; } } argc -= optind; argv += optind; master_service_init_log(master_service, "script-login: "******"Missing script path"); exec_args = i_new(const char *, argc + 2); for (i = 0; i < argc; i++) exec_args[i] = argv[i]; exec_args[i] = PKG_LIBEXECDIR"/script-login"; exec_args[i+1] = NULL; if (exec_args[0][0] != '/') { exec_args[0] = t_strconcat(PKG_LIBEXECDIR"/", exec_args[0], NULL); } master_service_run(master_service, client_connected); } master_service_deinit(&master_service); return 0; }
int main(int argc, char *argv[]) { const char *binary; int i; master_service = master_service_init("script", 0, &argc, &argv, "+"); if (master_getopt(master_service) > 0) return FATAL_DEFAULT; argc -= optind; argv += optind; master_service_init_log(master_service, "script: "); if (argv[0] == NULL) i_fatal("Missing script path"); restrict_access_by_env(NULL, FALSE); restrict_access_allow_coredumps(TRUE); master_service_init_finish(master_service); master_service_set_service_count(master_service, 1); if (argv[0][0] == '/') binary = argv[0]; else binary = t_strconcat(PKG_LIBEXECDIR"/", argv[0], NULL); i_array_init(&exec_args, argc + 16); array_append(&exec_args, &binary, 1); for (i = 1; i < argc; i++) { const char *arg = argv[i]; array_append(&exec_args, &arg, 1); } master_service_run(master_service, client_connected); master_service_deinit(&master_service); return 0; }