#!/bin/sh
# This is a shell archive (produced by GNU sharutils 4.2).
# To extract the files from this archive, save it to some FILE, remove
# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
# Made on 1999-01-12 05:23 JST by <toyoda@gfd-dennou.org>.
# Source directory was `/home/toyoda/work/common/c'.
#
# Existing files will *not* be overwritten unless `-c' is specified.
#
# This shar contains:
# length mode       name
# ------ ---------- ------------------------------------------
#   1055 -rw-rw-r-- wrap_pwd/README.txt
#    458 -rw-rw-r-- wrap_pwd/Makefile
#    711 -rw-rw-r-- wrap_pwd/wrap_pwd.c
#    733 -rw-rw-r-- wrap_pwd/pwtest.c
#    977 -rw-rw-r-- wrap_pwd/sptest.c
#   3268 -rw-r--r-- wrap_pwd/COPYING.TXT
#    426 -rw-rw-r-- wrap_pwd/wrap_pwd.h
#
save_IFS="${IFS}"
IFS="${IFS}:"
gettext_dir=FAILED
locale_dir=FAILED
first_param="$1"
for dir in $PATH
do
  if test "$gettext_dir" = FAILED && test -f $dir/gettext \
     && ($dir/gettext --version >/dev/null 2>&1)
  then
    set `$dir/gettext --version 2>&1`
    if test "$3" = GNU
    then
      gettext_dir=$dir
    fi
  fi
  if test "$locale_dir" = FAILED && test -f $dir/shar \
     && ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
  then
    locale_dir=`$dir/shar --print-text-domain-dir`
  fi
done
IFS="$save_IFS"
if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
then
  echo=echo
else
  TEXTDOMAINDIR=$locale_dir
  export TEXTDOMAINDIR
  TEXTDOMAIN=sharutils
  export TEXTDOMAIN
  echo="$gettext_dir/gettext -s"
fi
touch -am 1231235999 $$.touch >/dev/null 2>&1
if test ! -f 1231235999 && test -f $$.touch; then
  shar_touch=touch
else
  shar_touch=:
  echo
  $echo 'WARNING: not restoring timestamps.  Consider getting and'
  $echo "installing GNU \`touch', distributed in GNU File Utilities..."
  echo
fi
rm -f 1231235999 $$.touch
#
if mkdir _sh06172; then
  $echo 'x -' 'creating lock directory'
else
  $echo 'failed to create lock directory'
  exit 1
fi
# ============= wrap_pwd/README.txt ==============
if test ! -d 'wrap_pwd'; then
  $echo 'x -' 'creating directory' 'wrap_pwd'
  mkdir 'wrap_pwd'
fi
if test -f 'wrap_pwd/README.txt' && test "$first_param" != -c; then
  $echo 'x -' SKIPPING 'wrap_pwd/README.txt' '(file already exists)'
else
  $echo 'x -' extracting 'wrap_pwd/README.txt' '(text)'
  sed 's/^X//' << 'SHAR_EOF' > 'wrap_pwd/README.txt' &&
X	wrap_pwd README
X	TOYODA Eizi
X	Graduate School of Mathematical Sciences, Univ. Tokyo
X	toyoda@gfd-dennou.org
X	28 Dec 1997 (last update 12 Jan 1999)
X
1. INTRODUCTION
X
X	wrap_pwd is wrapper routines set of getpwnam(3) and getpwuid(3)
X	that looks up the encrypted shadow passwrod.
X	It is useful for porting old unix software, that assumes
X	getpwnam(3) or getpwuid(3) to lookup password in /etc/passwd,
X	to a new unix (or equivalent) like SunOS 5.x or Debian GNU/Linux.
X
2. TESTING
X
X	This Makefile is only for TESTING function.
X	Firstly, try `ls -l /etc/shadow` (or equivalent) to
X	determine what uid and gid is needed.
X	Maybe you have to edit Makefile and change ROOTGROUP macro. 
X
X	$ make
X	$ su 
X	# make setuid		(or # make setgid)
X	# exit
X	$ make test
X
3. USAGE
X
X	a. Look up all '#include <pwd.h>' in the source code you are porting.
X	b. Insert '#include "wrap_pwd.h"' just after them.
X	c. Compile wrap_pwd.c.
X	d. Make sure your C compiler to link wrap_pwd.o.
X
4. COPYRIGHT ISSUE
X
X	This routine is intended to be a free software.
X	See COPYING.TXT for detail.
SHAR_EOF
  $shar_touch -am 011205191999 'wrap_pwd/README.txt' &&
  chmod 0664 'wrap_pwd/README.txt' ||
  $echo 'restore of' 'wrap_pwd/README.txt' 'failed'
  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
    || $echo 'wrap_pwd/README.txt:' 'MD5 check failed'
4001b60b3ac0c0c19ec2e526a0abbd20  wrap_pwd/README.txt
SHAR_EOF
  else
    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'wrap_pwd/README.txt'`"
    test 1055 -eq "$shar_count" ||
    $echo 'wrap_pwd/README.txt:' 'original size' '1055,' 'current size' "$shar_count!"
  fi
fi
# ============= wrap_pwd/Makefile ==============
if test -f 'wrap_pwd/Makefile' && test "$first_param" != -c; then
  $echo 'x -' SKIPPING 'wrap_pwd/Makefile' '(file already exists)'
else
  $echo 'x -' extracting 'wrap_pwd/Makefile' '(text)'
  sed 's/^X//' << 'SHAR_EOF' > 'wrap_pwd/Makefile' &&
# makefile for testing
X
all: pwtest sptest wraptest
X
pwtest: pwtest.c
X	$(CC) -o pwtest -DSIMPLE pwtest.c
X
sptest: sptest.c
X	$(CC) -o sptest sptest.c
X
wraptest: pwtest.c wrap_pwd.c
X	$(CC) -o wraptest pwtest.c wrap_pwd.c
X
ROOTBIN=sptest wraptest
ROOTGROUP=root
ROOTUSER=root
X
setgid:
X	chgrp $(ROOTGROUP)	$(ROOTBIN)
X	chmod g+s		$(ROOTBIN)
X
setuid:
X	chown $(ROOTUSER)	$(ROOTBIN)
X	chmod u+s		$(ROOTBIN)
X
test:
X	sptest `whoami`
X	pwtest `whoami`
X	wraptest `whoami`
SHAR_EOF
  $shar_touch -am 122800391997 'wrap_pwd/Makefile' &&
  chmod 0664 'wrap_pwd/Makefile' ||
  $echo 'restore of' 'wrap_pwd/Makefile' 'failed'
  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
    || $echo 'wrap_pwd/Makefile:' 'MD5 check failed'
5c4cb153eb7dbbafbb063e3205e3b8b6  wrap_pwd/Makefile
SHAR_EOF
  else
    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'wrap_pwd/Makefile'`"
    test 458 -eq "$shar_count" ||
    $echo 'wrap_pwd/Makefile:' 'original size' '458,' 'current size' "$shar_count!"
  fi
fi
# ============= wrap_pwd/wrap_pwd.c ==============
if test -f 'wrap_pwd/wrap_pwd.c' && test "$first_param" != -c; then
  $echo 'x -' SKIPPING 'wrap_pwd/wrap_pwd.c' '(file already exists)'
else
  $echo 'x -' extracting 'wrap_pwd/wrap_pwd.c' '(text)'
  sed 's/^X//' << 'SHAR_EOF' > 'wrap_pwd/wrap_pwd.c' &&
/* wrap_pwd.c: Copyright (C) by TOYODA Eizi, 1997.  All rights reserved.
X * see COPYING.TXT for license terms.
X */
X
#include <stdio.h>
#include <sys/types.h>
#include <pwd.h>
#include <shadow.h>
X
#define _WRAP_PWD_NO_MACROS
#include "wrap_pwd.h"
X
static struct passwd	pw;
X
X	struct passwd *
wrap_getpwnam(const char *name)
{
X	struct passwd	*xpw;
X	struct spwd	*shadow;
X	pw = *(xpw = getpwnam(name));
X	if ((shadow = getspnam(name)) != NULL) {
X		pw.pw_passwd = shadow->sp_pwdp;
X	}
X	return &pw;
}
X
X	struct passwd *
wrap_getpwuid(uid_t uid)
{
X	struct passwd	*xpw;
X	struct spwd	*shadow;
X	pw = *(xpw = getpwuid(uid));
X	if ((shadow = getspnam(pw.pw_name)) != NULL) {
X		pw.pw_passwd = shadow->sp_pwdp;
X	}
X	return &pw;
}
X
SHAR_EOF
  $shar_touch -am 011205211999 'wrap_pwd/wrap_pwd.c' &&
  chmod 0664 'wrap_pwd/wrap_pwd.c' ||
  $echo 'restore of' 'wrap_pwd/wrap_pwd.c' 'failed'
  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
    || $echo 'wrap_pwd/wrap_pwd.c:' 'MD5 check failed'
4d9acea5e19eedb409d282d4c4f60c22  wrap_pwd/wrap_pwd.c
SHAR_EOF
  else
    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'wrap_pwd/wrap_pwd.c'`"
    test 711 -eq "$shar_count" ||
    $echo 'wrap_pwd/wrap_pwd.c:' 'original size' '711,' 'current size' "$shar_count!"
  fi
fi
# ============= wrap_pwd/pwtest.c ==============
if test -f 'wrap_pwd/pwtest.c' && test "$first_param" != -c; then
  $echo 'x -' SKIPPING 'wrap_pwd/pwtest.c' '(file already exists)'
else
  $echo 'x -' extracting 'wrap_pwd/pwtest.c' '(text)'
  sed 's/^X//' << 'SHAR_EOF' > 'wrap_pwd/pwtest.c' &&
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <pwd.h>
#ifndef SIMPLE
#include "wrap_pwd.h"
#endif
X
X	int
main(int argc, char **argv)
{
X	int		i;
X	uid_t		u;
X	struct passwd	*pw;
X
X	if (argc <= 1) {
X		printf("usage: %s {uid|username} ...\n", argv[0]);
X		return 0;
X	}
X
X	for (i = 1; i < argc; i++) {
X		if (u = atoi(argv[i])) {
X			if ((pw = getpwuid(u)) == NULL) {
X				fprintf(stderr, "%d: invalid uid\n", u);
X				continue;
X			}
X		} else {
X			if ((pw = getpwnam(argv[i])) == NULL) {
X				fprintf(stderr,
X				"%s: invalid username\n", argv[i]);
X				continue;
X			}
X		}
X		printf("%s:%s:%d:%d:%s:%s:%s\n",
X		pw->pw_name, pw->pw_passwd,
X		pw->pw_uid, pw->pw_gid,
X		pw->pw_gecos, pw->pw_dir, pw->pw_shell);
X	}
X	return 0;
}
X
SHAR_EOF
  $shar_touch -am 122800251997 'wrap_pwd/pwtest.c' &&
  chmod 0664 'wrap_pwd/pwtest.c' ||
  $echo 'restore of' 'wrap_pwd/pwtest.c' 'failed'
  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
    || $echo 'wrap_pwd/pwtest.c:' 'MD5 check failed'
5e20faaa767ab9880887b0ed44c87c5d  wrap_pwd/pwtest.c
SHAR_EOF
  else
    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'wrap_pwd/pwtest.c'`"
    test 733 -eq "$shar_count" ||
    $echo 'wrap_pwd/pwtest.c:' 'original size' '733,' 'current size' "$shar_count!"
  fi
fi
# ============= wrap_pwd/sptest.c ==============
if test -f 'wrap_pwd/sptest.c' && test "$first_param" != -c; then
  $echo 'x -' SKIPPING 'wrap_pwd/sptest.c' '(file already exists)'
else
  $echo 'x -' extracting 'wrap_pwd/sptest.c' '(text)'
  sed 's/^X//' << 'SHAR_EOF' > 'wrap_pwd/sptest.c' &&
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <shadow.h>
#include <time.h>
X
X	char *
lctime(long itime)
{
X	time_t	t;
X	t = itime;
X	return ctime(&t);
}
X
X
X	int
main(int argc, char **argv)
{
X	int		i;
X	uid_t		u;
X	struct spwd	*sp;
X
X	if (argc <= 1) {
X		printf("usage: %s username ...\n", argv[0]);
X		return 0;
X	}
X
X	for (i = 1; i < argc; i++) {
X		if ((sp = getspnam(argv[i])) == NULL) {
X			fprintf(stderr,
X "%s: invalid name or fail of getspnam\n", argv[i]);
X			continue;
X		}
X		printf("username:\t\"%s\"\n", sp->sp_namp);
X		printf("password:\t\"%s\"\n", sp->sp_pwdp);
X		printf("last change:\t%s", lctime(sp->sp_lstchg));
X		printf("min to change:\t%ld days\n", sp->sp_min);
X		printf("max to change:\t%ld days\n", sp->sp_max);
X		printf("warning period:\t%ld\n", sp->sp_warn);
X		printf("max inactive:\t%ld days\n", sp->sp_inact);
X		printf("account expiry:\t%s", lctime(sp->sp_expire));
X		printf("flag:\t%ld days\n", sp->sp_flag);
X		putchar('\n');
X	}
X	return 0;
}
X
SHAR_EOF
  $shar_touch -am 030616461998 'wrap_pwd/sptest.c' &&
  chmod 0664 'wrap_pwd/sptest.c' ||
  $echo 'restore of' 'wrap_pwd/sptest.c' 'failed'
  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
    || $echo 'wrap_pwd/sptest.c:' 'MD5 check failed'
f5d0118a23c066786b16a0311792b864  wrap_pwd/sptest.c
SHAR_EOF
  else
    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'wrap_pwd/sptest.c'`"
    test 977 -eq "$shar_count" ||
    $echo 'wrap_pwd/sptest.c:' 'original size' '977,' 'current size' "$shar_count!"
  fi
fi
# ============= wrap_pwd/COPYING.TXT ==============
if test -f 'wrap_pwd/COPYING.TXT' && test "$first_param" != -c; then
  $echo 'x -' SKIPPING 'wrap_pwd/COPYING.TXT' '(file already exists)'
else
  $echo 'x -' extracting 'wrap_pwd/COPYING.TXT' '(binary)'
  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
begin 600 wrap_pwd/COPYING.TXT
M0V]P>7)I9VAT("AC*2!43UE/1$$@16EZ:2P@,3DY."X@($%L;"!R:6=H=',@
M<F5S97)V960N"@I2961I<W1R:6)U=&EO;B!A;F0@=7-E(&EN('-O=7)C92!A
M;F0@8FEN87)Y(&9O<FUS+"!W:71H(&]R('=I=&AO=70*;6]D:69I8V%T:6]N
M+"!A<F4@<&5R;6ET=&5D('!R;W9I9&5D('1H870@=&AE(&9O;&QO=VEN9R!C
M;VYD:71I;VYS"F%R92!M970Z"C$N(%)E9&ES=')I8G5T:6]N<R!O9B!S;W5R
M8V4@8V]D92!M=7-T(')E=&%I;B!T:&4@86)O=F4@8V]P>7)I9VAT"B`@(&YO
M=&EC92P@=&AI<R!L:7-T(&]F(&-O;F1I=&EO;G,@86YD('1H92!F;VQL;W=I
M;F<@9&ES8VQA:6UE<BX*,BX@4F5D:7-T<FEB=71I;VYS(&EN(&)I;F%R>2!F
M;W)M(&UU<W0@<F5P<F]D=6-E('1H92!A8F]V92!C;W!Y<FEG:'0*("`@;F]T
M:6-E+"!T:&ES(&QI<W0@;V8@8V]N9&ET:6]N<R!A;F0@=&AE(&9O;&QO=VEN
M9R!D:7-C;&%I;65R(&EN('1H90H@("!D;V-U;65N=&%T:6]N(&%N9"]O<B!O
M=&AE<B!M871E<FEA;',@<')O=FED960@=VET:"!T:&4@9&ES=')I8G5T:6]N
M+@HS+B!!;&P@861V97)T:7-I;F<@;6%T97)I86QS(&UE;G1I;VYI;F<@9F5A
M='5R97,@;W(@=7-E(&]F('1H:7,@<V]F='=A<F4*("`@;75S="!D:7-P;&%Y
M('1H92!F;VQL;W=I;F<@86-K;F]W;&5D9V5M96YT.@H)5&AI<R!P<F]D=6-T
M(&EN8VQU9&5S('-O9G1W87)E(&1E=F5L;W!E9"!B>2!43UE/1$$@16EZ:2X*
M-"X@3F5I=&AE<B!T:&4@;F%M92!O9B!T:&4@875T:&]R(&%N9"!T:&4@8V]N
M=')I8G5T;W)S"B`@(&UA>2!B92!U<V5D('1O(&5N9&]R<V4@;W(@<')O;6]T
M92!P<F]D=6-T<R!D97)I=F5D(&9R;VT@=&AI<R!S;V9T=V%R90H@("!W:71H
M;W5T('-P96-I9FEC('!R:6]R('=R:71T96X@<&5R;6ES<VEO;BX*"E1(25,@
M4T]&5%=!4D4@25,@4%)/5DE$140@0ED@5$A%($%55$A/4B!!3D0@5$A%($-/
M3E1224)55$]24R!@8$%3($E3)R<@04Y$"D%.62!%6%!215-3($]2($E-4$Q)
M140@5T%24D%.5$E%4RP@24Y#3%5$24Y'+"!"550@3D]4($Q)34E4140@5$\L
M(%1(10I)35!,245$(%=!4E)!3E1)15,@3T8@34520TA!3E1!0DE,2519($%.
M1"!&251.15-3($9/4B!!(%!!4E1)0U5,05(@4%524$]310I!4D4@1$E30TQ!
M24U%1"X@($E.($Y/($5614Y4(%-(04Q,(%1(12!!551(3U(@04Y$(%1(12!#
M3TY44DE"551/4E,@0D4@3$E!0DQ%"D9/4B!!3ED@1$E214-4+"!)3D1)4D5#
M5"P@24Y#241%3E1!3"P@4U!%0TE!3"P@15A%35!,05)9+"!/4B!#3TY315%5
M14Y424%,"D1!34%'15,@*$E.0TQ51$E.1RP@0E54($Y/5"!,24U)5$5$(%1/
M+"!04D]#55)%345.5"!/1B!354)35$E4551%($=/3T13"D]2(%-%4E9)0T53
M.R!,3U-3($]&(%5312P@1$%402P@3U(@4%)/1DE44SL@3U(@0E5324Y%4U,@
M24Y415)255!424].*0I(3U=%5D52($-!55-%1"!!3D0@3TX@04Y9(%1(14]2
M62!/1B!,24%"24Q)5%DL(%=(151(15(@24X@0T].5%)!0U0L(%-44DE#5`I,
M24%"24Q)5%DL($]2(%1/4E0@*$E.0TQ51$E.1R!.14=,24=%3D-%($]2($]4
M2$525TE312D@05))4TE.1R!)3B!!3ED@5T%9"D]55"!/1B!42$4@55-%($]&
M(%1(25,@4T]&5%=!4D4L($5614X@248@041625-%1"!/1B!42$4@4$]34TE"
M24Q)5%D@3T8*4U5#2"!$04U!1T4N"@HM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+0H@($9O;&QO=VEN9R!I<R!T:&4@2F%P86YE<V4@=')A;G-L871I;VX@
M;V8@=&AE('1E>'0@;&ES=&5D(&%B;W9E+@H@36]D:69I97)S(&]R(')E9&ES
M=')I8G5T97)S(&]F('1H92!S;V9T=V%R92!M87D@<F5M;W9E(&ET"B!I9B!T
M:&5Y(&-A;FYO="!H86YD;&4@2F%P86YE<V4N"B`@(+#*LKRDS[NRN<VDSJ2_
MI.')U:2QI+_&_,O<N.S,]<JXI,>DN:&CQOS+W+CLI*RPMZ2HI,JDI+K&Q]O)
MV[S4I,\*(+KOO?RDMZ3&I.*DJZ3>I*2DWJ2[I/,N"BTM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM"@D**&,I(,NMQ<2QT;O*H:/(Q[BBO>K-K:&C"@JEO:&\
MI;FDWJ2_I,^ET*6DI<JEZJ3'I,ZZQL?;R=NAILWXS=&D\J&BRM&YN:3.I**D
MZZ3*I+>DRZ2KI*ND[Z3II+H*L,JRO*3.OO*W[Z3+Q:RYYZ2YI.NXPJ3JM?;"
M^J2YI.NAHPH*,2X@I;VAO*6YI;.AO*7)I,ZZQL?;R=NDSZ&BON6DSL/XNNZX
MHJ3.Q,S#SJ&BI+.DSK7VPOJ^\K?OI>JEN:7(I*JDZ*33"K#*LKRDSLC=QZ>D
M\LK=N_VDMZ3*I+&D[*30I,JDZ:3*I*2AHPHRH:6ET*6DI<JEZJ3'I,ZZQL?;
MR=NDRZ2BI+^DPZ3&I,^^Y:3.P_BZ[KBBI,[$S,/.H:*DLZ3.M?;"^K[RM^^E
MZJ6YI<@*I*JDZ*33L,JRO*3.R-W'IZ3RNL:XO:2WI,JDL:3LI-"DRJ3II,JD
MI*&C"C.AI:2SI,ZEO:75I<BEIJ6GI:*DSL;#Q*>DJ[O(S=&DRZ3$I*2DQKC`
MM=JDN:3KI+FDV:3&I,ZYK;GPP<>ZX*2LL,JRO*3."KS5O*VD\LF]O*BDMZ3*
MI+&D[*30I,JDZ:3*I*0Z"J2SI,[`O<G*I,^AHLNMQ<2QT;O*I,NDZ*3#I,:S
MJ\BOI+6D[*2_I;VEU:7(I::EIZ6BI/*TWJ3@H:,*-*&EN_;!L*3+O?',S*3'
MM?;"^J3RQL"DZZ2SI,BDRJ2OH:*DLZ3.I;VEU:7(I::EIZ6BI*NDZ<?)P+BD
MN:3KP+W)RJ3."LZBO?&DK:3>I+^DS\C.Q^3"I;_*I,ZDOZ3AI,NZ[KS4I,[,
MOK[.I/*[R,W1I+>DQJ3/I,JDZ:3*I*2AHPH*I+.DSJ6]I=6ER*6FI:>EHJ3/
MNNZ\U*3+I.BDPZ3&H=:XO;[UI,ZDWJ3>I,>AU\3SMJ&DM:3LI.L*I,ZDQZ2B
MI,.DQJ&BN]2^[,"MI.3&P\3JI,[,W,6JI,ZDOZ3AI,[%K+GGP*VDR[38I+FD
MZ\K=OMJD\K3>I."AH@JDMZ2KI+>DLZ3LI.FDR[C"Q.JDM:3LI,JDI*&BL.S`
MVJ3.S,"\J,6JI**DZZ2DI,^PQ<S;I,[*W;[:I/*DMZ3*I*2AHR`*"J2SI,ZE
MO:75I<BEIJ6GI:*DSKO(S=&DRZ3HI,.DQLBOP+BDN:3KI**DZ:3FI.O$OL#<
MH:*TUL#<H:*V]LBOQ:JAH@K%M;>_Q:JAHJ2BI.NDI*3/M^NRS,6JPKNSLB`H
MOJ;)RJ2BI.NDI*3/I;6AO*73I;FDSL2TPZ.DHJ3KI*2DS\+EPMBAH@K-^,W1
MH::EQZ&\I;^AILWXL=>DSL*[O+JAHJ3>I+^DSZ6UH;RETZ6YP^;#QZ3RM-ZD
MX*2LI+.D[*3+N,+$ZJ2UI.RDRJ2D*0JDR\+0I+>DQJ&BI+^DR*2HI+VDSJ3H
MI*:DRL*[L[*DSK+$Q[W`K:3+I,2DI*3&P\ZDZ:2UI.RDQJ2DI+^^[+GGI,>D
MXJ&B"K?`S/.AIK7!S+.AIB`HLN&\NJ3>I+^DSZ2]I,ZSL*3.*2#)U,NAN=2P
MV:3*I,FDSJ2DI*NDRJ3KP-7'I*3.S?W/P*3+"J3HI,.DQJ3BH:*Z[KS4I,^D
<O:3.P-7'I*3RR>FDIJ3BI,ZDQZ3/I,JDI*&C"J3H
`
end
SHAR_EOF
  $shar_touch -am 011205151999 'wrap_pwd/COPYING.TXT' &&
  chmod 0644 'wrap_pwd/COPYING.TXT' ||
  $echo 'restore of' 'wrap_pwd/COPYING.TXT' 'failed'
  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
    || $echo 'wrap_pwd/COPYING.TXT:' 'MD5 check failed'
2f8b84dd09b6c697979cfb52fb9c8e1f  wrap_pwd/COPYING.TXT
SHAR_EOF
  else
    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'wrap_pwd/COPYING.TXT'`"
    test 3268 -eq "$shar_count" ||
    $echo 'wrap_pwd/COPYING.TXT:' 'original size' '3268,' 'current size' "$shar_count!"
  fi
fi
# ============= wrap_pwd/wrap_pwd.h ==============
if test -f 'wrap_pwd/wrap_pwd.h' && test "$first_param" != -c; then
  $echo 'x -' SKIPPING 'wrap_pwd/wrap_pwd.h' '(file already exists)'
else
  $echo 'x -' extracting 'wrap_pwd/wrap_pwd.h' '(text)'
  sed 's/^X//' << 'SHAR_EOF' > 'wrap_pwd/wrap_pwd.h' &&
/* wrap_pwd.h: Copyright (C) by TOYODA Eizi, 1997.  All rights reserved.
X * see COPYING.TXT for license terms.
X */
X
#ifndef _WRAP_PWD_H
# define _WRAP_PWD_H
X
struct passwd *wrap_getpwnam(const char *name);
struct passwd *wrap_getpwuid(uid_t uid);
X
# ifndef _WRAP_PWD_NO_MACROS
#  define getpwnam(name)	wrap_getpwnam(name)
#  define getpwuid(uid)		wrap_getpwuid(uid)
# endif /* _WRAP_PWD_NO_MACROS */
X
#endif /* _WRAP_PWD_H */
SHAR_EOF
  $shar_touch -am 011205211999 'wrap_pwd/wrap_pwd.h' &&
  chmod 0664 'wrap_pwd/wrap_pwd.h' ||
  $echo 'restore of' 'wrap_pwd/wrap_pwd.h' 'failed'
  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
    || $echo 'wrap_pwd/wrap_pwd.h:' 'MD5 check failed'
9829b5222d78af87181ff2f9cc4b5a4e  wrap_pwd/wrap_pwd.h
SHAR_EOF
  else
    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'wrap_pwd/wrap_pwd.h'`"
    test 426 -eq "$shar_count" ||
    $echo 'wrap_pwd/wrap_pwd.h:' 'original size' '426,' 'current size' "$shar_count!"
  fi
fi
rm -fr _sh06172
exit 0
