12be1a816SJohn Birrell /*
22be1a816SJohn Birrell  * CDDL HEADER START
32be1a816SJohn Birrell  *
42be1a816SJohn Birrell  * The contents of this file are subject to the terms of the
52be1a816SJohn Birrell  * Common Development and Distribution License (the "License").
62be1a816SJohn Birrell  * You may not use this file except in compliance with the License.
72be1a816SJohn Birrell  *
82be1a816SJohn Birrell  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
92be1a816SJohn Birrell  * or http://www.opensolaris.org/os/licensing.
102be1a816SJohn Birrell  * See the License for the specific language governing permissions
112be1a816SJohn Birrell  * and limitations under the License.
122be1a816SJohn Birrell  *
132be1a816SJohn Birrell  * When distributing Covered Code, include this CDDL HEADER in each
142be1a816SJohn Birrell  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
152be1a816SJohn Birrell  * If applicable, add the following below this CDDL HEADER, with the
162be1a816SJohn Birrell  * fields enclosed by brackets "[]" replaced with your own identifying
172be1a816SJohn Birrell  * information: Portions Copyright [yyyy] [name of copyright owner]
182be1a816SJohn Birrell  *
192be1a816SJohn Birrell  * CDDL HEADER END
202be1a816SJohn Birrell  */
212be1a816SJohn Birrell 
222be1a816SJohn Birrell /*
232be1a816SJohn Birrell  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
242be1a816SJohn Birrell  * Use is subject to license terms.
252be1a816SJohn Birrell  */
262be1a816SJohn Birrell 
272be1a816SJohn Birrell #pragma ident	"%Z%%M%	%I%	%E% SMI"
282be1a816SJohn Birrell 
292be1a816SJohn Birrell #pragma D option quiet
302be1a816SJohn Birrell 
312be1a816SJohn Birrell struct {
322be1a816SJohn Birrell 	string str;
332be1a816SJohn Birrell 	string substr;
342be1a816SJohn Birrell 	int haspos;
352be1a816SJohn Birrell 	int position;
362be1a816SJohn Birrell } command[int];
372be1a816SJohn Birrell 
382be1a816SJohn Birrell int i;
392be1a816SJohn Birrell 
402be1a816SJohn Birrell BEGIN
412be1a816SJohn Birrell {
422be1a816SJohn Birrell 	command[i].str = "foobarbaz";
432be1a816SJohn Birrell 	command[i].substr = "barbaz";
442be1a816SJohn Birrell 	i++;
452be1a816SJohn Birrell 
462be1a816SJohn Birrell 	command[i].str = "foofoofoo";
472be1a816SJohn Birrell 	command[i].substr = "foo";
482be1a816SJohn Birrell 	i++;
492be1a816SJohn Birrell 
502be1a816SJohn Birrell 	command[i].str = "boofoofoo";
512be1a816SJohn Birrell 	command[i].substr = "foo";
522be1a816SJohn Birrell 	i++;
532be1a816SJohn Birrell 
542be1a816SJohn Birrell 	command[i].str = "foobarbaz";
552be1a816SJohn Birrell 	command[i].substr = "barbazzy";
562be1a816SJohn Birrell 	i++;
572be1a816SJohn Birrell 
582be1a816SJohn Birrell 	command[i].str = "foobar";
592be1a816SJohn Birrell 	command[i].substr = "foobar";
602be1a816SJohn Birrell 	i++;
612be1a816SJohn Birrell 
622be1a816SJohn Birrell 	command[i].str = "foobar";
632be1a816SJohn Birrell 	command[i].substr = "foobarbaz";
642be1a816SJohn Birrell 	i++;
652be1a816SJohn Birrell 
662be1a816SJohn Birrell 	command[i].str = "";
672be1a816SJohn Birrell 	command[i].substr = "foobar";
682be1a816SJohn Birrell 	i++;
692be1a816SJohn Birrell 
702be1a816SJohn Birrell 	command[i].str = "foobar";
712be1a816SJohn Birrell 	command[i].substr = "";
722be1a816SJohn Birrell 	i++;
732be1a816SJohn Birrell 
742be1a816SJohn Birrell 	command[i].str = "";
752be1a816SJohn Birrell 	command[i].substr = "";
762be1a816SJohn Birrell 	i++;
772be1a816SJohn Birrell 
782be1a816SJohn Birrell 	command[i].str = "foo";
792be1a816SJohn Birrell 	command[i].substr = "";
802be1a816SJohn Birrell 	i++;
812be1a816SJohn Birrell 
822be1a816SJohn Birrell 	end = j = k = 0;
83b2db7608SRui Paulo 	printf("#!/usr/bin/perl\n\nBEGIN {\n");
842be1a816SJohn Birrell }
852be1a816SJohn Birrell 
862be1a816SJohn Birrell tick-1ms
872be1a816SJohn Birrell /j < i && end == 0/
882be1a816SJohn Birrell {
892be1a816SJohn Birrell 	command[i + k].str = command[j].str;
902be1a816SJohn Birrell 	command[i + k].substr = command[j].substr;
912be1a816SJohn Birrell 	command[i + k].haspos = 1;
922be1a816SJohn Birrell 	command[i + k].position = -400;
932be1a816SJohn Birrell 	k++;
942be1a816SJohn Birrell 
952be1a816SJohn Birrell 	command[i + k].str = command[j].str;
962be1a816SJohn Birrell 	command[i + k].substr = command[j].substr;
972be1a816SJohn Birrell 	command[i + k].haspos = 1;
982be1a816SJohn Birrell 	command[i + k].position = -1;
992be1a816SJohn Birrell 	k++;
1002be1a816SJohn Birrell 
1012be1a816SJohn Birrell 	command[i + k].str = command[j].str;
1022be1a816SJohn Birrell 	command[i + k].substr = command[j].substr;
1032be1a816SJohn Birrell 	command[i + k].haspos = 1;
1042be1a816SJohn Birrell 	command[i + k].position = 0;
1052be1a816SJohn Birrell 	k++;
1062be1a816SJohn Birrell 
1072be1a816SJohn Birrell 	command[i + k].str = command[j].str;
1082be1a816SJohn Birrell 	command[i + k].substr = command[j].substr;
1092be1a816SJohn Birrell 	command[i + k].haspos = 1;
1102be1a816SJohn Birrell 	command[i + k].position = strlen(command[j].str) / 2;
1112be1a816SJohn Birrell 	k++;
1122be1a816SJohn Birrell 
1132be1a816SJohn Birrell 	command[i + k].str = command[j].str;
1142be1a816SJohn Birrell 	command[i + k].substr = command[j].substr;
1152be1a816SJohn Birrell 	command[i + k].haspos = 1;
1162be1a816SJohn Birrell 	command[i + k].position = strlen(command[j].str);
1172be1a816SJohn Birrell 	k++;
1182be1a816SJohn Birrell 
1192be1a816SJohn Birrell 	command[i + k].str = command[j].str;
1202be1a816SJohn Birrell 	command[i + k].substr = command[j].substr;
1212be1a816SJohn Birrell 	command[i + k].haspos = 1;
1222be1a816SJohn Birrell 	command[i + k].position = strlen(command[j].str) + 1;
1232be1a816SJohn Birrell 	k++;
1242be1a816SJohn Birrell 
1252be1a816SJohn Birrell 	command[i + k].str = command[j].str;
1262be1a816SJohn Birrell 	command[i + k].substr = command[j].substr;
1272be1a816SJohn Birrell 	command[i + k].haspos = 1;
1282be1a816SJohn Birrell 	command[i + k].position = strlen(command[j].str) + 2;
1292be1a816SJohn Birrell 	k++;
1302be1a816SJohn Birrell 
1312be1a816SJohn Birrell 	command[i + k].str = command[j].str;
1322be1a816SJohn Birrell 	command[i + k].substr = command[j].substr;
1332be1a816SJohn Birrell 	command[i + k].haspos = 1;
1342be1a816SJohn Birrell 	command[i + k].position = 400;
1352be1a816SJohn Birrell 	k++;
1362be1a816SJohn Birrell 
1372be1a816SJohn Birrell 	j++;
1382be1a816SJohn Birrell }
1392be1a816SJohn Birrell 
1402be1a816SJohn Birrell tick-1ms
1412be1a816SJohn Birrell /j == i && end == 0/
1422be1a816SJohn Birrell {
1432be1a816SJohn Birrell 	end = k;
1442be1a816SJohn Birrell 	i = 0;
1452be1a816SJohn Birrell }
1462be1a816SJohn Birrell 
1472be1a816SJohn Birrell tick-1ms
1482be1a816SJohn Birrell /end != 0 && i < end && !command[i].haspos/
1492be1a816SJohn Birrell {
1502be1a816SJohn Birrell 	this->result = index(command[i].str, command[i].substr);
1512be1a816SJohn Birrell 
1522be1a816SJohn Birrell 	printf("\tif (index(\"%s\", \"%s\") != %d) {\n",
1532be1a816SJohn Birrell 	    command[i].str, command[i].substr, this->result);
1542be1a816SJohn Birrell 	printf("\t\tprintf(\"perl => index(\\\"%s\\\", \\\"%s\\\") = ",
1552be1a816SJohn Birrell 	    command[i].str, command[i].substr);
1562be1a816SJohn Birrell 	printf("%%d\\n\",\n\t\t    index(\"%s\", \"%s\"));\n",
1572be1a816SJohn Birrell 	    command[i].str, command[i].substr);
1582be1a816SJohn Birrell 	printf("\t\tprintf(\"   D => index(\\\"%s\\\", \\\"%s\\\") = ",
1592be1a816SJohn Birrell 	    command[i].str, command[i].substr);
1602be1a816SJohn Birrell 	printf("%d\\n\");\n", this->result);
1612be1a816SJohn Birrell 	printf("\t\t$failed++;\n");
1622be1a816SJohn Birrell 	printf("\t}\n\n");
1632be1a816SJohn Birrell }
1642be1a816SJohn Birrell 
1652be1a816SJohn Birrell tick-1ms
1662be1a816SJohn Birrell /end != 0 && i < end && !command[i].haspos/
1672be1a816SJohn Birrell {
1682be1a816SJohn Birrell 	this->result = rindex(command[i].str, command[i].substr);
1692be1a816SJohn Birrell 
1702be1a816SJohn Birrell 	printf("\tif (rindex(\"%s\", \"%s\") != %d) {\n",
1712be1a816SJohn Birrell 	    command[i].str, command[i].substr, this->result);
1722be1a816SJohn Birrell 	printf("\t\tprintf(\"perl => rindex(\\\"%s\\\", \\\"%s\\\") = ",
1732be1a816SJohn Birrell 	    command[i].str, command[i].substr);
1742be1a816SJohn Birrell 	printf("%%d\\n\",\n\t\t    rindex(\"%s\", \"%s\"));\n",
1752be1a816SJohn Birrell 	    command[i].str, command[i].substr);
1762be1a816SJohn Birrell 	printf("\t\tprintf(\"   D => rindex(\\\"%s\\\", \\\"%s\\\") = ",
1772be1a816SJohn Birrell 	    command[i].str, command[i].substr);
1782be1a816SJohn Birrell 	printf("%d\\n\");\n", this->result);
1792be1a816SJohn Birrell 	printf("\t\t$failed++;\n");
1802be1a816SJohn Birrell 	printf("\t}\n\n");
1812be1a816SJohn Birrell }
1822be1a816SJohn Birrell 
1832be1a816SJohn Birrell tick-1ms
1842be1a816SJohn Birrell /end != 0 && i < end && command[i].haspos/
1852be1a816SJohn Birrell {
1862be1a816SJohn Birrell 	this->result = index(command[i].str,
1872be1a816SJohn Birrell 	    command[i].substr, command[i].position);
1882be1a816SJohn Birrell 
1892be1a816SJohn Birrell 	printf("\tif (index(\"%s\", \"%s\", %d) != %d) {\n", command[i].str,
1902be1a816SJohn Birrell 	    command[i].substr, command[i].position, this->result);
1912be1a816SJohn Birrell 	printf("\t\tprintf(\"perl => index(\\\"%s\\\", \\\"%s\\\", %d) = ",
1922be1a816SJohn Birrell 	    command[i].str, command[i].substr, command[i].position);
1932be1a816SJohn Birrell 	printf("%%d\\n\",\n\t\t    index(\"%s\", \"%s\", %d));\n",
1942be1a816SJohn Birrell 	    command[i].str, command[i].substr, command[i].position);
1952be1a816SJohn Birrell 	printf("\t\tprintf(\"   D => index(\\\"%s\\\", \\\"%s\\\", %d) = ",
1962be1a816SJohn Birrell 	    command[i].str, command[i].substr, command[i].position);
1972be1a816SJohn Birrell 	printf("%d\\n\");\n", this->result);
1982be1a816SJohn Birrell 	printf("\t\t$failed++;\n");
1992be1a816SJohn Birrell 	printf("\t}\n\n");
2002be1a816SJohn Birrell }
2012be1a816SJohn Birrell 
2022be1a816SJohn Birrell tick-1ms
2032be1a816SJohn Birrell /end != 0 && i < end && command[i].haspos/
2042be1a816SJohn Birrell {
2052be1a816SJohn Birrell 	this->result = rindex(command[i].str,
2062be1a816SJohn Birrell 	    command[i].substr, command[i].position);
2072be1a816SJohn Birrell 
2082be1a816SJohn Birrell 	printf("\tif (rindex(\"%s\", \"%s\", %d) != %d) {\n", command[i].str,
2092be1a816SJohn Birrell 	    command[i].substr, command[i].position, this->result);
2102be1a816SJohn Birrell 	printf("\t\tprintf(\"perl => rindex(\\\"%s\\\", \\\"%s\\\", %d) = ",
2112be1a816SJohn Birrell 	    command[i].str, command[i].substr, command[i].position);
2122be1a816SJohn Birrell 	printf("%%d\\n\",\n\t\t    rindex(\"%s\", \"%s\", %d));\n",
2132be1a816SJohn Birrell 	    command[i].str, command[i].substr, command[i].position);
2142be1a816SJohn Birrell 	printf("\t\tprintf(\"   D => rindex(\\\"%s\\\", \\\"%s\\\", %d) = ",
2152be1a816SJohn Birrell 	    command[i].str, command[i].substr, command[i].position);
2162be1a816SJohn Birrell 	printf("%d\\n\");\n", this->result);
2172be1a816SJohn Birrell 	printf("\t\t$failed++;\n");
2182be1a816SJohn Birrell 	printf("\t}\n\n");
2192be1a816SJohn Birrell }
2202be1a816SJohn Birrell 
2212be1a816SJohn Birrell tick-1ms
2222be1a816SJohn Birrell /end != 0 && ++i == end/
2232be1a816SJohn Birrell {
2242be1a816SJohn Birrell 	printf("\texit($failed);\n}\n");
2252be1a816SJohn Birrell 	exit(0);
2262be1a816SJohn Birrell }
227