preauthpwd.c
上传用户:s81996212
上传日期:2007-01-04
资源大小:722k
文件大小:1k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. /*
  2. ** Copyright 1998 - 1999 Double Precision, Inc.  See COPYING for
  3. ** distribution information.
  4. */
  5. #if HAVE_CONFIG_H
  6. #include "config.h"
  7. #endif
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <errno.h>
  12. #include <pwd.h>
  13. #if HAVE_UNISTD_H
  14. #include <unistd.h>
  15. #endif
  16. #include "auth.h"
  17. static const char rcsid[]="$Id: preauthpwd.c,v 1.5 2000/02/20 21:48:36 mrsam Exp $";
  18. int auth_pwd_pre(const char *userid, const char *service,
  19. int (*callback)(struct authinfo *, void *),
  20. void *arg)
  21. {
  22. struct authinfo auth;
  23. struct passwd *pw;
  24. memset(&auth, 0, sizeof(auth));
  25. if ((pw=getpwnam(userid)) == 0)
  26. {
  27. if (errno == ENOMEM) return (1);
  28. return (-1);
  29. }
  30. auth.sysusername=userid;
  31. auth.sysgroupid=pw->pw_gid;
  32. auth.homedir=pw->pw_dir;
  33. auth.address=userid;
  34. auth.fullname=pw->pw_gecos;
  35. auth.passwd=pw->pw_passwd;
  36. return ((*callback)(&auth, arg));
  37. }