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