if (nextp != rootp)  maybe_split_for_insert (nextp, rootp, parentp, r, p_r, 1);
__tsearch (key, vrootp, compar)     const void *key;     void **vrootp;     __compar_fn_t compar;{  node *q;  node **rootp = (node **) vrootp;  if (rootp == NULL)    return NULL;  while (*rootp != NULL)		/* Knuth's T1: */    {      int r;      r = (*compar) (key, (*rootp)->key);      if (r == 0)			/* T2: */	return *rootp;			/* we found it! */      rootp = (r < 0)	      ? &(*rootp)->left		/* T3: follow left branch */	      : &(*rootp)->right;	/* T4: follow right branch */    }  q = (node *) malloc (sizeof (node));	/* T5: key not found */  if (q != NULL)			/* make new node */    {      *rootp = q;			/* link new node to old */      q->key = key;			/* initialize new node */      q->left = q->right = NULL;    }  return q;}