www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2001/06/03/05:42:23

From: "Tim Van Holder" <tim DOT van DOT holder AT pandora DOT be>
To: "DJGPP-Workers" <djgpp-workers AT delorie DOT com>
Subject: Re-Submit: add extra fields to structs group and passwd
Date: Sun, 3 Jun 2001 11:43:09 +0200
Message-ID: <CAEGKOHJKAAFPKOCLHDICENLCDAA.tim.van.holder@pandora.be>
MIME-Version: 1.0
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0)
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400
Importance: Normal
Reply-To: djgpp-workers AT delorie DOT com

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C0EC22.5CDE7560
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Rationale: several packages use the gr_passwd,
pw_passwd and pw_gecos fields without testing for
them (even though they're not mandated by POSIX).
So we provide reasonable values for them.

Since Linux returns the empty string for a group's
passwd, I expect it's OK to return that for a user's
passwd as well (an alternative would be 'x', which is
returned if a shadowed user database is used).

------=_NextPart_000_0000_01C0EC22.5CDE7560
Content-Type: application/octet-stream;
	name="grp-pwd.diff"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="grp-pwd.diff"

Index: include/grp.h=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvs/djgpp/djgpp/include/grp.h,v=0A=
retrieving revision 1.2=0A=
diff -u -r1.2 grp.h=0A=
--- include/grp.h	2000/12/05 14:05:52	1.2=0A=
+++ include/grp.h	2001/06/03 09:09:15=0A=
@@ -18,9 +18,10 @@=0A=
 #endif=0A=
 =0A=
 struct group {=0A=
-  gid_t		gr_gid;=0A=
-  char **      	gr_mem;=0A=
-  char *	gr_name;=0A=
+  gid_t		gr_gid;		/* Group ID.	*/=0A=
+  char **      	gr_mem;		/* Member list.	*/=0A=
+  char *	gr_name;	/* Group name.	*/=0A=
+  char *	gr_passwd;	/* Password.	*/=0A=
 };=0A=
 =0A=
 struct group *	getgrgid(gid_t _gid);=0A=
Index: include/pwd.h=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvs/djgpp/djgpp/include/pwd.h,v=0A=
retrieving revision 1.2=0A=
diff -u -r1.2 pwd.h=0A=
--- include/pwd.h	2000/12/05 14:05:53	1.2=0A=
+++ include/pwd.h	2001/06/03 09:09:15=0A=
@@ -22,11 +22,13 @@=0A=
 #endif=0A=
 =0A=
 struct passwd {=0A=
-  char *	pw_name;=0A=
-  uid_t		pw_uid;=0A=
-  gid_t		pw_gid;=0A=
-  char *	pw_dir;=0A=
-  char *	pw_shell;=0A=
+  char *	pw_name;		/* Username.  */=0A=
+  uid_t 	pw_uid;			/* User ID.  */=0A=
+  gid_t 	pw_gid;			/* Group ID.  */=0A=
+  char *	pw_dir;			/* Home directory.  */=0A=
+  char *	pw_shell;		/* Shell program.  */=0A=
+  char *	pw_gecos;		/* Real name.  */=0A=
+  char *	pw_passwd;		/* Password.  */=0A=
 };=0A=
   =0A=
 struct passwd *	getpwuid(uid_t _uid);=0A=
Index: src/libc/posix/grp/getgrent.txh=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvs/djgpp/djgpp/src/libc/posix/grp/getgrent.txh,v=0A=
retrieving revision 1.3=0A=
diff -u -r1.3 getgrent.txh=0A=
--- src/libc/posix/grp/getgrent.txh	1999/06/20 08:53:40	1.3=0A=
+++ src/libc/posix/grp/getgrent.txh	2001/06/03 09:09:17=0A=
@@ -24,6 +24,7 @@=0A=
   char  ** gr_mem;    /* gr_mem[0] points to=0A=
                           getenv("USER"/"LOGNAME") or "user" */=0A=
   char  *  gr_name;   /* getenv("GROUP") or "dos" */=0A=
+  char  *  gr_passwd; /* "" */=0A=
 @};=0A=
 @end example=0A=
 =0A=
Index: src/libc/posix/grp/getgrgid.c=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvs/djgpp/djgpp/src/libc/posix/grp/getgrgid.c,v=0A=
retrieving revision 1.1=0A=
diff -u -r1.1 getgrgid.c=0A=
--- src/libc/posix/grp/getgrgid.c	1995/05/21 06:52:42	1.1=0A=
+++ src/libc/posix/grp/getgrgid.c	2001/06/03 09:09:17=0A=
@@ -10,6 +10,7 @@=0A=
 static char *mem[2];=0A=
 static char def_name[] =3D "user";=0A=
 static char def_grp[] =3D "dos";=0A=
+static char def_passwd[] =3D "";=0A=
 =0A=
 static void=0A=
 grp_init(void)=0A=
@@ -45,6 +46,7 @@=0A=
   g.gr_gid =3D getgid();=0A=
   g.gr_mem =3D mem;=0A=
   g.gr_name =3D grp;=0A=
+  g.gr_passwd =3D def_passwd;=0A=
 }=0A=
 =0A=
 struct group *=0A=
Index: src/libc/posix/pwd/getpwnam.c=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvs/djgpp/djgpp/src/libc/posix/pwd/getpwnam.c,v=0A=
retrieving revision 1.2=0A=
diff -u -r1.2 getpwnam.c=0A=
--- src/libc/posix/pwd/getpwnam.c	1998/06/28 22:19:40	1.2=0A=
+++ src/libc/posix/pwd/getpwnam.c	2001/06/03 09:09:17=0A=
@@ -5,8 +5,9 @@=0A=
 #include <stdlib.h>=0A=
 #include <string.h>=0A=
 =0A=
-static char slash[] =3D "/";=0A=
-static char shell[] =3D "sh";=0A=
+static char passwd[] =3D "x";=0A=
+static char slash [] =3D "/";=0A=
+static char shell [] =3D "sh";=0A=
 =0A=
 struct passwd *=0A=
 getpwnam(const char *name)=0A=
@@ -25,5 +26,7 @@=0A=
     rv.pw_shell =3D getenv("COMSPEC");=0A=
   if (rv.pw_shell =3D=3D 0)=0A=
     rv.pw_shell =3D shell;=0A=
+  rv.pw_gecos =3D getlogin();=0A=
+  rv.pw_passwd =3D passwd;=0A=
   return &rv;=0A=
 }=0A=
Index: src/libc/posix/pwd/getpwuid.c=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvs/djgpp/djgpp/src/libc/posix/pwd/getpwuid.c,v=0A=
retrieving revision 1.1=0A=
diff -u -r1.1 getpwuid.c=0A=
--- src/libc/posix/pwd/getpwuid.c	1995/05/10 03:58:12	1.1=0A=
+++ src/libc/posix/pwd/getpwuid.c	2001/06/03 09:09:17=0A=
@@ -3,8 +3,9 @@=0A=
 #include <unistd.h>=0A=
 #include <stdlib.h>=0A=
 =0A=
-static char slash[] =3D "/";=0A=
-static char shell[] =3D "sh";=0A=
+static char passwd[] =3D "x";=0A=
+static char slash [] =3D "/";=0A=
+static char shell [] =3D "sh";=0A=
 =0A=
 struct passwd *=0A=
 getpwuid(uid_t uid)=0A=
@@ -23,5 +24,7 @@=0A=
     rv.pw_shell =3D getenv("COMSPEC");=0A=
   if (rv.pw_shell =3D=3D 0)=0A=
     rv.pw_shell =3D shell;=0A=
+  rv.pw_gecos =3D getlogin();=0A=
+  rv.pw_passwd =3D passwd;=0A=
   return &rv;=0A=
 }=0A=
Index: src/libc/posix/pwd/pwent.txh=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=
RCS file: /cvs/djgpp/djgpp/src/libc/posix/pwd/pwent.txh,v=0A=
retrieving revision 1.3=0A=
diff -u -r1.3 pwent.txh=0A=
--- src/libc/posix/pwd/pwent.txh	1999/08/09 10:27:24	1.3=0A=
+++ src/libc/posix/pwd/pwent.txh	2001/06/03 09:09:18=0A=
@@ -19,13 +19,16 @@=0A=
   int    pw_gid;     /* getgid() */=0A=
   char * pw_dir;     /* "/" or getenv("HOME") */=0A=
   char * pw_shell;   /* "/bin/sh" or getenv("SHELL") */=0A=
+  char * pw_gecos;   /* getlogin() */=0A=
+  char * pw_passwd;  /* "" */=0A=
 @};=0A=
 @end example=0A=
 =0A=
-The @code{pw_name} member is returned as described under @code{getlogin}=0A=
-(@pxref{getlogin}).  The @code{pw_uid} member is returned as described=0A=
-under @code{getuid} (@pxref{getuid}).  @code{pw_gid} is returned as=0A=
-described under @code{getgid} (@pxref{getgid}).  The @code{pw_dir}=0A=
+The @code{pw_name} and @code{pw_gecos} members are returned as described=0A=
+under @code{getlogin} (@pxref{getlogin}).  The @code{pw_uid} member is=0A=
+returned as described under @code{getuid} (@pxref{getuid}).  =
@code{pw_gid}=0A=
+is returned as described under @code{getgid} (@pxref{getgid}).  The=0A=
+@code{pw_passwd} member is set to the empty string.  The @code{pw_dir}=0A=
 member is set to the value of the environment variable @code{HOME} if it=0A=
 is defined, or to @file{/} otherwise.  @code{pw_shell} is set as=0A=
 follows:=0A=

------=_NextPart_000_0000_01C0EC22.5CDE7560--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019