gmx_large_int_t get_egmx_large_int(int *ninp, t_inpfile **inp, const char *name, gmx_large_int_t def, warninp_t wi) { char buf[32], *ptr, warn_buf[STRLEN]; int ii; gmx_large_int_t ret; ii = get_einp(ninp, inp, name); if (ii == -1) { sprintf(buf, gmx_large_int_pfmt, def); (*inp)[(*ninp)-1].value = strdup(buf); return def; } else { ret = str_to_large_int_t((*inp)[ii].value, &ptr); if (ptr == (*inp)[ii].value) { sprintf(warn_buf, "Right hand side '%s' for parameter '%s' in parameter file is not an integer value\n", (*inp)[ii].value, (*inp)[ii].name); warning_error(wi, warn_buf); } return ret; } }
gmx_large_int_t istepscan(int argc,char *argv[],int *i) { const char *const arg = argv[*i]; if (argc <= (*i)+1) { usage("an integer", arg); } const char *const value = argv[++(*i)]; char *endptr; gmx_large_int_t var = str_to_large_int_t(value, &endptr); if (*value == '\0' || *endptr != '\0') { usage("an integer", arg); } return var; }