NIS+ enumeration of all database entries
Benny Holmgren
bigfoot at astrakan.hgs.se
Mon May 18 13:16:58 GMT 1998
On Mon, 18 May 1998, Luke Kenneth Casson Leighton wrote:
> how, in NIS+, do you enumerate all the entries in a database table?
The nis_list() function does that. It can be used in two ways, either
passing a function pointer to a callback routine which is called for each
entry or without a callback routine which returns all the entries in one
result structure. The first way is better for large tables ofcourse.
I'll attach an example.
The synopsis for the routine is:
#include <rpcsvc/nis.h>
nis_result *nis_list(const nis_name name,
const u_long flags,
int (*callback)(const nis_name table_name,
const nis_object *object, const void *userdata),
const void *userdata)
-------------- next part --------------
/*
* Link with -lnsl
*/
#include <stdio.h>
#include <rpcsvc/nis.h>
int nis_callback(char *table_name, nis_object *object, void *userdata)
{
printf("%s:%s:%s:%s:%s:%s:%s\n",
ENTRY_VAL(object, 0),
ENTRY_VAL(object, 1),
ENTRY_VAL(object, 2),
ENTRY_VAL(object, 3),
ENTRY_VAL(object, 4),
ENTRY_VAL(object, 5),
ENTRY_VAL(object, 6));
return(0); /* Returning 1 stops enumeration. */
}
int main(int argc, char **argv)
{
char *nisname = "passwd.org_dir";
(void)nis_list(nisname, EXPAND_NAME, nis_callback, NULL);
return(0);
}
More information about the samba-technical
mailing list