1107626Schris/* 2107626Schris * CDDL HEADER START 3115211Sru * 4108937Schris * The contents of this file are subject to the terms of the 5108937Schris * Common Development and Distribution License (the "License"). 6108937Schris * You may not use this file except in compliance with the License. 7108937Schris * 8108937Schris * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9115211Sru * or http://www.opensolaris.org/os/licensing. 10107626Schris * See the License for the specific language governing permissions 11107626Schris * and limitations under the License. 12107626Schris * 13107626Schris * When distributing Covered Code, include this CDDL HEADER in each 14107626Schris * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15107626Schris * If applicable, add the following below this CDDL HEADER, with the 16107626Schris * fields enclosed by brackets "[]" replaced with your own identifying 17107626Schris * information: Portions Copyright [yyyy] [name of copyright owner] 18115211Sru * 19107626Schris * CDDL HEADER END 20107626Schris */ 21107626Schris 22107626Schris/* 23107626Schris * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24107626Schris * Use is subject to license terms. 25107626Schris */ 26107626Schris 27107626Schris#pragma ident "%Z%%M% %I% %E% SMI" 28107626Schris 29107626Schris#pragma D option quiet 30115211Sru 31107626SchrisBEGIN 32115643Sru{ 33146469Strhodes this->str = ",,,Carrots,,Barley,Oatmeal,,,Beans,"; 34206622Suqs} 35107626Schris 36107626SchrisBEGIN 37107626Schris/(this->field = strtok(this->str, ",")) == NULL/ 38115643Sru{ 39107626Schris exit(1); 40108063Schris} 41108063Schris 42115643SruBEGIN 43108063Schris{ 44108063Schris printf("%s\n", this->field); 45115643Sru} 46108063Schris 47108063SchrisBEGIN 48107717Schris/(this->field = strtok(NULL, ",")) == NULL/ 49115643Sru{ 50107717Schris exit(2); 51115643Sru} 52107717Schris 53107717SchrisBEGIN 54107717Schris{ 55115643Sru printf("%s\n", this->field); 56115643Sru} 57115643Sru 58107626SchrisBEGIN 59107626Schris/(this->field = strtok(NULL, ",")) == NULL/ 60107626Schris{ 61144911Strhodes exit(3); 62107626Schris} 63107626Schris 64107626SchrisBEGIN 65107717Schris{ 66107717Schris printf("%s\n", this->field); 67107626Schris} 68107626Schris 69107626SchrisBEGIN 70107626Schris/(this->field = strtok(NULL, ",")) == NULL/ 71107626Schris{ 72107626Schris exit(4); 73107626Schris} 74107626Schris 75107626SchrisBEGIN 76107626Schris{ 77107626Schris printf("%s\n", this->field); 78107626Schris} 79107626Schris 80107626SchrisBEGIN 81107626Schris/(self->a = strtok(NULL, ",")) != NULL/ 82134134Strhodes{ 83134134Strhodes printf("unexpected field: %s\n", this->field); 84134134Strhodes exit(5); 85134134Strhodes} 86134134Strhodes 87134134Strhodesstruct { 88134134Strhodes string s1; 89134134Strhodes string s2; 90134134Strhodes string result; 91134134Strhodes} command[int]; 92134134Strhodes 93134134Strhodesint i; 94134134Strhodes 95134134StrhodesBEGIN 96134134Strhodes{ 97134134Strhodes command[i].s1 = ""; 98146469Strhodes command[i].s2 = ""; 99134134Strhodes command[i].result = ""; 100134134Strhodes i++; 101134134Strhodes 102134134Strhodes command[i].s1 = "foo"; 103134134Strhodes command[i].s2 = ""; 104134134Strhodes command[i].result = command[i].s1; 105134134Strhodes i++; 106134134Strhodes 107135039Strhodes command[i].s1 = "foobar"; 108134134Strhodes command[i].s2 = "o"; 109134134Strhodes command[i].result = "f"; 110134134Strhodes i++; 111134134Strhodes 112134134Strhodes command[i].s1 = "oobar"; 113134134Strhodes command[i].s2 = "o"; 114134134Strhodes command[i].result = "bar"; 115136277Skeramida i++; 116107626Schris 117107626Schris command[i].s1 = "foo"; 118134134Strhodes command[i].s2 = "bar"; 119109271Schris command[i].result = command[i].s1; 120107717Schris i++; 121107735Schris 122108934Schris command[i].s1 = ""; 123107717Schris command[i].s2 = "foo"; 124107717Schris command[i].result = ""; 125107735Schris i++; 126112860Schris 127107717Schris end = i; 128107717Schris i = 0; 129134134Strhodes} 130107626Schris 131107626Schristick-1ms 132107626Schris/i < end && 133107626Schris (this->result = strtok(command[i].s1, command[i].s2)) != command[i].result/ 134107626Schris{ 135107717Schris printf("strtok(\"%s\", \"%s\") = \"%s\", expected \"%s\"", 136107717Schris command[i].s1, command[i].s2, 137115643Sru this->result != NULL ? this->result : "<null>", 138115643Sru command[i].result != NULL ? command[i].result : "<null>"); 139115643Sru exit(6 + i); 140134134Strhodes} 141134134Strhodes 142134134Strhodestick-1ms 143107626Schris/++i == end/ 144107626Schris{ 145107626Schris exit(0); 146107626Schris} 147131530Sru