#include <stdio.h>
#include <stdlib.h>
#include <search.h>
static char *data[] = { "alpha", "bravo", "charlie", "delta",
"echo", "foxtrot", "golf", "hotel", "india", "juliet",
"kilo", "lima", "mike", "november", "oscar", "papa",
"quebec", "romeo", "sierra", "tango", "uniform",
"victor", "whisky", "x-ray", "yankee", "zulu"
};
int
main(void)
{
ENTRY e, *ep;
int i;
hcreate(30);
for (i = 0; i < 24; i++) {
e.key = data[i];
/* data is just an integer, instead of a
pointer to something */
e.data = (void *) i;
ep = hsearch(e, ENTER);
/* there should be no failures */
if (ep == NULL) {
}
}
for (i = 22; i < 26; i++) {
/* print two entries from the table, and
show that two are not in the table */
e.key = data[i];
ep = hsearch(e, FIND);
printf("%9.9s -> %9.9s:%d\n", e.
key, ep ? ep->key : "NULL", ep ? (int)(ep->data) : 0);
}
hdestroy();
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHNlYXJjaC5oPgoKICAgICAgIHN0YXRpYyBjaGFyICpkYXRhW10gPSB7ICJhbHBoYSIsICJicmF2byIsICJjaGFybGllIiwgImRlbHRhIiwKICAgICAgICAgICAgImVjaG8iLCAiZm94dHJvdCIsICJnb2xmIiwgImhvdGVsIiwgImluZGlhIiwgImp1bGlldCIsCiAgICAgICAgICAgICJraWxvIiwgImxpbWEiLCAibWlrZSIsICJub3ZlbWJlciIsICJvc2NhciIsICJwYXBhIiwKICAgICAgICAgICAgInF1ZWJlYyIsICJyb21lbyIsICJzaWVycmEiLCAidGFuZ28iLCAidW5pZm9ybSIsCiAgICAgICAgICAgICJ2aWN0b3IiLCAid2hpc2t5IiwgIngtcmF5IiwgInlhbmtlZSIsICJ6dWx1IgogICAgICAgfTsKCiAgICAgICBpbnQKICAgICAgIG1haW4odm9pZCkKICAgICAgIHsKICAgICAgICAgICBFTlRSWSBlLCAqZXA7CiAgICAgICAgICAgaW50IGk7CgogICAgICAgICAgIGhjcmVhdGUoMzApOwoKICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjQ7IGkrKykgewogICAgICAgICAgICAgICBlLmtleSA9IGRhdGFbaV07CiAgICAgICAgICAgICAgIC8qIGRhdGEgaXMganVzdCBhbiBpbnRlZ2VyLCBpbnN0ZWFkIG9mIGEKICAgICAgICAgICAgICAgICAgcG9pbnRlciB0byBzb21ldGhpbmcgKi8KICAgICAgICAgICAgICAgZS5kYXRhID0gKHZvaWQgKikgaTsKICAgICAgICAgICAgICAgZXAgPSBoc2VhcmNoKGUsIEVOVEVSKTsKICAgICAgICAgICAgICAgLyogdGhlcmUgc2hvdWxkIGJlIG5vIGZhaWx1cmVzICovCiAgICAgICAgICAgICAgIGlmIChlcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVudHJ5IGZhaWxlZFxuIik7CiAgICAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICB9CgogICAgICAgICAgIGZvciAoaSA9IDIyOyBpIDwgMjY7IGkrKykgewogICAgICAgICAgICAgICAvKiBwcmludCB0d28gZW50cmllcyBmcm9tIHRoZSB0YWJsZSwgYW5kCiAgICAgICAgICAgICAgICAgIHNob3cgdGhhdCB0d28gYXJlIG5vdCBpbiB0aGUgdGFibGUgKi8KICAgICAgICAgICAgICAgZS5rZXkgPSBkYXRhW2ldOwogICAgICAgICAgICAgICBlcCA9IGhzZWFyY2goZSwgRklORCk7CiAgICAgICAgICAgICAgIHByaW50ZigiJTkuOXMgLT4gJTkuOXM6JWRcbiIsIGUua2V5LAogICAgICAgICAgICAgICAgICAgICAgZXAgPyBlcC0+a2V5IDogIk5VTEwiLCBlcCA/IChpbnQpKGVwLT5kYXRhKSA6IDApOwogICAgICAgICAgIH0KICAgICAgICAgICBoZGVzdHJveSgpOwogICAgICAgICAgIGV4aXQoRVhJVF9TVUNDRVNTKTsKICAgICAgIH0=