1*163bd69bSGarrett D'Amore /* 2*163bd69bSGarrett D'Amore * Copyright (c) 1991, 1993 3*163bd69bSGarrett D'Amore * The Regents of the University of California. All rights reserved. 4*163bd69bSGarrett D'Amore * 5*163bd69bSGarrett D'Amore * Redistribution and use in source and binary forms, with or without 6*163bd69bSGarrett D'Amore * modification, are permitted provided that the following conditions 7*163bd69bSGarrett D'Amore * are met: 8*163bd69bSGarrett D'Amore * 1. Redistributions of source code must retain the above copyright 9*163bd69bSGarrett D'Amore * notice, this list of conditions and the following disclaimer. 10*163bd69bSGarrett D'Amore * 2. Redistributions in binary form must reproduce the above copyright 11*163bd69bSGarrett D'Amore * notice, this list of conditions and the following disclaimer in the 12*163bd69bSGarrett D'Amore * documentation and/or other materials provided with the distribution. 13*163bd69bSGarrett D'Amore * 3. All advertising materials mentioning features or use of this software 14*163bd69bSGarrett D'Amore * must display the following acknowledgement: 15*163bd69bSGarrett D'Amore * This product includes software developed by the University of 16*163bd69bSGarrett D'Amore * California, Berkeley and its contributors. 17*163bd69bSGarrett D'Amore * 4. Neither the name of the University nor the names of its contributors 18*163bd69bSGarrett D'Amore * may be used to endorse or promote products derived from this software 19*163bd69bSGarrett D'Amore * without specific prior written permission. 20*163bd69bSGarrett D'Amore * 21*163bd69bSGarrett D'Amore * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22*163bd69bSGarrett D'Amore * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23*163bd69bSGarrett D'Amore * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24*163bd69bSGarrett D'Amore * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 25*163bd69bSGarrett D'Amore * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26*163bd69bSGarrett D'Amore * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27*163bd69bSGarrett D'Amore * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28*163bd69bSGarrett D'Amore * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29*163bd69bSGarrett D'Amore * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30*163bd69bSGarrett D'Amore * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31*163bd69bSGarrett D'Amore * SUCH DAMAGE. 32*163bd69bSGarrett D'Amore */ 33*163bd69bSGarrett D'Amore 34*163bd69bSGarrett D'Amore #include <limits.h> 35*163bd69bSGarrett D'Amore 36*163bd69bSGarrett D'Amore #define NCHARS_SB (UCHAR_MAX + 1) /* Number of single-byte characters. */ 37*163bd69bSGarrett D'Amore #define OOBCH -1 /* Out of band character value. */ 38*163bd69bSGarrett D'Amore 39*163bd69bSGarrett D'Amore typedef struct { 40*163bd69bSGarrett D'Amore enum { STRING1, STRING2 } which; 41*163bd69bSGarrett D'Amore enum { EOS, INFINITE, NORMAL, RANGE, SEQUENCE, 42*163bd69bSGarrett D'Amore CCLASS, CCLASS_UPPER, CCLASS_LOWER, SET } state; 43*163bd69bSGarrett D'Amore int cnt; /* character count */ 44*163bd69bSGarrett D'Amore wint_t lastch; /* last character */ 45*163bd69bSGarrett D'Amore wctype_t cclass; /* character class from wctype() */ 46*163bd69bSGarrett D'Amore wint_t equiv[NCHARS_SB]; /* equivalence set */ 47*163bd69bSGarrett D'Amore wint_t *set; /* set of characters */ 48*163bd69bSGarrett D'Amore char *str; /* user's string */ 49*163bd69bSGarrett D'Amore } STR; 50*163bd69bSGarrett D'Amore 51*163bd69bSGarrett D'Amore wint_t next(STR *); 52*163bd69bSGarrett D'Amore int charcoll(const void *, const void *); 53