FreeBSD Manual Pages
NAMEALLOC(3) MBK UTILITY FUNCTIONS NAMEALLOC(3) NAME namealloc - hash table for strings SYNOPSIS #include "mut.h" char *namealloc(inputname) char *inputname; PARAMETER inputname Pointer to a string of characters DESCRIPTION The namealloc function creates a dictionary of names in mbk. It war- ranties equality on characters string if the pointers to these strings are equal, at strcmp(3) meaning. This means also that there is a single memory address for a given string. The case of the letters do not matter. All names are changed to lower case before being introduced in the symbol table. This is needed be- cause most of the file format do not check case. namealloc is used by all mbk utility function using names, so its use should be needed only when directly filling or modifying the structure, or when having to compare an external string to mbk internal ones. This should speed up string comparisons. One shall never modify the contains of a string pointed to by a result of namealloc, since all the field that points to this name would have there values modified, and that there is no chance that the new hash code will be the same as the old one, so pointer comparison would be meaningless. All string used by namealloc are constants string, and therefore must be left alone. RETURN VALUE namealloc returns a string pointer. If the inputname is already in the hash table, then its internal pointer is returned, else a new entry is created, and then the new pointer returned. EXAMPLE #include "mut.h" #include "mlo.h" lofig_list *find_fig(name) char *name; { lofig_list *p; name = namealloc(name); for (p = HEAD_LOFIG; p; p = p->NEXT) if (p->NAME == name) /* pointer equality */ return p; return NULL; } DIAGNOSTICS namealloc can be used only after a call to mbkenv(3). SEE ALSO mbk(1). ASIM/LIP6 October 1, 1997 NAMEALLOC(3)
NAME | SYNOPSIS | PARAMETER | DESCRIPTION | RETURN VALUE | EXAMPLE | DIAGNOSTICS | SEE ALSO
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=namealloc&sektion=3&manpath=FreeBSD+Ports+15.0>
