Beispiel #1
0
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;
}
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}
Beispiel #4
0
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;
}