| 
									
										
										
										
											2012-03-03 00:50:06 +00:00
										 |  |  | /* User and Group Database Example
 | 
					
						
							| 
									
										
										
										
											2013-01-02 19:01:50 +00:00
										 |  |  |    Copyright (C) 1991-2013 Free Software Foundation, Inc. | 
					
						
							| 
									
										
										
										
											2012-03-03 00:50:06 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    This program is free software; you can redistribute it and/or | 
					
						
							|  |  |  |    modify it under the terms of the GNU General Public License | 
					
						
							|  |  |  |    as published by the Free Software Foundation; either version 2 | 
					
						
							|  |  |  |    of the License, or (at your option) any later version. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |    GNU General Public License for more details. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  |    along with this program; if not, if not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-02-18 01:27:10 +00:00
										 |  |  | #include <grp.h>
 | 
					
						
							|  |  |  | #include <pwd.h>
 | 
					
						
							|  |  |  | #include <sys/types.h>
 | 
					
						
							|  |  |  | #include <unistd.h>
 | 
					
						
							|  |  |  | #include <stdlib.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | main (void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   uid_t me; | 
					
						
							|  |  |  |   struct passwd *my_passwd; | 
					
						
							|  |  |  |   struct group *my_group; | 
					
						
							|  |  |  |   char **members; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Get information about the user ID. */ | 
					
						
							|  |  |  |   me = getuid (); | 
					
						
							|  |  |  |   my_passwd = getpwuid (me); | 
					
						
							|  |  |  |   if (!my_passwd) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       printf ("Couldn't find out about user %d.\n", (int) me); | 
					
						
							|  |  |  |       exit (EXIT_FAILURE); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Print the information. */ | 
					
						
							|  |  |  |   printf ("I am %s.\n", my_passwd->pw_gecos); | 
					
						
							|  |  |  |   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); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Get information about the default group ID. */ | 
					
						
							|  |  |  |   my_group = getgrgid (my_passwd->pw_gid); | 
					
						
							|  |  |  |   if (!my_group) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       printf ("Couldn't find out about group %d.\n", | 
					
						
							|  |  |  | 	      (int) my_passwd->pw_gid); | 
					
						
							|  |  |  |       exit (EXIT_FAILURE); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Print the information. */ | 
					
						
							|  |  |  |   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"); | 
					
						
							|  |  |  |   members = my_group->gr_mem; | 
					
						
							|  |  |  |   while (*members) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       printf ("  %s\n", *(members)); | 
					
						
							|  |  |  |       members++; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return EXIT_SUCCESS; | 
					
						
							|  |  |  | } |