getpwent.c raw

   1  #include "pwf.h"
   2  
   3  static FILE *f;
   4  static char *line;
   5  static struct passwd pw;
   6  static size_t size;
   7  
   8  void setpwent()
   9  {
  10  	if (f) fclose(f);
  11  	f = 0;
  12  }
  13  
  14  weak_alias(setpwent, endpwent);
  15  
  16  struct passwd *getpwent()
  17  {
  18  	struct passwd *res;
  19  	if (!f) f = fopen("/etc/passwd", "rbe");
  20  	if (!f) return 0;
  21  	__getpwent_a(f, &pw, &line, &size, &res);
  22  	return res;
  23  }
  24  
  25  struct passwd *getpwuid(uid_t uid)
  26  {
  27  	struct passwd *res;
  28  	__getpw_a(0, uid, &pw, &line, &size, &res);
  29  	return res;
  30  }
  31  
  32  struct passwd *getpwnam(const char *name)
  33  {
  34  	struct passwd *res;
  35  	__getpw_a(name, 0, &pw, &line, &size, &res);
  36  	return res;
  37  }
  38