static long get_integer(char **ptr, long min, long max) { long val = min; char *p = *ptr, *s; if (volume_percent >= 0) { val = (int)(max * volume_percent / 100); val = check_range(val, min, max); return val; } if (*p == ':') p++; if (*p == '\0' || (!isdigit(*p) && *p != '-')) goto out; s = p; val = strtol(s, &p, 10); if (*p == '.') { p++; strtol(p, &p, 10); } if (*p == '%') { val = (long)convert_prange1(strtod(s, NULL), min, max); p++; } val = check_range(val, min, max); if (*p == ',') p++; out: *ptr = p; return val; }
static long long get_integer64(const char **ptr, long long min, long long max) { long long val = min; char *p = (char *)*ptr, *s; if (*p == ':') p++; if (*p == '\0' || (!isdigit(*p) && *p != '-')) goto out; s = p; val = strtol(s, &p, 0); if (*p == '.') { p++; (void)strtol(p, &p, 10); } if (*p == '%') { val = (long long)convert_prange1(strtod(s, NULL), min, max); p++; } val = check_range(val, min, max); if (*p == ',') p++; out: *ptr = p; return val; }
static int get_volume_simple(char **ptr, int min, int max, int orig) { int tmp, tmp1, tmp2; if (**ptr == ':') (*ptr)++; if (**ptr == '\0' || (!isdigit(**ptr) && **ptr != '-')) return min; tmp = atoi(*ptr); if (**ptr == '-') (*ptr)++; while (isdigit(**ptr)) (*ptr)++; tmp1 = tmp; tmp2 = 0; if (**ptr == '.') { (*ptr)++; tmp2 = atoi(*ptr); while (isdigit(**ptr)) (*ptr)++; } if (**ptr == '%') { tmp1 = convert_prange1(tmp, min, max); (*ptr)++; } if (**ptr == '+') { tmp1 = orig + tmp1; (*ptr)++; } else if (**ptr == '-') { tmp1 = orig - tmp1; (*ptr)++; } tmp1 = check_range(tmp1, min, max); if (**ptr == ',') (*ptr)++; return tmp1; }
static long get_integer64(char **ptr, long long min, long long max) { long long tmp, tmp1, tmp2; if (**ptr == ':') (*ptr)++; if (**ptr == '\0' || (!isdigit(**ptr) && **ptr != '-')) return min; tmp = strtol(*ptr, ptr, 10); tmp1 = tmp; tmp2 = 0; if (**ptr == '.') { (*ptr)++; tmp2 = strtol(*ptr, ptr, 10); } if (**ptr == '%') { tmp1 = convert_prange1(tmp, min, max); (*ptr)++; } tmp1 = check_range(tmp1, min, max); if (**ptr == ',') (*ptr)++; return tmp1; }