getgrent.c raw

   1  #include "pwf.h"
   2  
   3  static FILE *f;
   4  static char *line, **mem;
   5  static struct group gr;
   6  
   7  void setgrent()
   8  {
   9  	if (f) fclose(f);
  10  	f = 0;
  11  }
  12  
  13  weak_alias(setgrent, endgrent);
  14  
  15  struct group *getgrent()
  16  {
  17  	struct group *res;
  18  	size_t size=0, nmem=0;
  19  	if (!f) f = fopen("/etc/group", "rbe");
  20  	if (!f) return 0;
  21  	__getgrent_a(f, &gr, &line, &size, &mem, &nmem, &res);
  22  	return res;
  23  }
  24  
  25  struct group *getgrgid(gid_t gid)
  26  {
  27  	struct group *res;
  28  	size_t size=0, nmem=0;
  29  	__getgr_a(0, gid, &gr, &line, &size, &mem, &nmem, &res);
  30  	return res;
  31  }
  32  
  33  struct group *getgrnam(const char *name)
  34  {
  35  	struct group *res;
  36  	size_t size=0, nmem=0;
  37  	__getgr_a(name, 0, &gr, &line, &size, &mem, &nmem, &res);
  38  	return res;
  39  }
  40