Example #1
0
int insert_part(Parts db, Part p)
{
  /* invalid record? */
  if (!p)
    return -3;

  Node *cur, *prev;
  for (cur = db->head, prev = NULL;
       cur != NULL && get_part_number(p) > get_part_number(cur->part);
       prev = cur, cur = cur->next)
    ;
  /* duplicate part number? */
  if (cur != NULL && get_part_number(p) == get_part_number(cur->part))
    return -2;

  Node *n = create_node(p);
  n->next = cur;
  if (prev == NULL)
    db->head = n;
  else
    prev->next = n;

  db->count++;
  return 0;

}
Example #2
0
int print_cpuinfo(void)
{
	u16 cpu = get_part_number();
	u8 rev = cpu_revision();

	puts("CPU: ");
	switch (cpu) {
	case CPU_66AK2Hx:
		puts("66AK2Hx SR");
		break;
	case CPU_66AK2Lx:
		puts("66AK2Lx SR");
		break;
	case CPU_66AK2Ex:
		puts("66AK2Ex SR");
		break;
	case CPU_66AK2Gx:
		puts("66AK2Gx SR");
		break;
	default:
		puts("Unknown\n");
	}

	if (rev == 2)
		puts("2.0\n");
	else if (rev == 1)
		puts("1.1\n");
	else if (rev == 0)
		puts("1.0\n");

	return 0;
}
Example #3
0
Part find_part(Parts db, PartNumber part_number)
{
  for (Node *n = db->head; n != NULL; n = n->next)
    if (get_part_number(n->part) == part_number)
      return n->part;

  return NULL;
}
Example #4
0
static Node *approximate_node(Parts db, PartNumber part_number)
{
  PartNumber pn;
  Node *previous, *current;

  if (db->count == 0)
    return NULL;

  /* return first if the target is smaller than all */
  if (get_part_number(db->head->part) > part_number)
    return db->head;

  /* find whichever the exact part or the next greatest */
  current = db->head;
  while ( current && (pn = get_part_number(current->part)) < part_number) {
    previous = current;
    current  = current->next;
  }
  /* return the exact part or the next smallest */
  if (pn == part_number)
    return current;
  else
    return previous;
}
Example #5
0
int delete_part(Parts db, PartNumber number)
{
  Node *cur, *prev;

  for (cur = db->head, prev = NULL;
       cur != NULL && number != get_part_number(cur->part);
       prev = cur, cur = cur->next)
    ;
  if (cur == NULL) /* not found */
    return -1;
  if (prev == NULL)  /* first */
    db->head = db->head->next;
  else
    prev->next = cur->next;

  destroy_node(cur);
  db->count--;
  return 0;
}