--- vpopmail.xs.orig Sun Jan 12 22:43:03 2003 +++ vpopmail.xs Mon Jan 13 00:43:13 2003 @@ -192,6 +192,43 @@ croak( "oops: key %s not stored", name ); } } + + /* James Raftery 12 January 2003. */ + /* Get at uid, gid and clear text password. */ + /* N.B. pw_uid and pw_gid will not be defined if zero. */ + /* SET HASH->{pw_uid} */ + if (pwd->pw_uid != NULL) { + /* warn("pw_uid = %d\n", pwd->pw_uid); */ + svval = newSViv( pwd->pw_uid ); + /* make the string that will be the key */ + strcpy( name, "pw_uid"); + ssv = hv_store( h, name, strlen( name ), svval, 0 ); + if ( ssv == NULL ) { + croak( "oops: key %s not stored", name ); + } + } + /* SET HASH->{pw_gid} */ + if (pwd->pw_gid != NULL) { + /* warn("pw_gid = %d\n", pwd->pw_gid); */ + svval = newSViv( pwd->pw_gid ); + /* make the string that will be the key */ + strcpy( name, "pw_gid"); + ssv = hv_store( h, name, strlen( name ), svval, 0 ); + if ( ssv == NULL ) { + croak( "oops: key %s not stored", name ); + } + } + /* SET HASH->{pw_clear_passwd} */ + if (pwd->pw_clear_passwd != NULL) { + /* warn("pw_clear_passwd = %s\n", pwd->pw_clear_passwd); */ + svval = newSVpv( pwd->pw_clear_passwd, strlen(pwd->pw_clear_passwd) ); + /* make the string that will be the key */ + strcpy( name, "pw_clear_passwd"); + ssv = hv_store( h, name, strlen( name ), svval, 0 ); + if ( ssv == NULL ) { + croak( "oops: key %s not stored", name ); + } + } OUTPUT: RETVAL