From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Sun, 23 Sep 2007 02:58:35 +0400 From: Alexey Tourbin To: devel@lists.altlinux.org Message-ID: <20070922225835.GT5297@solemn.turbinal> Mail-Followup-To: devel@lists.altlinux.org, "Dmitry V. Levin" References: <20070912090618.GB5297@solemn.turbinal> <20070922223541.GS5297@solemn.turbinal> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="s7c4rk9vxd+T4GBL" Content-Disposition: inline In-Reply-To: <20070922223541.GS5297@solemn.turbinal> Cc: "Dmitry V. Levin" Subject: Re: [devel] pam0-config-1.4.3-alt1 X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.9 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2007 23:00:59 -0000 Archived-At: List-Archive: List-Post: --s7c4rk9vxd+T4GBL Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Sep 23, 2007 at 02:35:41AM +0400, Alexey Tourbin wrote: > > pam0-config-1.4.3-alt1 Provides pam0(other) > > -pam0-config-1.4.3-alt1 Provides pam0(system-auth) > > pam0-config-1.4.3-alt1 Provides pam0(system-auth-ldap) > > pam0-config-1.4.3-alt1 Provides pam0(system-auth-local) > > -pam0-config-1.4.3-alt1 Provides pam0(system-auth-use_first_pass) > > pam0-config-1.4.3-alt1 Provides pam0(system-auth-use_first_pass-ldap) >=20 > =E9=DA=CD=C5=CE=C5=CE=C9=C5 =DA=C1=D7=C9=D3=C9=CD=CF=D3=D4=C5=CA =D5 =CD= =C5=CE=D1 =CE=C5 =D7=CF=D3=D0=D2=CF=C9=DA=D7=CF=C4=C9=D4=D3=D1. :( =F1 =D7=D3=A3 =D0=CF=CE=D1=CC! =E4=C1, =D5 =DC=D4=CF=C7=CF =D0=C1=CB=C5=D4= =C1 =D3=CC=C9=DB=CB=CF=CD =D3=D0=C5=C3=C9=C6=C9=DE=C5=D3=CB=C9=CD =CF=C2=D2= =C1=DA=CF=CD =C6=CF=D2=CD=C9=D2=D5=C0=D4=D3=D1 =DA=C1=D7=C9=D3=C9=CD=CF=D3=D4=C9. Requires: %([ -x "%SOURCE1" ] && RPM_LIB=3D%_lib RPM_LIBDIR=3D%_libdir PAM_= SO_SUFFIX=3D PAM_NAME_SUFFIX=3D0 RPM_BUILD_ROOT=3D%buildroot %SOURCE1 %SOURC Provides: %([ -x "%SOURCE1" ] && PAM_SO_SUFFIX=3D PAM_NAME_SUFFIX=3D0 RPM_B= UILD_ROOT=3D%buildroot %SOURCE1 %SOURCE0 prov || echo unknown) =F3=CB=D2=C9=D0=D4 %SOURCE1 =CB=CF=D4=CF=D2=D9=CA pam-config-deps.sh =D7=D9= =DA=D9=D7=C1=C5=D4 /usr/lib/rpm/pam.{req,prov} =D3 =EF=F4=EE=EF=F3=F4=E9=F4=E5=EC=F8=EE=F9=ED= =E9 =D0=D5=D4=D1=CD=C9: 19 for f in */*; do 20 /usr/lib/rpm/pam."$t" "$f" =F7=CF =D7=D3=C5=C8 =D3=D4=C1=CE=C4=C1=D2=D4=CE=D9=C8 /usr/lib/rpm/* =D3=CB= =D2=C9=D0=D4=C1=C8, =C5=D3=CC=C9 =CF=CE=C9 =C9=D3=D0=CF=CC=D8=DA=D5=C0=D4 =D3=D4=C1=CE=C4=C1=D2=CE=D4=D5=C0 =D0=D2=CF=C3=C5=C4=D5=D2=D5 =CF=C2=D2=C1= =C2=CF=D4=CB=C9 =C1=D2=C7=D5=CD=C5=CE=D4=CF=D7 ArgvFileAtion, =D0=D2=CF=C9= =D3=C8=CF=C4=C9=D4 =C2=CF=CC=C5=C5 =C9=CC=C9 =CD=C5=CE=C5=C5 =D0=D2=C9=CE=D5=C4=C9=D4=C5=CC=D8= =CE=C1=D1 =CB=C1=CE=CF=CE=C9=CB=C1=CC=C9=DA=C1=C3=C9=D1 =EF=F4=EE=EF=F3=E9= =F4=E5=EC=F8=EE=F9=E8 =D0=D5=D4=C5=CA. /usr/lib/rpm/pam.req: 20 . /usr/lib/rpm/functions 21 [ $# -eq 1 ] && [ -n "$1" -a -z "${1##/*}" ] || 22 { ArgvFileAction "$0" "$@"; exit; } =FC=D4=CF =D0=D2=CF=D3=D4=CF =CE=C5=CB=CF=D4=CF=D2=D9=CA "=C8=C1=CB", =CB= =CF=D4=CF=D2=D9=CA =D1 =C4=CF=C2=C1=D7=C9=CC =D7 pam.req, =DE=D4=CF=C2=D9 =D3=D2=C1=DA=D5 =D6=C5 =CE=C5 =D0=C5=D2=C5=D0=C9=D3=D9=D7=C1=D4=D8 pam.req = =C3=C5=CC=C9=CB=CF=CD (=D3=CF =D7=D2=C5=CD=C5=CE=C5=CD =CF=CE =D0=C5=D2=C5= =D0=C9=DB=C5=D4=D3=D1). =F3=D5=D4=D8 =DA=C4=C5=D3=D8 =D7 =C4=D2=D5=C7=CF=CD. =F0=D2=C9=CE=D5=C4=C9= =D4=C5=CC=D8=CE=C1=D1 =CB=C1=CE=CF=CE=C9=CB=C1=CC=C9=DA=C1=C3=C9=D1 =CF=D4= =CE=CF=D3=C9=D4=C5=CC=D8=CE=D9=C8 =D0=D5=D4=C5=CA =CE=C1 =D3=C1=CD=CF=CD =C4=C5=CC=C5 =D0=D2=CF=C9=D3=C8=CF=C4=C9=D4 =D7 Argv= FileAction =C9=DA /usr/lib/rpm/functions. =F4=C1=CB =D7=CF=D4, =D2=C1=CE=D8=DB=C5 =DC=D4=C1 =CB=C1=CE=CF=CE=C9=CB=C1= =CC=C9=DA=C1=C3=C9=D1 =C2=D9=CC=C1 =D3=CC=C9=DB=CB=CF=CD =CE=C1=D7=D1=DA=DE= =C9=D7=CF=CA. =EB=C1=CE=CF=CE=C9=CB=C1=CC=C9=DA=C9=D2=CF=D7=C1=CC=D3=D1 =D7 =D4=CF=CD =DE= =C9=D3=CC=C5 =C9 =D0=CF=D3=CC=C5=C4=CE=C9=CA =CB=CF=CD=D0=CF=CE=C5=CE=D4 = =D0=D5=D4=C9. =F4=C5=D0=C5=D2=D8 =CF=D3=D4=C1=C5=D4=D3=D1 =D4=CF=CC=D8=CB=CF =DA=C1=CD=C5= =D4=C9=D4=D8, =DE=D4=CF =D5=C2=D2=C1=D7=DB=C9=C5=D3=D1 =DA=C1=D7=C9=D3=C9= =CD=CF=D3=D4=C9 =D1=D7=CC=D1=C0=D4=D3=D1 =D3=C9=CD=CC=C9=CE=CB=C1=CD=C9 zsh$ ls -l pam-config/*(@) lrwxrwxrwx 1 at at 17 Sep 23 02:00 pam-config/system-auth -> system-auth-lo= cal lrwxrwxrwx 1 at at 32 Sep 23 02:00 pam-config/system-auth-use_first_pass ->= system-auth-use_first_pass-local zsh$ =F0=CF=CC=CE=C1=D1 =CB=C1=CE=CF=CE=C9=CB=C1=CC=C9=DA=C1=C3=C9=D1 =C1=C2=D3= =CF=CC=C0=D4=CE=CF=C7=CF =D0=D5=D4=C9 =D0=D2=C9=D7=CF=C4=C9=CC=C1 =CB =D4= =CF=CD=D5, =DE=D4=CF =D7=CD=C5=D3=D4=CF system-auth =CE=C1 =D3=C1=CD=CF=CD =C4=C5=CC=C5 =D0=CF=D7=D4=CF=D2=CE=CF = =CF=C2=D2=C1=C2=C1=D4=D9=D7=C1=CC=D3=D1 system-auth-local =C9 =D4.=C4. =F0=CF=D4=CF=CD =D7 ArgvFileAction =D1 =D3=C4=C5=CC=C1=CC =CB=C1=CE=CF=CE= =C9=CB=C1=CC=C9=DA=C1=C3=C9=C0 =CF=D4=CE=CF=D3=C9=D4=C5=CC=D8=CE=D9=C8 =D0= =D5=D4=C5=CA =ED=E5=EE=E5=E5 =EE=E1=F7=F1=FA=FE=E9=F7=EF=EA, =D4=CF =C5=D3=D4=D8 =D0=CF = =D3=D5=D4=C9 =D7 =D2=D1=C4=C5 =D3=CC=D5=DE=C1=C5=D7 =C2=CF=CC=C5=C5 =D0=D2= =C5=C4=D0=CF=DE=D4=C9=D4=C5=CC=D8=CE=CF=CA. =E4=CC=D1 =DC=D4=CF=C7=CF =C2=D9=CC=C1 =D2=C5=C1=CC=C9=DA=CF=D7=C1=CE=C1 = =C4=CF=D7=CF=CC=D8=CE=CF =D0=D2=CF=D3=D4=C1=D1 =C9 =C4=C1=D6=C5 =D7 =CE=C5= =CB=CF=D4=CF=D2=CF=CD =D3=CD=D9=D3=CC=C5 =D3=CF=CD=CE=C9=D4=C5=CC=D8=CE=C1=D1 =C6=D5=CE=CB=C3=C9=D1 CanonPath. =EE= =CF, =CB=C1=CB =CF=CB=C1=DA=C1=CC=CF=D3=D8, =CF=CE=C1 =D5=C4=C1=DE=CE=CF = =D2=C5=DB=C1=C5=D4 =C3=C5=CC=D9=CA =D2=D1=C4 =C4=CF=D7=CF=CC=D8=CE=CF =D4=CF=CE=CB=C9=C8 =D0= =D2=CF=C2=CC=C5=CD =D3=D2=C1=DA=D5 =D7 =CE=C5=D3=CB=CF=CC=D8=CB=C9=C8 =CD= =C5=D3=D4=C1=C8. commit 5a5bd821337d620c8dae75617d5351bdc2061853 Author: Alexey Tourbin Date: Mon Aug 27 20:41:02 2007 +0400 scripts/functions: CanonPath: new function (canonicalize each path comp= onent except for the last) =20 This is actually a DWIM-style hack. It does what we want but I cannot think of a better name. The idea is that sometimes we want to clean up path name, possibly following symbolic links, except for the last component, which we want to keep as is. =20 $ sh -c '. scripts/functions; CanonPath /etc/init.d/functions' /etc/rc.d/init.d/functions $ sh -c '. scripts/functions; CanonPath /usr/bin/../bin/perl' /usr/bin/perl $ =20 So actually it does a few different things: 1) prepend $PWD if needed; 2) cleanup dirname; 3) canonicalize dirname with respect to symbolic li= nks. =20 Now the question is how to process symbolic links which targets are directories, e.g. /etc/init.d ? My answer is that both "/etc/init.d" and "/etc/init.d/", as well as "/etc/init.d/." should yield the same result, which is "/etc/rc.d/init.d". diff --git a/scripts/functions b/scripts/functions index ef43b7b..e55e30a 100644 --- a/scripts/functions +++ b/scripts/functions @@ -99,6 +99,23 @@ RunMethods() done } =20 +CanonPath() +{ + local f=3D"$1" f2; shift + if [ -d "$f" ]; then + f2=3D$(readlink -vm -- "$f") + elif [ -L "$f" ]; then + local d + d=3D$(dirname -- "$f") + d=3D$(readlink -vm -- "$d") + f2=3D"$d/${f##*/}" + else + f2=3D$(readlink -vm -- "$f") + fi + [ "$f" =3D "$f2" ] || Verbose "CanonPath: $f -> $f2" + echo "$f2" +} + ArgvFileAction() { local av_action=3D"$1"; shift @@ -126,14 +143,14 @@ ArgvFileAction() local av_f if [ $# -gt 0 ]; then for av_f; do - [ -n "$av_f" -a -z "${av_f##/*}" ] || av_f=3D$(readlink -vm -- "$av_f") + [ -n "$av_f" -a -z "${av_f##/*}" ] || av_f=3D$(CanonPath "$av_f") Debug "processing $av_f" "$av_action" "$av_f" done else [ -t 0 ] && Info "reading file list from standard input" while IFS=3D read -r av_f; do - [ -n "$av_f" -a -z "${av_f##/*}" ] || av_f=3D$(readlink -vm -- "$av_f") + [ -n "$av_f" -a -z "${av_f##/*}" ] || av_f=3D$(CanonPath "$av_f") Debug "processing $av_f" "$av_action" "$av_f" done --s7c4rk9vxd+T4GBL Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (GNU/Linux) iD8DBQFG9Z4bfBKgtDjnu0YRAt5KAJ0Zy40qRECaKw5vL/QwRI38zICmggCg2flo 7qv1eNTqQiYMSaKbUH+rTgg= =z62K -----END PGP SIGNATURE----- --s7c4rk9vxd+T4GBL--