1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-10-27 18:55:19 +03:00
lvm2/scripts/relpath.awk
Mikulas Patocka 3ed801fb95 Fix scripts/relpath.awk to work with mawk
length(array) is specific to GNU awk and doesn't work in mawk.
Use a return value of "split" function to indicate array size, this is
supported in both gawk and mawk.

This patch fixes the following errors during "make install" when mawk is
installed as a default awk.

mawk: scripts/relpath.awk: line 25: illegal reference to array from
mawk: scripts/relpath.awk: line 25: illegal reference to array to
mawk: scripts/relpath.awk: line 27: illegal reference to array from
mawk: scripts/relpath.awk: line 32: illegal reference to array to

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
2010-05-21 15:28:16 +00:00

41 lines
1.1 KiB
Awk
Executable File

#!/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
}