1#!/bin/sh 2# tests for canonicalize-existing mode (readlink -e) on /. 3 4# Copyright (C) 2012-2023 Free Software Foundation, Inc. 5 6# This program is free software: you can redistribute it and/or modify 7# it under the terms of the GNU General Public License as published by 8# the Free Software Foundation, either version 3 of the License, or 9# (at your option) any later version. 10 11# This program is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# GNU General Public License for more details. 15 16# You should have received a copy of the GNU General Public License 17# along with this program. If not, see <https://www.gnu.org/licenses/>. 18 19. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src 20print_ver_ readlink 21 22stat_single=$(stat -c %d:%i /) || framework_failure_ 23stat_double=$(stat -c %d:%i //) || framework_failure_ 24double_slash=// 25if test x"$stat_single" = x"$stat_double"; then 26 double_slash=/ 27fi 28 29test -d /dev || framework_failure_ 30 31ln -s / one || framework_failure_ 32ln -s // two || framework_failure_ 33ln -s /// three || framework_failure_ 34ln -s /./..// one-dots || framework_failure_ 35ln -s //./..// two-dots || framework_failure_ 36ln -s ///./..// three-dots || framework_failure_ 37ln -s /dev one-dev || framework_failure_ 38ln -s //dev two-dev || framework_failure_ 39ln -s ///dev three-dev || framework_failure_ 40 41cat >exp <<EOF || framework_failure_ 42/ 43$double_slash 44/ 45/ 46$double_slash 47/ 48/ 49$double_slash 50/ 51/ 52$double_slash 53/ 54/dev 55${double_slash}dev 56/dev 57/dev 58${double_slash}dev 59/dev 60/dev 61${double_slash}dev 62/dev 63EOF 64 65{ 66 readlink -e / || fail=1 67 readlink -e // || fail=1 68 readlink -e /// || fail=1 69 readlink -e /.//.. || fail=1 70 readlink -e //.//.. || fail=1 71 readlink -e ///.//.. || fail=1 72 readlink -e one || fail=1 73 readlink -e two || fail=1 74 readlink -e three || fail=1 75 readlink -e one-dots || fail=1 76 readlink -e two-dots || fail=1 77 readlink -e three-dots || fail=1 78 readlink -e one-dev || fail=1 79 # We know /dev exists, but cannot assume //dev exists 80 readlink -f two-dev || fail=1 81 readlink -e three-dev || fail=1 82 readlink -e one/dev || fail=1 83 readlink -f two/dev || fail=1 84 readlink -e three/dev || fail=1 85 readlink -e one-dots/dev || fail=1 86 readlink -f two-dots/dev || fail=1 87 readlink -e three-dots/dev || fail=1 88} > out 89 90compare exp out || fail=1 91 92Exit $fail 93