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