gitignore: ignore toplevel GNU Global tag files
Fix opts struct so config-file takes an argument

Signed-off-by: William Douglas <william.douglas@intel.com>
Introduce BuxtonList

BuxtonList is a simple singly-linked list structure. It works in much
the same way as other implementations, supporting remove, append and
prepend operations.

It should be noted that the fastest way to use the list is via the
buxton_list_prepend function, which doesn't need to determine the
end of the current list as buxton_list_append does.

The code is kept simple with a clean API to support retasking.
BuxtonList will be used for the basis of a new Hashmap, ensuring that
all elements of the implementation are safe, clean, and efficient.

A BuxtonList is created by using a NULL BuxtonList pointer. If you
prepend or append to a NULL list, a new list head is then created.
The modification functions take a double pointer as they may modify
the original list head to point somewhere else when re-ordering.

It is recommended to use an individual list instance for allocated
data or stack data exclusively. By exlusively using one or the other,
you can benefit from being able to automatically free the entire list
and all of its data pointers. It is recommended to use the GCC attribute
macros provided, _cleanup_list, or _cleanup_list_all_ for lists
containing allocated data.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
test: Add BuxtonList test case

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
Add BuxtonHashmap

BuxtonHashmap is a simple key-based hashmap with a focus on speed
and performance. It uses BuxtonList to back the bucket store,
using prepend operations to maintain the buckets.

This implementation uses a trivial hash and compare functions,
and may be expanded in the future. The main focus now is to
enable the replacement of the client list item list, by using
FD based lookups of clients, introducing performance gains.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
test: Add BuxtonHashmap test case

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
Remove iniparser from Buxton

We no longer need to ship an internal copy of iniparser as it
is available in the software repositories of several distributions
already.

Sometimes iniparser is shipped without a .pc file, meaning we
need to manually check for the existence of the headers and
library, ensuring they'll work for Buxton.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
Fix cross-linking issues

When using AC_CHECK_LIB, the LIBS variable is expanded to include
the libraries, and consequently all built targets are linked against
these libraries.

This commit fixes the cross linking by ensuring each part of the
library and binaries are only linked to exactly what they need,
i.e. no gdbm linking on bt-daemon and buxtonctl.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>