int parse_script(ffscript **script) { if(!getname("Import Script (.txt)","txt",NULL,datapath,false)) return D_CLOSE; return parse_script_file(script,temppath, true); }
int main(int argc, char **argv) { lList *pcmdline = NULL; lList *alp = NULL; sge_gdi_ctx_class_t *ctx = NULL; lList *ar_lp = NULL; lListElem *ar = NULL; DENTER_MAIN(TOP_LAYER, "qrsub"); /* Set up the program information name */ sge_setup_sig_handlers(QRSUB); log_state_set_log_gui(1); if (sge_gdi2_setup(&ctx, QRSUB, MAIN_THREAD, &alp) != AE_OK) { answer_list_output(&alp); goto error_exit; } /* ** stage 1 of commandline parsing */ { dstring file = DSTRING_INIT; const char *user = ctx->get_username(ctx); const char *cell_root = ctx->get_cell_root(ctx); /* arguments from SGE_ROOT/common/sge_ar_request file */ get_root_file_path(&file, cell_root, SGE_COMMON_DEF_AR_REQ_FILE); if ((alp = parse_script_file(QRSUB, sge_dstring_get_string(&file), "", &pcmdline, environ, FLG_HIGHER_PRIOR | FLG_IGN_NO_FILE)) == NULL) { /* arguments from $HOME/.sge_ar_request file */ if (get_user_home_file_path(&file, SGE_HOME_DEF_AR_REQ_FILE, user, &alp)) { lFreeList(&alp); alp = parse_script_file(QRSUB, sge_dstring_get_string(&file), "", &pcmdline, environ, FLG_HIGHER_PRIOR | FLG_IGN_NO_FILE); } } sge_dstring_free(&file); if (alp) { answer_list_output(&alp); lFreeList(&pcmdline); goto error_exit; } } alp = cull_parse_cmdline(QRSUB, argv+1, environ, &pcmdline, FLG_USE_PSEUDOS); if (answer_list_print_err_warn(&alp, NULL, "qrsub: ", MSG_WARNING) > 0) { lFreeList(&pcmdline); goto error_exit; } if (!pcmdline) { /* no command line option is present: print help to stderr */ sge_usage(QRSUB, stderr); fprintf(stderr, "%s\n", MSG_PARSE_NOOPTIONARGUMENT); goto error_exit; } /* ** stage 2 of command line parsing */ ar = lCreateElem(AR_Type); if (!sge_parse_qrsub(ctx, pcmdline, &alp, &ar)) { answer_list_output(&alp); lFreeList(&pcmdline); goto error_exit; } ar_lp = lCreateList(NULL, AR_Type); lAppendElem(ar_lp, ar); alp = ctx->gdi(ctx, SGE_AR_LIST, SGE_GDI_ADD | SGE_GDI_RETURN_NEW_VERSION, &ar_lp, NULL, NULL); lFreeList(&ar_lp); answer_list_on_error_print_or_exit(&alp, stdout); if (answer_list_has_error(&alp)) { sge_gdi2_shutdown((void**)&ctx); sge_prof_cleanup(); if (answer_list_has_status(&alp, STATUS_NOTOK_DOAGAIN)) { DRETURN(25); } else { DRETURN(1); } } sge_gdi2_shutdown((void**)&ctx); sge_prof_cleanup(); DRETURN(0); error_exit: sge_gdi2_shutdown((void**)&ctx); sge_prof_cleanup(); SGE_EXIT((void**)&ctx, 1); DRETURN(1); }
/****** sge/opt/append_opts_from_default_files() ******************************* * NAME * append_opts_from_default_files() -- parse default files * * SYNOPSIS * void append_opts_from_default_files(lList **pcmdline, * lList **answer_list * char **envp, * char *def_files) * * FUNCTION * This function reads the defaults files pointed to by def_files[] if they * exist and parses them into an options list. * * INPUTS * lList **pcmdline - pointer to SPA_Type list, if list is NULL, it is * created if the files contain any options * lList* - answer list, AN_Type or NULL if everything ok * possible errors: * STATUS_ENOSUCHUSER - could not retrieve passwd info on me.user_name * STATUS_EDISK - home directory for user is missing or cwd * cannot be read or file could not be opened * (is just a warning) * STATUS_EEXIST - (parse_script_file), (is just a warning) * STATUS_EUNKNOWN - (parse_script_file), error opening or * reading from existing file, (is just a warning) * plus all other error stati returned by * parse_script_file, see there * char **envp - environment pointer * char **def_files - paths to default files * *******************************************************************************/ static void append_opts_from_default_files(u_long32 prog_number, lList **pcmdline, lList **answer_list, char **envp, char **def_files) { lList *alp; lListElem *aep; char **pstr; char **ppstr; SGE_STRUCT_STAT buf; int do_exit = 0; DENTER(TOP_LAYER, "append_opts_from_default_files"); for (pstr = def_files; *pstr; pstr++) { int already_read; if (SGE_STAT(*pstr, &buf)<0) { DPRINTF(("-- defaults file %s does not exist\n", *pstr)); continue; } already_read = 0; for (ppstr = def_files; *ppstr != *pstr; ppstr++) { if (!sge_filecmp(*ppstr, *pstr)) { DPRINTF(("-- skipping %s as defaults file - already read as %s\n", *pstr, *ppstr)); already_read = 1; break; } } if (already_read) { continue; } DPRINTF(("-- defaults file: %s\n", *pstr)); alp = parse_script_file(prog_number, *pstr, "", pcmdline, envp, FLG_HIGHER_PRIOR | FLG_USE_NO_PSEUDOS); for_each(aep, alp) { u_long32 status; answer_quality_t quality; status = lGetUlong(aep, AN_status); quality = (answer_quality_t)lGetUlong(aep, AN_quality); if (quality == ANSWER_QUALITY_ERROR) { DPRINTF(("%s", lGetString(aep, AN_text))); if (status == STATUS_EDISK) { /* ** we turn this error into a warning here */ quality = ANSWER_QUALITY_WARNING; } else { do_exit = 1; } } else { DPRINTF(("Warning: Error: %s\n", lGetString(aep, AN_text))); } answer_list_add(answer_list, lGetString(aep, AN_text), status, quality); } lFreeList(&alp); if (do_exit) { for (pstr = def_files; *pstr; pstr++) { sge_free(pstr); } DRETURN_VOID; } }