CVSROOT: /cvs/dm Module name: dmraid Changes by: zkabelac@xxxxxxxxxxxxxx 2010-05-28 12:32:48 Added files: tools : relpath.awk Log message: Reused relpath.awk script for relative paths from lvm2 Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/dmraid/tools/relpath.awk.diff?cvsroot=dm&r1=NONE&r2=1.1 /cvs/dm/dmraid/tools/relpath.awk,v --> standard output revision 1.1 --- dmraid/tools/relpath.awk +++ - 2010-05-28 12:32:48.876050000 +0000 @@ -0,0 +1,40 @@ +#!/usr/bin/awk -f +# +# Copyright (C) 2010 Red Hat, Inc. All rights reserved. +# +# This file is part of LVM2. +# +# This copyrighted material is made available to anyone wishing to use, +# modify, copy, or redistribute it subject to the terms and conditions +# of the GNU General Public License v.2. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# relpath.awk: Script is used to calculate relative path +# between two real absolute paths. +# +# echo /a/b/c/d /a/b/e/f | relpath.awk +# -> ../../e/f/ + +{ + length_from = split($1, from, "/"); + length_to = split($2, to, "/") ; + l = 1; + while (l <= length_from && l <= length_to && from[l] == to[l]) + l++; + for (i = l; i <= length_from && length(from[i]); i++) { + if (i > l) + p = sprintf("%s/", p); + p = sprintf("%s..", p); + } + for (i = l; i <= length_to && length(to[i]); i++) { + if (length(p) > 0) + p = sprintf("%s/", p); + p = sprintf("%s%s", p, to[i]); + } + if (length(p)) + p = sprintf("%s/", p); + print p +} -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel