int parseinput(int argc, char *argv[]) { int num_params = 0; if (p == CV) { t1 = atof(argv[T1]); num_params++; if (argc >= 5) { t2 = parsedouble(argv[T2]); num_params++; } if (argc == 6) { npoints = parsepoints(argv[T_NPOINTS]); } bool any_below_zero_K = t1 < 0 || (argc >= 5 && t2 < 0); bool decreasing_temp = argc >= 5 && t1 > t2; if (any_below_zero_K || decreasing_temp) { if (any_below_zero_K) fprintf(stderr, "Temperature must be greater or equal than 0 K\n"); if (decreasing_temp) fprintf(stderr, "T1 must be less than T2\n"); fprintf(stderr, "\n"); return 0; } } else if (p == GAMMA || p == OMEGA) { q1[X] = parsedouble(argv[QX1]); q1[Y] = parsedouble(argv[QY1]); q1[Z] = parsedouble(argv[QZ1]); num_params++; if (argc >= 9) { q2[X] = parsedouble(argv[QX2]); q2[Y] = parsedouble(argv[QY2]); q2[Z] = parsedouble(argv[QZ2]); num_params++; } bool any_zero_vec = is_zero_vec(q1) || (argc >= 9 && is_zero_vec(q2)); if (p == GAMMA && any_zero_vec) { fprintf(stderr, "Can't evaluate gamma for q = (0,0,0)\n\n"); return 0; } if (argc == 10) { npoints = parsepoints(argv[Q_NPOINTS]); } } return num_params; }
int scriptfile_getdouble(scriptfile *sf, double *num) { skipoverws(sf); if (sf->textptr >= sf->eof) { initprintf("Error on line %s:%d: unexpected eof\n",sf->filename,scriptfile_getlinum(sf,sf->textptr)); return -1; } sf->ltextptr = sf->textptr; // On Linux, locale settings interfere with interpreting x.y format numbers //(*num) = strtod((const char *)sf->textptr,&sf->textptr); (*num) = parsedouble(sf->textptr, &sf->textptr); if (!ISWS(*sf->textptr) && *sf->textptr) { char *p = sf->textptr; skipovertoken(sf); initprintf("Error on line %s:%d: expecting float, got \"%s\"\n",sf->filename,scriptfile_getlinum(sf,sf->ltextptr),p); return -2; } return 0; }