-static int InsertInner( variable_t **pp_vars, int i_count, uint32_t i_hash )
-{
- int i_middle;
-
- if( i_hash <= pp_vars[0]->i_hash )
- {
- return 0;
- }
-
- if( i_hash >= pp_vars[i_count - 1]->i_hash )
- {
- return i_count;
- }
-
- i_middle = i_count / 2;
-
- /* We know that 0 < i_middle */
- if( i_hash < pp_vars[i_middle]->i_hash )
- {
- return InsertInner( pp_vars, i_middle, i_hash );
- }
-
- /* We know that i_middle + 1 < i_count */
- if( i_hash > pp_vars[i_middle + 1]->i_hash )
- {
- return i_middle + 1 + InsertInner( pp_vars + i_middle + 1,
- i_count - i_middle - 1,
- i_hash );
- }
-
- return i_middle + 1;
-}
-
-static int u32cmp( const void *key, const void *data )
-{
- const variable_t *const *pp_var = data;
- uint32_t hash = *(const uint32_t *)key ;
-
- if( hash > (*pp_var)->i_hash )
- return 1;
- if( hash < (*pp_var)->i_hash )
- return -1;
- return 0;
-}
-
-/*****************************************************************************
- * Lookup: find an existing variable given its name
- *****************************************************************************
- * We use a recursive inner function indexed on the hash. Care is taken of
- * possible hash collisions.
- *****************************************************************************/
-static int Lookup( variable_t **pp_vars, size_t i_count, const char *psz_name )