Index: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.basename.d =================================================================== --- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.basename.d (revision 321468) +++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.basename.d (revision 321469) @@ -1,88 +1,106 @@ /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #pragma ident "%Z%%M% %I% %E% SMI" #pragma D option quiet #pragma D option dynvarsize=2m /* * This test verifies that the basename() and dirname() functions are working * properly. Note that the output of this is a ksh script. When run, * it will give no output if the output is correct. */ BEGIN { dir[i++] = "/foo/bar/baz"; dir[i++] = "/foo/bar///baz/"; dir[i++] = "/foo/bar/baz/"; dir[i++] = "/foo/bar/baz//"; dir[i++] = "/foo/bar/baz/."; dir[i++] = "/foo/bar/baz/./"; dir[i++] = "/foo/bar/baz/.//"; dir[i++] = "foo/bar/baz/"; dir[i++] = "/"; dir[i++] = "./"; dir[i++] = "//"; dir[i++] = "/."; dir[i++] = "/./"; dir[i++] = "/./."; dir[i++] = "/.//"; dir[i++] = "."; dir[i++] = "f"; dir[i++] = "f/"; dir[i++] = "/////"; + /* + * basename(3) and basename(1) return different results for the empty + * string on FreeBSD, so we need special handling. dir[i++] = ""; + */ end = i; i = 0; - printf("#!/usr/bin/ksh\n\n"); + printf("#!/usr/bin/env ksh\n\n"); } tick-1ms /i < end/ { printf("if [ `basename \"%s\"` != \"%s\" ]; then\n", dir[i], basename(dir[i])); printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", dir[i], basename(dir[i])); printf("expected \\\"`basename \"%s\"`\"\\\"\n", dir[i]); printf("fi\n\n"); printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", dir[i], dirname(dir[i])); printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", dir[i], dirname(dir[i])); printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); printf("fi\n\n"); i++; } tick-1ms /i == end/ { + dir[i] = ""; + printf("if [ \"`basename \"%s\"`\" != \"%s\" -a \".\" != \"%s\" ]; then\n", + dir[i], basename(dir[i]), basename(dir[i])); + printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ", + dir[i], basename(dir[i])); + printf("expected \\\"`basename \"%s\"`\\\" or \\\".\\\"\"\n", dir[i]); + printf("fi\n\n"); + printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n", + dir[i], dirname(dir[i])); + printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ", + dir[i], dirname(dir[i])); + printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]); + printf("fi\n\n"); + exit(0); } Index: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.basename.d.out =================================================================== --- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.basename.d.out (revision 321468) +++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.basename.d.out (revision 321469) @@ -1,163 +1,163 @@ -#!/usr/bin/ksh +#!/usr/bin/env ksh if [ `basename "/foo/bar/baz"` != "baz" ]; then echo "basename(\"/foo/bar/baz\") is \"baz\"; expected \"`basename "/foo/bar/baz"`"\" fi if [ `dirname "/foo/bar/baz"` != "/foo/bar" ]; then echo "dirname(\"/foo/bar/baz\") is \"/foo/bar\"; expected \"`dirname "/foo/bar/baz"`"\" fi if [ `basename "/foo/bar///baz/"` != "baz" ]; then echo "basename(\"/foo/bar///baz/\") is \"baz\"; expected \"`basename "/foo/bar///baz/"`"\" fi if [ `dirname "/foo/bar///baz/"` != "/foo/bar" ]; then echo "dirname(\"/foo/bar///baz/\") is \"/foo/bar\"; expected \"`dirname "/foo/bar///baz/"`"\" fi if [ `basename "/foo/bar/baz/"` != "baz" ]; then echo "basename(\"/foo/bar/baz/\") is \"baz\"; expected \"`basename "/foo/bar/baz/"`"\" fi if [ `dirname "/foo/bar/baz/"` != "/foo/bar" ]; then echo "dirname(\"/foo/bar/baz/\") is \"/foo/bar\"; expected \"`dirname "/foo/bar/baz/"`"\" fi if [ `basename "/foo/bar/baz//"` != "baz" ]; then echo "basename(\"/foo/bar/baz//\") is \"baz\"; expected \"`basename "/foo/bar/baz//"`"\" fi if [ `dirname "/foo/bar/baz//"` != "/foo/bar" ]; then echo "dirname(\"/foo/bar/baz//\") is \"/foo/bar\"; expected \"`dirname "/foo/bar/baz//"`"\" fi if [ `basename "/foo/bar/baz/."` != "." ]; then echo "basename(\"/foo/bar/baz/.\") is \".\"; expected \"`basename "/foo/bar/baz/."`"\" fi if [ `dirname "/foo/bar/baz/."` != "/foo/bar/baz" ]; then echo "dirname(\"/foo/bar/baz/.\") is \"/foo/bar/baz\"; expected \"`dirname "/foo/bar/baz/."`"\" fi if [ `basename "/foo/bar/baz/./"` != "." ]; then echo "basename(\"/foo/bar/baz/./\") is \".\"; expected \"`basename "/foo/bar/baz/./"`"\" fi if [ `dirname "/foo/bar/baz/./"` != "/foo/bar/baz" ]; then echo "dirname(\"/foo/bar/baz/./\") is \"/foo/bar/baz\"; expected \"`dirname "/foo/bar/baz/./"`"\" fi if [ `basename "/foo/bar/baz/.//"` != "." ]; then echo "basename(\"/foo/bar/baz/.//\") is \".\"; expected \"`basename "/foo/bar/baz/.//"`"\" fi if [ `dirname "/foo/bar/baz/.//"` != "/foo/bar/baz" ]; then echo "dirname(\"/foo/bar/baz/.//\") is \"/foo/bar/baz\"; expected \"`dirname "/foo/bar/baz/.//"`"\" fi if [ `basename "foo/bar/baz/"` != "baz" ]; then echo "basename(\"foo/bar/baz/\") is \"baz\"; expected \"`basename "foo/bar/baz/"`"\" fi if [ `dirname "foo/bar/baz/"` != "foo/bar" ]; then echo "dirname(\"foo/bar/baz/\") is \"foo/bar\"; expected \"`dirname "foo/bar/baz/"`"\" fi if [ `basename "/"` != "/" ]; then echo "basename(\"/\") is \"/\"; expected \"`basename "/"`"\" fi if [ `dirname "/"` != "/" ]; then echo "dirname(\"/\") is \"/\"; expected \"`dirname "/"`"\" fi if [ `basename "./"` != "." ]; then echo "basename(\"./\") is \".\"; expected \"`basename "./"`"\" fi if [ `dirname "./"` != "." ]; then echo "dirname(\"./\") is \".\"; expected \"`dirname "./"`"\" fi if [ `basename "//"` != "/" ]; then echo "basename(\"//\") is \"/\"; expected \"`basename "//"`"\" fi if [ `dirname "//"` != "/" ]; then echo "dirname(\"//\") is \"/\"; expected \"`dirname "//"`"\" fi if [ `basename "/."` != "." ]; then echo "basename(\"/.\") is \".\"; expected \"`basename "/."`"\" fi if [ `dirname "/."` != "/" ]; then echo "dirname(\"/.\") is \"/\"; expected \"`dirname "/."`"\" fi if [ `basename "/./"` != "." ]; then echo "basename(\"/./\") is \".\"; expected \"`basename "/./"`"\" fi if [ `dirname "/./"` != "/" ]; then echo "dirname(\"/./\") is \"/\"; expected \"`dirname "/./"`"\" fi if [ `basename "/./."` != "." ]; then echo "basename(\"/./.\") is \".\"; expected \"`basename "/./."`"\" fi if [ `dirname "/./."` != "/." ]; then echo "dirname(\"/./.\") is \"/.\"; expected \"`dirname "/./."`"\" fi if [ `basename "/.//"` != "." ]; then echo "basename(\"/.//\") is \".\"; expected \"`basename "/.//"`"\" fi if [ `dirname "/.//"` != "/" ]; then echo "dirname(\"/.//\") is \"/\"; expected \"`dirname "/.//"`"\" fi if [ `basename "."` != "." ]; then echo "basename(\".\") is \".\"; expected \"`basename "."`"\" fi if [ `dirname "."` != "." ]; then echo "dirname(\".\") is \".\"; expected \"`dirname "."`"\" fi if [ `basename "f"` != "f" ]; then echo "basename(\"f\") is \"f\"; expected \"`basename "f"`"\" fi if [ `dirname "f"` != "." ]; then echo "dirname(\"f\") is \".\"; expected \"`dirname "f"`"\" fi if [ `basename "f/"` != "f" ]; then echo "basename(\"f/\") is \"f\"; expected \"`basename "f/"`"\" fi if [ `dirname "f/"` != "." ]; then echo "dirname(\"f/\") is \".\"; expected \"`dirname "f/"`"\" fi if [ `basename "/////"` != "/" ]; then echo "basename(\"/////\") is \"/\"; expected \"`basename "/////"`"\" fi if [ `dirname "/////"` != "/" ]; then echo "dirname(\"/////\") is \"/\"; expected \"`dirname "/////"`"\" fi -if [ `basename ""` != "." ]; then - echo "basename(\"\") is \".\"; expected \"`basename ""`"\" +if [ "`basename ""`" != "." -a "." != "." ]; then + echo "basename(\"\") is \".\"; expected \"`basename ""`\" or \".\"" fi if [ `dirname ""` != "." ]; then echo "dirname(\"\") is \".\"; expected \"`dirname ""`"\" fi