mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	The majority of grp routines are entry points for nss functionality. This commit removes the 'grp' subdirectory and moves all nss-relevant functionality and all tests to 'nss', and the 'setgroups' stub into 'posix' (alongside the 'getgroups' stub). References to grp/ are accordingly changed. In addition, compat-initgroups.c, a fallback implementation of initgroups is renamed to initgroups-fallback.c so that the build system does not confuse it for nss_compat/compat-initgroups.c. Build time improves very slightly; e.g. down from an average of 45.5s to 44.5s on an 8-thread mobile x86_64 CPU. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include <grp.h>
 | 
						|
#include <pwd.h>
 | 
						|
#include <sys/types.h>
 | 
						|
#include <unistd.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <stdio.h>
 | 
						|
 | 
						|
int
 | 
						|
main (int argc, char *argv[])
 | 
						|
{
 | 
						|
  uid_t me;
 | 
						|
  struct passwd *my_passwd;
 | 
						|
  struct group *my_group = NULL;
 | 
						|
  char **members;
 | 
						|
 | 
						|
  me = getuid ();
 | 
						|
  my_passwd = getpwuid (me);
 | 
						|
  if (my_passwd == NULL)
 | 
						|
    printf ("Cannot find user entry for UID %d\n", me);
 | 
						|
  else
 | 
						|
    {
 | 
						|
      printf ("My login name is %s.\n", my_passwd->pw_name);
 | 
						|
      printf ("My uid is %d.\n", (int)(my_passwd->pw_uid));
 | 
						|
      printf ("My home directory is %s.\n", my_passwd->pw_dir);
 | 
						|
      printf ("My default shell is %s.\n", my_passwd->pw_shell);
 | 
						|
 | 
						|
      my_group = getgrgid (my_passwd->pw_gid);
 | 
						|
      if (my_group == NULL)
 | 
						|
	printf ("No data for group %d found\n", my_passwd->pw_gid);
 | 
						|
      else
 | 
						|
	{
 | 
						|
	  printf ("My default group is %s (%d).\n",
 | 
						|
		  my_group->gr_name, (int)(my_passwd->pw_gid));
 | 
						|
	  printf ("The members of this group are:\n");
 | 
						|
	  for (members = my_group->gr_mem; *members != NULL; ++members)
 | 
						|
	    printf ("  %s\n", *members);
 | 
						|
	}
 | 
						|
    }
 | 
						|
 | 
						|
  return my_passwd && my_group ? EXIT_SUCCESS : EXIT_FAILURE;
 | 
						|
}
 |