X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_sys.c;h=2f674839e51b7c032fb22f93688e0fba68c64ac8;hb=765e9edb2de192ef033766d867f9bd290e9935e9;hp=86c6f6cdfe2e8b4185d9db0723d0aa37139f7b71;hpb=e3aefe8d26ea28583c7b9c8fbe7c1d9e8b526458;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_sys.c b/pp_sys.c index 86c6f6c..2f67483 100644 --- a/pp_sys.c +++ b/pp_sys.c @@ -4773,31 +4773,23 @@ PP(pp_gpwent) struct passwd *pwent = NULL; /* We do not use HAS_GETSPENT in pp_gpwent() but leave it here in the case * somebody wants to write an XS to access the shadow passwords. --jhi */ -#ifdef HAS_GETSPNAM +# ifdef HAS_GETSPNAM struct spwd *spwent = NULL; -#endif +# endif switch (which) { case OP_GPWNAM: pwent = getpwnam(POPpx); -#ifdef HAS_GETSPNAM - if (pwent) - spwent = getspnam(pwent->pw_name); -#endif break; case OP_GPWUID: pwent = getpwuid((Uid_t)POPi); break; case OP_GPWENT: -#ifdef HAS_GETPWENT +# ifdef HAS_GETPWENT pwent = getpwent(); -#else - DIE(aTHX_ PL_no_fun, "getpwent"); -#endif -#ifdef HAS_GETSPNAM - if (pwent) - spwent = getspnam(pwent->pw_name); -#endif +# else + DIE(aTHX_ PL_no_func, "getpwent"); +# endif break; } @@ -4806,11 +4798,11 @@ PP(pp_gpwent) PUSHs(sv = sv_newmortal()); if (pwent) { if (which == OP_GPWNAM) -#if Uid_t_sign <= 0 +# if Uid_t_sign <= 0 sv_setiv(sv, (IV)pwent->pw_uid); -#else +# else sv_setuv(sv, (UV)pwent->pw_uid); -#endif +# endif else sv_setpv(sv, pwent->pw_name); } @@ -4822,81 +4814,80 @@ PP(pp_gpwent) sv_setpv(sv, pwent->pw_name); PUSHs(sv = sv_mortalcopy(&PL_sv_no)); -#ifdef PWPASSWD # ifdef HAS_GETSPNAM - if (spwent) - sv_setpv(sv, spwent->sp_pwdp); - else - sv_setpv(sv, pwent->pw_passwd); + 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); # endif -#endif -#ifndef INCOMPLETE_TAINTS +# ifndef INCOMPLETE_TAINTS /* passwd is tainted because user himself can diddle with it. */ SvTAINTED_on(sv); -#endif +# endif PUSHs(sv = sv_mortalcopy(&PL_sv_no)); -#if Uid_t_sign <= 0 +# if Uid_t_sign <= 0 sv_setiv(sv, (IV)pwent->pw_uid); -#else +# else sv_setuv(sv, (UV)pwent->pw_uid); -#endif +# endif PUSHs(sv = sv_mortalcopy(&PL_sv_no)); -#if Uid_t_sign <= 0 +# if Uid_t_sign <= 0 sv_setiv(sv, (IV)pwent->pw_gid); -#else +# else sv_setuv(sv, (UV)pwent->pw_gid); -#endif +# endif /* pw_change, pw_quota, and pw_age are mutually exclusive. */ PUSHs(sv = sv_mortalcopy(&PL_sv_no)); -#ifdef PWCHANGE +# ifdef PWCHANGE sv_setiv(sv, (IV)pwent->pw_change); -#else -# ifdef PWQUOTA - sv_setiv(sv, (IV)pwent->pw_quota); # else -# ifdef PWAGE +# ifdef PWQUOTA + sv_setiv(sv, (IV)pwent->pw_quota); +# else +# ifdef PWAGE sv_setpv(sv, pwent->pw_age); +# endif # endif # endif -#endif /* pw_class and pw_comment are mutually exclusive. */ PUSHs(sv = sv_mortalcopy(&PL_sv_no)); -#ifdef PWCLASS +# ifdef PWCLASS sv_setpv(sv, pwent->pw_class); -#else -# ifdef PWCOMMENT +# else +# ifdef PWCOMMENT sv_setpv(sv, pwent->pw_comment); +# endif # endif -#endif PUSHs(sv = sv_mortalcopy(&PL_sv_no)); -#ifdef PWGECOS +# ifdef PWGECOS sv_setpv(sv, pwent->pw_gecos); -#endif -#ifndef INCOMPLETE_TAINTS +# endif +# ifndef INCOMPLETE_TAINTS /* pw_gecos is tainted because user himself can diddle with it. */ SvTAINTED_on(sv); -#endif +# endif PUSHs(sv = sv_mortalcopy(&PL_sv_no)); sv_setpv(sv, pwent->pw_dir); PUSHs(sv = sv_mortalcopy(&PL_sv_no)); sv_setpv(sv, pwent->pw_shell); -#ifndef INCOMPLETE_TAINTS +# ifndef INCOMPLETE_TAINTS /* pw_shell is tainted because user himself can diddle with it. */ SvTAINTED_on(sv); -#endif +# endif -#ifdef PWEXPIRE +# ifdef PWEXPIRE PUSHs(sv = sv_mortalcopy(&PL_sv_no)); sv_setiv(sv, (IV)pwent->pw_expire); -#endif +# endif } RETURN; #else