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;size_t alias_members_len;char ** alias_members;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 |