setaliasent, endaliasent, getaliasent, getaliasent_r, getaliasbyname, getaliasbyname_r — read an alias entry
#include <aliases.h>
void
setaliasent( |
void) ; |
void
endaliasent( |
void) ; |
struct aliasent *getaliasent( |
void) ; |
int
getaliasent_r( |
struct aliasent * | result, |
char * | buffer, | |
size_t | buflen, | |
struct aliasent ** | res) ; |
struct aliasent *getaliasbyname( |
const char * | name) ; |
int
getaliasbyname_r( |
const char * | name, |
struct aliasent * | result, | |
char * | buffer, | |
size_t | buflen, | |
struct aliasent ** | res) ; |
One of the databases available with the Name Service Switch (NSS) is the aliases database, that contains mail aliases. (To find out which databases are supported, try getent −−help.) Six functions are provided to access the aliases database.
The getaliasent
() function
returns a pointer to a structure containing the group
information from the aliases database. The first time it is
called it returns the first entry; thereafter, it returns
successive entries.
The setaliasent
() function
rewinds the file pointer to the beginning of the aliases
database.
The endaliasent
() function
closes the aliases database.
getaliasent_r
() is the
reentrant version of the previous function. The requested
structure is stored via the first argument but the programmer
needs to fill the other arguments also. Not providing enough
space causes the function to fail.
The function getaliasbyname
() takes the name argument
and searches the aliases database. The entry is returned as a
pointer to a struct
aliasent.
getaliasbyname_r
() is the
reentrant version of the previous function. The requested
structure is stored via the second argument but the
programmer needs to fill the other arguments also. Not
providing enough space causes the function to fail.
The struct aliasent
is defined in <
aliases.h
>
struct aliasent { char * alias_name
; /* alias name */size_t alias_members_len
;char ** alias_members
; /* alias name list */int alias_local
;};
The default alias database is the file /etc/aliases
. This can be changed in the
/etc/nsswitch.conf
file.
These routines are glibc-specific. The NeXT has similar routines:
#include <aliasdb.h> void alias_setent(void); void alias_endent(void); alias_ent *alias_getent(void); alias_ent *alias_getbyname(char *name);
The following example compiles with gcc example.c −o example. It will dump all names in the alias database.
#include <aliases.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> int main(void) { struct aliasent *al; setaliasent(); for (;;) { al = getaliasent(); if (al == NULL) break; printf("Name: %s\n", al−>alias_name); } if (errno) { perror("reading alias"); exit(EXIT_FAILURE); } endaliasent(); exit(EXIT_SUCCESS); }
This page is part of release 2.79 of the Linux man-pages
project. A
description of the project, and information about reporting
bugs, can be found at
http://www.kernel.org/doc/man-pages/.
Copyright 2003 Walter Harms (walter.harmsinformatik.uni-oldenburg.de) Distributed under GPL Polished a bit, added a little, aeb |