#ifndef _ALIASES_H
#include <inet/aliases.h>

extern int __getaliasent_r (struct aliasent *__restrict __result_buf,
			    char *__restrict __buffer, size_t __buflen,
			    struct aliasent **__restrict __result)
     attribute_hidden;
extern int __old_getaliasent_r (struct aliasent *__restrict __result_buf,
				char *__restrict __buffer, size_t __buflen,
				struct aliasent **__restrict __result);

extern int __getaliasbyname_r (const char *__restrict __name,
			       struct aliasent *__restrict __result_buf,
			       char *__restrict __buffer, size_t __buflen,
			       struct aliasent **__restrict __result);
extern int __old_getaliasbyname_r (const char *__restrict __name,
				   struct aliasent *__restrict __result_buf,
				   char *__restrict __buffer, size_t __buflen,
				   struct aliasent **__restrict __result);

#define DECLARE_NSS_PROTOTYPES(service)					     \
extern enum nss_status _nss_ ## service ## _setaliasent (void);		     \
extern enum nss_status _nss_ ## service ## _endaliasent (void);		     \
extern enum nss_status _nss_ ## service ## _getaliasent_r		     \
		       (struct aliasent *alias, char *buffer, size_t buflen, \
			int *errnop);					     \
extern enum nss_status _nss_ ## service ## _getaliasbyname_r		     \
		       (const char *name, struct aliasent *alias,	     \
			char *buffer, size_t buflen, int *errnop);


DECLARE_NSS_PROTOTYPES (files)
DECLARE_NSS_PROTOTYPES (nis)
DECLARE_NSS_PROTOTYPES (nisplus)
#undef DECLARE_NSS_PROTOTYPES

#endif
