[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: spice-sdb connection order confusion



> This gets a bit confusing for more than 9 pins: P10 winds up between
> P1 and P2!

My local copy of PCB uses this string comparison function to sort
embedded numbers numerically.  I use this to sort netlists, because of
the same pin numbering bug you mention.

static int
string_cmp (const char *a, const char *b)
{
  while (*a && *b)
    {
      if (isdigit(*a) && isdigit(*b))
      {
	int ia = atoi(a);
	int ib = atoi(b);
	if (ia != ib)
	  return ia - ib;
	while (isdigit(*a))
	  a++;
	while (isdigit(*b))
	  b++;
      }
      else if (tolower(*a) != tolower(*b))
	return tolower(*a) - tolower(*b);
      a++;
      b++;
    }
  if (*a)
    return 1;
  if (*b)
    return -1;
  return 0;
}