Provided by: libtar-dev_1.2.20-7_amd64

**NAME**

libtar_hash_new, libtar_hash_free, libtar_hash_next, libtar_hash_prev, libtar_hash_getkey, libtar_hash_search, libtar_hash_add, libtar_hash_del - hash table routines

**SYNOPSIS**

#include<libtar.h>libtar_hash_t*libtar_hash_new(intnum,int(*hashfunc)());voidlibtar_hash_free(libtar_hash_t*h,void(*freefunc)());intlibtar_hash_next(libtar_hash_t*h,libtar_hashptr_t*hp);intlibtar_hash_prev(libtar_hash_t*h,libtar_hashptr_t*hp);intlibtar_hash_search(libtar_hash_t*h,libtar_hashptr_t*hp,void*data,int(*matchfunc)());intlibtar_hash_getkey(libtar_hash_t*h,libtar_hashptr_t*hp,void*data,int(*matchfunc)());intlibtar_hash_add(libtar_hash_t*h,void*data);intlibtar_hash_del(libtar_hash_t*h,libtar_hashptr_t*hp);

**DESCRIPTION**

Thelibtar_hash_new() function creates a new hash withnumbuckets and using hash function pointed to byhashfunc. IfhashfuncisNULL, a default hash function designed for 7-bit ASCII strings is used. Thelibtar_hash_free() function deallocates all memory associated with the hash structureh. Iffreefuncis notNULL, it is called to free memory associated with each node in the hash. Thelibtar_hash_next() andlibtar_hash_prev() functions are used to iterate through the hash. Thelibtar_hashptr_tstructure has two fields:bucket, which indicates the current bucket in the hash, andnode, which is a pointer to the current node in the current bucket. To start at the beginning or end of the hash, the caller should initializehp.bucketto -1 andhp.nodetoNULL. Thelibtar_hash_search() function searches iteratively through the hashhuntil it finds a node whose contents matchdatausing the matching functionmatchfunc. Searching begins at the location pointed to byhp. Thelibtar_hash_getkey() function uses the hash function associated withhto determine which bucketdatashould be in, and searches only that bucket for a matching node usingmatchfunc. Searching begins at the location pointed to byhp. Thelibtar_hash_add() function addsdatainto hashh. Thelibtar_hash_del() function removes the node referenced byhp.

**RETURN** **VALUE**

Thelibtar_hash_new() function returns a pointer to the new hash structure, orNULLon error. Thelibtar_hash_next() andlibtar_hash_prev() functions return 1 when valid data is returned, and 0 at the end of the hash. Thelibtar_hash_getkey() andlibtar_hash_search() functions return 1 when a match is found, or 0 otherwise. Thelibtar_hash_add() function returns 0 on success, or -1 on error (and setserrno). Thelibtar_hash_del() function returns 0 on success, or -1 on error (and setserrno).

**SEE** **ALSO**

libtar_list_new(3)