home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume25 / pty4 / part02 / username.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-18  |  798 b   |  49 lines

  1. /* username.c, username.h: username-uid conversions
  2. Daniel J. Bernstein, brnstnd@nyu.edu.
  3. Depends on fmt.h, scan.h.
  4. Requires getpwuid(), getpwnam().
  5. 7/18/91: Rewritten to use fmt/scan. username 1.1, public domain.
  6. 5/1/91: Baseline. username 1.0, public domain.
  7. No known patent problems.
  8.  
  9. XXX: cache
  10.  
  11. */
  12.  
  13. #include <pwd.h>
  14. #include "username.h"
  15. #include "fmt.h"
  16. #include "scan.h"
  17.  
  18. int uid2username(uid,unp)
  19. int uid;
  20. char **unp;
  21. {
  22.  struct passwd *pw;
  23.  static char un[FMT_ULONG + 1];
  24.  
  25.  if (pw = getpwuid(uid))
  26.   {
  27.    *unp = pw->pw_name;
  28.    return 0;
  29.   }
  30.  un[fmt_uint(un,uid)] = 0;
  31.  *unp = un;
  32.  return 1;
  33. }
  34.  
  35. int username2uid(un,uid)
  36. char *un;
  37. int *uid;
  38. {
  39.  struct passwd *pw;
  40.  
  41.  if (!un[scan_uint(un,uid)])
  42.    return 1;
  43.  pw = getpwnam(un);
  44.  if (!pw)
  45.    return -1; /*XXX*/
  46.  *uid = pw->pw_uid;
  47.  return 0;
  48. }
  49.