From 3813c13628a77759bf2a27ed62289da711baa338 Mon Sep 17 00:00:00 2001 From: Jarkko Hietaniemi Date: Tue, 30 May 2000 22:11:51 +0000 Subject: [PATCH] Introduce HAS_GETESPWNAM, HAS_GETPRPWNAM, and I_PROT in case somebody wants to write an extension for more shadow database interfaces. p4raw-id: //depot/cfgperl@6166 --- Configure | 32 ++++++++++++++++++- Porting/Glossary | 12 +++++++ Porting/config.sh | 15 +++++---- Porting/config_H | 34 +++++++++++++++----- config_h.SH | 32 ++++++++++++++----- epoc/config.sh | 3 ++ pp_sys.c | 89 ++++++++++++++++++++++++++++++++++++++-------------- vms/subconfigure.com | 6 ++++ vos/config.def | 3 ++ vos/config.h | 40 ++++++++++++++++------- vos/config_h.SH_orig | 34 +++++++++++++++----- win32/config.bc | 3 ++ win32/config.gc | 3 ++ win32/config.vc | 3 ++ win32/config_H.bc | 18 +++++++++++ win32/config_H.gc | 18 +++++++++++ win32/config_H.vc | 18 +++++++++++ 17 files changed, 299 insertions(+), 64 deletions(-) diff --git a/Configure b/Configure index 13a0aa2..2159369 100755 --- a/Configure +++ b/Configure @@ -20,7 +20,7 @@ # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $ # -# Generated on Tue May 30 21:30:30 EET DST 2000 [metaconfig 3.0 PL70] +# Generated on Wed May 31 01:00:52 EET DST 2000 [metaconfig 3.0 PL70] # (with additional metaconfig patches by perlbug@perl.com) cat >/tmp/c1$$ <&4 $cat <<'EOSH' > Cppsym.know @@ -15266,6 +15293,7 @@ d_fstatvfs='$d_fstatvfs' d_ftello='$d_ftello' d_ftime='$d_ftime' d_getcwd='$d_getcwd' +d_getespwnam='$d_getespwnam' d_getfsstat='$d_getfsstat' d_getgrent='$d_getgrent' d_getgrps='$d_getgrps' @@ -15290,6 +15318,7 @@ d_getpgrp='$d_getpgrp' d_getppid='$d_getppid' d_getprior='$d_getprior' d_getprotoprotos='$d_getprotoprotos' +d_getprpwnam='$d_getprpwnam' d_getpwent='$d_getpwent' d_getsbyname='$d_getsbyname' d_getsbyport='$d_getsbyport' @@ -15564,6 +15593,7 @@ i_neterrno='$i_neterrno' i_netinettcp='$i_netinettcp' i_niin='$i_niin' i_poll='$i_poll' +i_prot='$i_prot' i_pthread='$i_pthread' i_pwd='$i_pwd' i_rpcsvcdbm='$i_rpcsvcdbm' diff --git a/Porting/Glossary b/Porting/Glossary index 1d6b188..da89a02 100644 --- a/Porting/Glossary +++ b/Porting/Glossary @@ -616,6 +616,10 @@ d_getcwd (d_getcwd.U): indicates to the C program that the getcwd() routine is available to get the current working directory. +d_getespwnam (d_getespwnam.U): + This variable conditionally defines HAS_GETESPWNAM if getespwnam() is + available to retrieve enchanced (shadow) password entries by name. + d_getfsstat (d_getfsstat.U): This variable conditionally defines the HAS_GETFSSTAT symbol, which indicates to the C program that the getfsstat() routine is available. @@ -735,6 +739,10 @@ d_getprotoprotos (d_getprotoprotos.U): prototypes for the various getproto*() functions. See also netdbtype.U for probing for various netdb types. +d_getprpwnam (d_getprpwnam.U): + This variable conditionally defines HAS_GETPRPWNAM if getprpwnam() is + available to retrieve protected (shadow) password entries by name. + d_getpwent (d_getpwent.U): This variable conditionally defines the HAS_GETPWENT symbol, which indicates to the C program that the getpwent() routine is available @@ -2010,6 +2018,10 @@ i_poll (i_poll.U): This variable conditionally defines the I_POLL symbol, and indicates whether a C program should include . +i_prot (i_prot.U): + This variable conditionally defines the I_PROT symbol, and indicates + whether a C program should include . + i_pthread (i_pthread.U): This variable conditionally defines the I_PTHREAD symbol, and indicates whether a C program should include . diff --git a/Porting/config.sh b/Porting/config.sh index 1da4de3..b37bce4 100644 --- a/Porting/config.sh +++ b/Porting/config.sh @@ -8,7 +8,7 @@ # Package name : perl5 # Source directory : . -# Configuration time: Mon May 8 19:17:48 EET DST 2000 +# Configuration time: Wed May 31 00:52:02 EET DST 2000 # Configured by : jhi # Target system : osf1 alpha.hut.fi v4.0 878 alpha @@ -59,7 +59,7 @@ ccflags='-pthread -std -DLANGUAGE_C' ccsymbols='__alpha=1 __LANGUAGE_C__=1 __osf__=1 __unix__=1 _LONGLONG=1 _SYSTYPE_BSD=1 SYSTYPE_BSD=1 unix=1' cf_by='jhi' cf_email='yourname@yourhost.yourplace.com' -cf_time='Mon May 8 19:17:48 EET DST 2000' +cf_time='Wed May 31 00:52:02 EET DST 2000' charsize='1' chgrp='' chmod='' @@ -159,6 +159,7 @@ d_fstatvfs='define' d_ftello='undef' d_ftime='undef' d_getcwd='define' +d_getespwnam='define' d_getfsstat='define' d_getgrent='define' d_getgrps='define' @@ -183,6 +184,7 @@ d_getpgrp='define' d_getppid='define' d_getprior='define' d_getprotoprotos='define' +d_getprpwnam='define' d_getpwent='define' d_getsbyname='define' d_getsbyport='define' @@ -457,6 +459,7 @@ i_neterrno='undef' i_netinettcp='define' i_niin='define' i_poll='define' +i_prot='define' i_pthread='define' i_pwd='define' i_rpcsvcdbm='undef' @@ -544,12 +547,12 @@ lib_ext='.a' libc='/usr/shlib/libc.so' libperl='libperl.so' libpth='/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /var/shlib' -libs='-lgdbm -ldbm -ldb -lm -liconv -lpthread -lexc' +libs='-lgdbm -ldbm -ldb -lm -lsecurity -laud -liconv -lpthread -lexc' libsdirs=' /usr/shlib /usr/ccs/lib' -libsfiles=' libgdbm.so libdbm.a libdb.so libm.so libiconv.so libpthread.so libexc.so' -libsfound=' /usr/shlib/libgdbm.so /usr/ccs/lib/libdbm.a /usr/shlib/libdb.so /usr/shlib/libm.so /usr/shlib/libiconv.so /usr/shlib/libpthread.so /usr/shlib/libexc.so' +libsfiles=' libgdbm.so libdbm.a libdb.so libm.so libsecurity.so libaud.so libiconv.so libpthread.so libexc.so' +libsfound=' /usr/shlib/libgdbm.so /usr/ccs/lib/libdbm.a /usr/shlib/libdb.so /usr/shlib/libm.so /usr/shlib/libsecurity.so /usr/shlib/libaud.so /usr/shlib/libiconv.so /usr/shlib/libpthread.so /usr/shlib/libexc.so' libspath=' /usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /var/shlib' -libswanted='sfio socket bind inet nsl nm gdbm dbm db malloc dld ld sun m cposix posix ndir dir crypt sec ucb BSD x iconv pthread exc' +libswanted='sfio socket bind inet nsl nm gdbm dbm db malloc dld ld sun m cposix posix ndir dir crypt sec security aud ucb BSD x iconv pthread exc' line='' lint='' lkflags='' diff --git a/Porting/config_H b/Porting/config_H index 17afce5..bb539e2 100644 --- a/Porting/config_H +++ b/Porting/config_H @@ -17,7 +17,7 @@ /* * Package name : perl5 * Source directory : . - * Configuration time: Mon May 8 19:17:48 EET DST 2000 + * Configuration time: Wed May 31 00:52:02 EET DST 2000 * Configured by : jhi * Target system : osf1 alpha.hut.fi v4.0 878 alpha */ @@ -1399,6 +1399,12 @@ */ #define HAS_GETCWD /**/ +/* HAS_GETESPWNAM: + * This symbol, if defined, indicates that the getespwnam system call is + * available to retrieve enchanced (shadow) password entries by name. + */ +#define HAS_GETESPWNAM /**/ + /* HAS_GETFSSTAT: * This symbol, if defined, indicates that the getfsstat routine is * available to stat filesystems in bulk. @@ -1529,6 +1535,12 @@ */ #define HAS_GETPROTO_PROTOS /**/ +/* HAS_GETPRPWNAM: + * This symbol, if defined, indicates that the getprpwnam system call is + * available to retrieve protected (shadow) password entries by name. + */ +#define HAS_GETPRPWNAM /**/ + /* HAS_GETPWENT: * This symbol, if defined, indicates that the getpwent routine is * available for sequential access of the passwd database. @@ -1731,6 +1743,13 @@ #define HAS_MMAP /**/ #define Mmap_t void * /**/ +/* HAS_MODFL: + * This symbol, if defined, indicates that the modfl routine is + * available to split a long double x into a fractional part f and + * an integer part i such that |f| < 1.0 and (f + i) = x. + */ +#define HAS_MODFL /**/ + /* HAS_MPROTECT: * This symbol, if defined, indicates that the mprotect system call is * available to modify the access protection of a memory mapped file. @@ -2323,6 +2342,12 @@ */ #define I_POLL /**/ +/* I_PROT: + * This symbol, if defined, indicates that exists and + * should be included. + */ +#define I_PROT /**/ + /* I_PTHREAD: * This symbol, if defined, indicates to the C program that it should * include . @@ -3100,11 +3125,4 @@ #define PERL_XS_APIVERSION "5.6.0" #define PERL_PM_APIVERSION "5.005" -/* HAS_MODFL: - * This symbol, if defined, indicates that the modfl routine is - * available to split a long double x into a fractional part f and - * an integer part i such that |f| < 1.0 and (f + i) = x. - */ -#define HAS_MODFL /**/ - #endif diff --git a/config_h.SH b/config_h.SH index 609726f..1781def 100644 --- a/config_h.SH +++ b/config_h.SH @@ -1413,6 +1413,12 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- */ #$d_getcwd HAS_GETCWD /**/ +/* HAS_GETESPWNAM: + * This symbol, if defined, indicates that the getespwnam system call is + * available to retrieve enchanced (shadow) password entries by name. + */ +#$d_getespwnam HAS_GETESPWNAM /**/ + /* HAS_GETFSSTAT: * This symbol, if defined, indicates that the getfsstat routine is * available to stat filesystems in bulk. @@ -1543,6 +1549,12 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- */ #$d_getprotoprotos HAS_GETPROTO_PROTOS /**/ +/* HAS_GETPRPWNAM: + * This symbol, if defined, indicates that the getprpwnam system call is + * available to retrieve protected (shadow) password entries by name. + */ +#$d_getprpwnam HAS_GETPRPWNAM /**/ + /* HAS_GETPWENT: * This symbol, if defined, indicates that the getpwent routine is * available for sequential access of the passwd database. @@ -1745,6 +1757,13 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- #$d_mmap HAS_MMAP /**/ #define Mmap_t $mmaptype /**/ +/* HAS_MODFL: + * This symbol, if defined, indicates that the modfl routine is + * available to split a long double x into a fractional part f and + * an integer part i such that |f| < 1.0 and (f + i) = x. + */ +#$d_modfl HAS_MODFL /**/ + /* HAS_MPROTECT: * This symbol, if defined, indicates that the mprotect system call is * available to modify the access protection of a memory mapped file. @@ -2337,6 +2356,12 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- */ #$i_poll I_POLL /**/ +/* I_PROT: + * This symbol, if defined, indicates that exists and + * should be included. + */ +#$i_prot I_PROT /**/ + /* I_PTHREAD: * This symbol, if defined, indicates to the C program that it should * include . @@ -3114,12 +3139,5 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- #define PERL_XS_APIVERSION "$xs_apiversion" #define PERL_PM_APIVERSION "$pm_apiversion" -/* HAS_MODFL: - * This symbol, if defined, indicates that the modfl routine is - * available to split a long double x into a fractional part f and - * an integer part i such that |f| < 1.0 and (f + i) = x. - */ -#$d_modfl HAS_MODFL /**/ - #endif !GROK!THIS! diff --git a/epoc/config.sh b/epoc/config.sh index f32e291..688ef87 100644 --- a/epoc/config.sh +++ b/epoc/config.sh @@ -155,6 +155,7 @@ d_fstatfs='define' d_fstatvfs='undef' d_ftello='undef' d_ftime='undef' +d_getespwnam='undef' d_getfsstat='undef' d_getgrent='undef' d_getgrps='undef' @@ -178,6 +179,7 @@ d_getpgrp='undef' d_getppid='undef' d_getprior='undef' d_getprotoprotos='define' +d_getprpwnam='undef' d_getpwent='undef' d_getsbyname='undef' d_getsbyport='undef' @@ -433,6 +435,7 @@ i_neterrno='undef' i_netinettcp='define' i_niin='define' i_poll='undef' +i_prot='undef' i_pthread='undef' i_pwd='undef' i_rpcsvcdbm='undef' diff --git a/pp_sys.c b/pp_sys.c index 5d5b92d..97cd15b 100644 --- a/pp_sys.c +++ b/pp_sys.c @@ -21,13 +21,18 @@ #ifdef I_SHADOW /* Shadow password support for solaris - pdo@cs.umd.edu * Not just Solaris: at least HP-UX, IRIX, Linux. - * the API is from SysV. --jhi */ -#ifdef __hpux__ + * The API is from SysV. + * + * There are at least two more shadow interfaces, + * see the comments in pp_gpwent(). + * + * --jhi */ +# ifdef __hpux__ /* There is a MAXINT coming from <- <- * and another MAXINT from "perl.h" <- . */ -#undef MAXINT -#endif -#include +# undef MAXINT +# endif +# include #endif /* XXX If this causes problems, set i_unistd=undef in the hint file. */ @@ -195,7 +200,7 @@ static char zero_but_true[ZBTLEN + 1] = "0 but true"; #endif #if !defined(PERL_EFF_ACCESS_R_OK) && defined(HAS_EACCESS) -# if defined(I_SYS_SECURITY) +# ifdef I_SYS_SECURITY # include # endif # ifdef ACC_SELF @@ -4786,7 +4791,7 @@ PP(pp_gpwent) * There are at least two other shadow password APIs. Many platforms * seem to contain more than one interface for accessing the shadow * password databases, possibly for compatibility reasons. - * The getsp*() is tby far he simplest one, the other two interfaces + * The getsp*() is by far he simplest one, the other two interfaces * are much more complicated, but also very similar to each other. * * @@ -4794,7 +4799,8 @@ PP(pp_gpwent) * * struct pr_passwd *getprpw*(); * The password is in - * char getprpw*(...).ufld.fd_encrypt[AUTH_MAX_CIPHERTEXT_LENGTH] + * char getprpw*(...).ufld.fd_encrypt[] + * Mention HAS_GETPRPWNAM here so that Configure probes for it. * * * @@ -4802,24 +4808,29 @@ PP(pp_gpwent) * struct es_passwd *getespw*(); * The password is in * char *(getespw*(...).ufld.fd_encrypt) + * Mention HAS_GETESPWNAM here so that Configure probes for it. * - * XXX Configure test needed for getprpwnam XXX - * XXX Configure test needed for getespwnam XXX + * Mention I_PROT here so that Configure probes for it. * * In HP-UX for getprpw*() the manual page claims that one should include * instead of , but that is not needed * if one includes as that includes , * and pp_sys.c already includes if there is such. + * + * Note that is already probed for, but currently + * it is only included in special cases. * * In Digital UNIX/Tru64 if using the getespw*() (which seems to be * be preferred interface, even though also the getprpw*() interface * is available) one needs to link with -lsecurity -ldb -laud -lm. + * One also needs to call set_auth_parameters() in main() before + * doing anything else, whether one is using getespw*() or getprpw*(). + * + * Note that accessing the shadow databases can be magnitudes + * slower than accessing the standard databases. * * --jhi */ -# ifdef HAS_GETSPNAM - struct spwd *spwent = NULL; -# endif switch (which) { case OP_GPWNAM: @@ -4858,17 +4869,44 @@ PP(pp_gpwent) sv_setpv(sv, pwent->pw_name); PUSHs(sv = sv_mortalcopy(&PL_sv_no)); + SvPOK_off(sv); + /* If we have getspnam(), we try to dig up the shadow + * password. If we are underprivileged, the shadow + * interface will set the errno to EACCES or similar, + * and return a null pointer. If this happens, we will + * use the dummy password (usually "*" or "x") from the + * standard password database. + * + * In theory we could skip the shadow call completely + * if euid != 0 but in practice we cannot know which + * security measures are guarding the shadow databases + * on a random platform. + * + * Resist the urge to use additional shadow interfaces. + * Divert the urge to writing an extension instead. + * + * --jhi */ # ifdef HAS_GETSPNAM - spwent = getspnam(pwent->pw_name); - if (spwent) - sv_setpv(sv, spwent->sp_pwdp); - else - sv_setpv(sv, pwent->pw_passwd); -# else - sv_setpv(sv, pwent->pw_passwd); + { + struct spwd *spwent; + int saverrno; /* Save and restore errno so that + * underprivileged attempts seem + * to have never made the unsccessful + * attempt to retrieve the shadow password. */ + + saverrno = errno; + spwent = getspnam(pwent->pw_name); + errno = saverrno; + if (spwent && spwent->sp_pwdp) + sv_setpv(sv, spwent->sp_pwdp); + } # endif + if (!SvPOK(sv)) /* Use the standard password, then. */ + sv_setpv(sv, pwent->pw_passwd); + # ifndef INCOMPLETE_TAINTS - /* passwd is tainted because user himself can diddle with it. */ + /* passwd is tainted because user himself can diddle with it. + * admittedly not much and in a very limited way, but nevertheless. */ SvTAINTED_on(sv); # endif @@ -4885,7 +4923,11 @@ PP(pp_gpwent) # else sv_setuv(sv, (UV)pwent->pw_gid); # endif - /* pw_change, pw_quota, and pw_age are mutually exclusive. */ + /* pw_change, pw_quota, and pw_age are mutually exclusive-- + * because of the poor interface of the Perl getpw*(), + * not because there's some standard/convention saying so. + * A better interface would have been to return a hash, + * but we are accursed by our history, alas. --jhi. */ PUSHs(sv = sv_mortalcopy(&PL_sv_no)); # ifdef PWCHANGE sv_setiv(sv, (IV)pwent->pw_change); @@ -4899,7 +4941,8 @@ PP(pp_gpwent) # endif # endif - /* pw_class and pw_comment are mutually exclusive. */ + /* pw_class and pw_comment are mutually exclusive--. + * see the above note for pw_change, pw_quota, and pw_age. */ PUSHs(sv = sv_mortalcopy(&PL_sv_no)); # ifdef PWCLASS sv_setpv(sv, pwent->pw_class); diff --git a/vms/subconfigure.com b/vms/subconfigure.com index 00fbf3f..ce291f8 100644 --- a/vms/subconfigure.com +++ b/vms/subconfigure.com @@ -69,6 +69,9 @@ $ myname = myhostname $ IF myname .EQS. "" THEN myname = F$TRNLNM("SYS$NODE") $! $! ##ADD NEW CONSTANTS HERE## +$ perl_i_prot="undef" +$ perl_d_getespwnam="undef" +$ perl_d_getprpwnam="undef" $ perl_d_isnan= = "define" $ perl_sizesize = "4" $ perl_shmattype = "" @@ -4260,6 +4263,9 @@ $ WC "d_frexpl='" + perl_d_frexpl + "'" $ WC "d_isnan='" + perl_d_isnan + "'" $ WC "d_isnanl='" + perl_d_isnanl + "'" $ WC "d_modfl='" + perl_d_modfl + "'" +$ WC "d_getprpwnam='" + perl_d_getprpwnam + "'" +$ WC "d_getespwnam='" + perl_d_getespwnam + "'" +$ WC "i_prot='" + perl_i_prot + "'" $! $! ##WRITE NEW CONSTANTS HERE## $! diff --git a/vos/config.def b/vos/config.def index 1b375f5..f180e10 100644 --- a/vos/config.def +++ b/vos/config.def @@ -73,6 +73,7 @@ $d_fstatvfs='undef' $d_ftello='undef' $d_Gconvert='sprintf((b),"%.*g",(n),(x))' $d_getcwd='define' +$d_getespwnam='undef' $d_getfsstat='undef' $d_getgrent='undef' $d_getgrps='undef' @@ -97,6 +98,7 @@ $d_getpgrp='define' $d_getppid='define' $d_getprior='undef' $d_getprotoprotos='define' +$d_getprpwnam='undef' $d_getpwent='undef' $d_getsbyname='define' $d_getsbyport='define' @@ -321,6 +323,7 @@ $i_neterrno='undef' $i_netinettcp='undef' $i_niin='define' $i_poll='undef' +$i_prot='undef' $i_pthread='undef' $i_pwd='undef' $i_rpcsvcdbm='undef' diff --git a/vos/config.h b/vos/config.h index 9b2a0f2..af79ff1 100644 --- a/vos/config.h +++ b/vos/config.h @@ -2570,6 +2570,16 @@ #define Netdb_name_t char * /**/ #define Netdb_net_t long /**/ +/* PERL_OTHERLIBDIRS: + * This variable contains a colon-separated set of paths for the perl + * binary to search for additional library files or modules. + * These directories will be tacked to the end of @INC. + * Perl will automatically search below each path for version- + * and architecture-specific directories. See PERL_INC_VERSION_LIST + * for more details. + */ +/*#define PERL_OTHERLIBDIRS "" /**/ + /* IVTYPE: * This symbol defines the C type used for Perl's IV. */ @@ -2638,7 +2648,7 @@ */ /* NV_PRESERVES_UV: * This symbol, if defined, indicates that a variable of type NVTYPE - * can preserve all the bit of a variable of type UVSIZE. + * can preserve all the bits of a variable of type UVTYPE. */ #define IVTYPE int /**/ #define UVTYPE unsigned int /**/ @@ -2696,16 +2706,6 @@ */ #define Pid_t pid_t /* PID type */ -/* PERL_OTHERLIBDIRS: - * This variable contains a colon-separated set of paths for the perl - * binary to search for additional library files or modules. - * These directories will be tacked to the end of @INC. - * Perl will automatically search below each path for version- - * and architecture-specific directories. See PERL_INC_VERSION_LIST - * for more details. - */ -/*#define PERL_OTHERLIBDIRS "" /**/ - /* PRIVLIB: * This symbol contains the name of the private library for this package. * The library is private in the sense that it needn't be in anyone's @@ -3096,6 +3096,18 @@ #define PERL_XS_APIVERSION "5.00563" #define PERL_PM_APIVERSION "5.00563" +/* HAS_GETESPWNAM: + * This symbol, if defined, indicates that the getespwnam system call is + * available to retrieve enchanced (shadow) password entries by name. + */ +/*#define HAS_GETESPWNAM /**/ + +/* HAS_GETPRPWNAM: + * This symbol, if defined, indicates that the getprpwnam system call is + * available to retrieve protected (shadow) password entries by name. + */ +/*#define HAS_GETPRPWNAM /**/ + /* HAS_MODFL: * This symbol, if defined, indicates that the modfl routine is * available to split a long double x into a fractional part f and @@ -3103,4 +3115,10 @@ */ /*#define HAS_MODFL /**/ +/* I_PROT: + * This symbol, if defined, indicates that exists and + * should be included. + */ +/*#define I_PROT /**/ + #endif diff --git a/vos/config_h.SH_orig b/vos/config_h.SH_orig index 12a4350..1781def 100755 --- a/vos/config_h.SH_orig +++ b/vos/config_h.SH_orig @@ -1413,6 +1413,12 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- */ #$d_getcwd HAS_GETCWD /**/ +/* HAS_GETESPWNAM: + * This symbol, if defined, indicates that the getespwnam system call is + * available to retrieve enchanced (shadow) password entries by name. + */ +#$d_getespwnam HAS_GETESPWNAM /**/ + /* HAS_GETFSSTAT: * This symbol, if defined, indicates that the getfsstat routine is * available to stat filesystems in bulk. @@ -1543,6 +1549,12 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- */ #$d_getprotoprotos HAS_GETPROTO_PROTOS /**/ +/* HAS_GETPRPWNAM: + * This symbol, if defined, indicates that the getprpwnam system call is + * available to retrieve protected (shadow) password entries by name. + */ +#$d_getprpwnam HAS_GETPRPWNAM /**/ + /* HAS_GETPWENT: * This symbol, if defined, indicates that the getpwent routine is * available for sequential access of the passwd database. @@ -1745,6 +1757,13 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- #$d_mmap HAS_MMAP /**/ #define Mmap_t $mmaptype /**/ +/* HAS_MODFL: + * This symbol, if defined, indicates that the modfl routine is + * available to split a long double x into a fractional part f and + * an integer part i such that |f| < 1.0 and (f + i) = x. + */ +#$d_modfl HAS_MODFL /**/ + /* HAS_MPROTECT: * This symbol, if defined, indicates that the mprotect system call is * available to modify the access protection of a memory mapped file. @@ -2337,6 +2356,12 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- */ #$i_poll I_POLL /**/ +/* I_PROT: + * This symbol, if defined, indicates that exists and + * should be included. + */ +#$i_prot I_PROT /**/ + /* I_PTHREAD: * This symbol, if defined, indicates to the C program that it should * include . @@ -2666,7 +2691,7 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- */ /* NV_PRESERVES_UV: * This symbol, if defined, indicates that a variable of type NVTYPE - * can preserve all the bit of a variable of type UVSIZE. + * can preserve all the bits of a variable of type UVTYPE. */ #define IVTYPE $ivtype /**/ #define UVTYPE $uvtype /**/ @@ -3114,12 +3139,5 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- #define PERL_XS_APIVERSION "$xs_apiversion" #define PERL_PM_APIVERSION "$pm_apiversion" -/* HAS_MODFL: - * This symbol, if defined, indicates that the modfl routine is - * available to split a long double x into a fractional part f and - * an integer part i such that |f| < 1.0 and (f + i) = x. - */ -#$d_modfl HAS_MODFL /**/ - #endif !GROK!THIS! diff --git a/win32/config.bc b/win32/config.bc index 8024e3f..0dfad54 100644 --- a/win32/config.bc +++ b/win32/config.bc @@ -148,6 +148,7 @@ d_fstatvfs='undef' d_ftello='undef' d_ftime='define' d_getcwd='undef' +d_getespwnam='undef' d_getfsstat='undef' d_getgrent='undef' d_getgrps='undef' @@ -172,6 +173,7 @@ d_getpgrp='undef' d_getppid='undef' d_getprior='undef' d_getprotoprotos='define' +d_getprpwnam='undef' d_getpwent='undef' d_getsbyname='define' d_getsbyport='define' @@ -445,6 +447,7 @@ i_neterrno='undef' i_netinettcp='undef' i_niin='undef' i_poll='undef' +i_prot='undef' i_pthread='undef' i_pwd='undef' i_rpcsvcdbm='define' diff --git a/win32/config.gc b/win32/config.gc index 1933334..a947e79 100644 --- a/win32/config.gc +++ b/win32/config.gc @@ -148,6 +148,7 @@ d_fstatvfs='undef' d_ftello='undef' d_ftime='define' d_getcwd='undef' +d_getespwnam='undef' d_getfsstat='undef' d_getgrent='undef' d_getgrps='undef' @@ -172,6 +173,7 @@ d_getpgrp='undef' d_getppid='undef' d_getprior='undef' d_getprotoprotos='define' +d_getprpwnam='undef' d_getpwent='undef' d_getsbyname='define' d_getsbyport='define' @@ -445,6 +447,7 @@ i_neterrno='undef' i_netinettcp='undef' i_niin='undef' i_poll='undef' +i_prot='undef' i_pthread='undef' i_pwd='undef' i_rpcsvcdbm='define' diff --git a/win32/config.vc b/win32/config.vc index ef4bf76..b2ee889 100644 --- a/win32/config.vc +++ b/win32/config.vc @@ -148,6 +148,7 @@ d_fstatvfs='undef' d_ftello='undef' d_ftime='define' d_getcwd='undef' +d_getespwnam='undef' d_getfsstat='undef' d_getgrent='undef' d_getgrps='undef' @@ -172,6 +173,7 @@ d_getpgrp='undef' d_getppid='undef' d_getprior='undef' d_getprotoprotos='define' +d_getprpwnam='undef' d_getpwent='undef' d_getsbyname='define' d_getsbyport='define' @@ -445,6 +447,7 @@ i_neterrno='undef' i_netinettcp='undef' i_niin='undef' i_poll='undef' +i_prot='undef' i_pthread='undef' i_pwd='undef' i_rpcsvcdbm='define' diff --git a/win32/config_H.bc b/win32/config_H.bc index a469a36..70fc4bf 100644 --- a/win32/config_H.bc +++ b/win32/config_H.bc @@ -1546,6 +1546,24 @@ */ /*#define HAS_GETSPNAM /**/ +/* HAS_GETESPWNAM: + * This symbol, if defined, indicates that the getespwnam system call is + * available to retrieve enchanced (shadow) password entries by name. + */ +/*#define HAS_GETESPWNAM /**/ + +/* HAS_GETPRPWNAM: + * This symbol, if defined, indicates that the getprpwnam system call is + * available to retrieve protected (shadow) password entries by name. + */ +/*#define HAS_GETPRPWNAM /**/ + +/* I_PROT: + * This symbol, if defined, indicates that exists and + * should be included. + */ +/*#define I_PROT /**/ + /* HAS_GETSERVBYNAME: * This symbol, if defined, indicates that the getservbyname() * routine is available to look up services by their name. diff --git a/win32/config_H.gc b/win32/config_H.gc index f712b2e..dcb495a 100644 --- a/win32/config_H.gc +++ b/win32/config_H.gc @@ -1546,6 +1546,24 @@ */ /*#define HAS_GETSPNAM /**/ +/* HAS_GETESPWNAM: + * This symbol, if defined, indicates that the getespwnam system call is + * available to retrieve enchanced (shadow) password entries by name. + */ +/*#define HAS_GETESPWNAM /**/ + +/* HAS_GETPRPWNAM: + * This symbol, if defined, indicates that the getprpwnam system call is + * available to retrieve protected (shadow) password entries by name. + */ +/*#define HAS_GETPRPWNAM /**/ + +/* I_PROT: + * This symbol, if defined, indicates that exists and + * should be included. + */ +/*#define I_PROT /**/ + /* HAS_GETSERVBYNAME: * This symbol, if defined, indicates that the getservbyname() * routine is available to look up services by their name. diff --git a/win32/config_H.vc b/win32/config_H.vc index e748c97..b23c1aa 100644 --- a/win32/config_H.vc +++ b/win32/config_H.vc @@ -1546,6 +1546,24 @@ */ /*#define HAS_GETSPNAM /**/ +/* HAS_GETESPWNAM: + * This symbol, if defined, indicates that the getespwnam system call is + * available to retrieve enchanced (shadow) password entries by name. + */ +/*#define HAS_GETESPWNAM /**/ + +/* HAS_GETPRPWNAM: + * This symbol, if defined, indicates that the getprpwnam system call is + * available to retrieve protected (shadow) password entries by name. + */ +/*#define HAS_GETPRPWNAM /**/ + +/* I_PROT: + * This symbol, if defined, indicates that exists and + * should be included. + */ +/*#define I_PROT /**/ + /* HAS_GETSERVBYNAME: * This symbol, if defined, indicates that the getservbyname() * routine is available to look up services by their name. -- 2.7.4