#include <X11/Xlib.h>
#if defined(__linux__) || defined(CSRG_BASED) || (defined(sun) && defined(SVR4))
#define CRYPT_ARGS const char *s1, const char *s2
#define GETSPNAM_ARGS const char *name
#define GETPWNAM_ARGS const char *name
#else
#define CRYPT_ARGS
#define GETSPNAM_ARGS
#define GETPWNAM_ARGS
#endif
#if defined(__FreeBSD__) || defined(__bsdi__) || defined(__osf__)
#define SETGRENT_TYPE int
#else
#define SETGRENT_TYPE void
#endif
struct dlfuncs {
int (*_PingServer)(struct display *d, Display *alternateDpy);
void (*_SessionPingFailed)(struct display *d);
void (*_Debug)(char * fmt, ...);
void (*_RegisterCloseOnFork)(int fd);
void (*_SecureDisplay)(struct display *d, Display *dpy);
void (*_UnsecureDisplay)(struct display *d, Display *dpy);
void (*_ClearCloseOnFork)(int fd);
void (*_SetupDisplay)(struct display *d);
void (*_LogError)(char * fmt, ...);
void (*_SessionExit)(struct display *d, int status, int removeAuth);
void (*_DeleteXloginResources)(struct display *d, Display *dpy);
int (*_source)(char **environ, char *file);
char **(*_defaultEnv)(void);
char **(*_setEnv)(char **e, char *name, char *value);
char **(*_putEnv)(const char *string, char **env);
char **(*_parseArgs)(char **argv, char *string);
void (*_printEnv)(char **e);
char **(*_systemEnv)(struct display *d, char *user, char *home);
void (*_LogOutOfMem)(char * fmt, ...);
SETGRENT_TYPE (*_setgrent)(void);
struct group *(*_getgrent)(void);
void (*_endgrent)(void);
#ifdef USESHADOW
struct spwd *(*_getspnam)(GETSPNAM_ARGS);
void (*_endspent)(void);
#endif
struct passwd *(*_getpwnam)(GETPWNAM_ARGS);
#ifdef linux
void (*_endpwent)(void);
#endif
char *(*_crypt)(CRYPT_ARGS);
#ifdef USE_PAM
pam_handle_t **(*_thepamhp)(void);
#endif
};
typedef enum {
Greet_Session_Over = 0,
Greet_Success = 1,
Greet_Failure = -1
} greet_user_rtn;
extern greet_user_rtn GreetUser(struct display *, Display **,
struct verify_info *, struct greet_info *, struct dlfuncs *);
typedef greet_user_rtn (*GreetUserProc)(struct display *, Display **,
struct verify_info *, struct greet_info *, struct dlfuncs *dlfcns);
#ifdef GREET_LIB
extern int (*__xdm_PingServer)(struct display *d, Display *alternateDpy);
extern void (*__xdm_SessionPingFailed)(struct display *d);
extern void (*__xdm_Debug)(char * fmt, ...);
extern void (*__xdm_RegisterCloseOnFork)(int fd);
extern void (*__xdm_SecureDisplay)(struct display *d, Display *dpy);
extern void (*__xdm_UnsecureDisplay)(struct display *d, Display *dpy);
extern void (*__xdm_ClearCloseOnFork)(int fd);
extern void (*__xdm_SetupDisplay)(struct display *d);
extern void (*__xdm_LogError)(char * fmt, ...);
extern void (*__xdm_SessionExit)(struct display *d, int status, int removeAuth);
extern void (*__xdm_DeleteXloginResources)(struct display *d, Display *dpy);
extern int (*__xdm_source)(char **environ, char *file);
extern char **(*__xdm_defaultEnv)(void);
extern char **(*__xdm_setEnv)(char **e, char *name, char *value);
extern char **(*__xdm_putEnv)(const char *string, char **env);
extern char **(*__xdm_parseArgs)(char **argv, char *string);
extern void (*__xdm_printEnv)(char **e);
extern char **(*__xdm_systemEnv)(struct display *d, char *user, char *home);
extern void (*__xdm_LogOutOfMem)(char * fmt, ...);
extern void (*__xdm_setgrent)(void);
extern struct group *(*__xdm_getgrent)(void);
extern void (*__xdm_endgrent)(void);
#ifdef USESHADOW
extern struct spwd *(*__xdm_getspnam)(GETSPNAM_ARGS);
extern void (*__xdm_endspent)(void);
#endif
extern struct passwd *(*__xdm_getpwnam)(GETPWNAM_ARGS);
#ifdef linux
extern void (*__xdm_endpwent)(void);
#endif
extern char *(*__xdm_crypt)(CRYPT_ARGS);
#ifdef USE_PAM
extern pam_handle_t **(*__xdm_thepamhp)(void);
#endif
#define PingServer (*__xdm_PingServer)
#define SessionPingFailed (*__xdm_SessionPingFailed)
#define Debug (*__xdm_Debug)
#define RegisterCloseOnFork (*__xdm_RegisterCloseOnFork)
#define SecureDisplay (*__xdm_SecureDisplay)
#define UnsecureDisplay (*__xdm_UnsecureDisplay)
#define ClearCloseOnFork (*__xdm_ClearCloseOnFork)
#define SetupDisplay (*__xdm_SetupDisplay)
#define LogError (*__xdm_LogError)
#define SessionExit (*__xdm_SessionExit)
#define DeleteXloginResources (*__xdm_DeleteXloginResources)
#define source (*__xdm_source)
#define defaultEnv (*__xdm_defaultEnv)
#define setEnv (*__xdm_setEnv)
#define putEnv (*__xdm_putEnv)
#define parseArgs (*__xdm_parseArgs)
#define printEnv (*__xdm_printEnv)
#define systemEnv (*__xdm_systemEnv)
#define LogOutOfMem (*__xdm_LogOutOfMem)
#define setgrent (*__xdm_setgrent)
#define getgrent (*__xdm_getgrent)
#define endgrent (*__xdm_endgrent)
#ifdef USESHADOW
#define getspnam (*__xdm_getspnam)
#define endspent (*__xdm_endspent)
#endif
#ifdef linux
#define endpwent (*__xdm_endpwent)
#endif
#define getpwnam (*__xdm_getpwnam)
#define crypt (*__xdm_crypt)
#define thepamhp (*__xdm_thepamhp)
#endif