19b50d902SRodney W. Grimes /*- 29b50d902SRodney W. Grimes * Copyright (c) 1991, 1993 39b50d902SRodney W. Grimes * The Regents of the University of California. All rights reserved. 49b50d902SRodney W. Grimes * 59b50d902SRodney W. Grimes * Redistribution and use in source and binary forms, with or without 69b50d902SRodney W. Grimes * modification, are permitted provided that the following conditions 79b50d902SRodney W. Grimes * are met: 89b50d902SRodney W. Grimes * 1. Redistributions of source code must retain the above copyright 99b50d902SRodney W. Grimes * notice, this list of conditions and the following disclaimer. 109b50d902SRodney W. Grimes * 2. Redistributions in binary form must reproduce the above copyright 119b50d902SRodney W. Grimes * notice, this list of conditions and the following disclaimer in the 129b50d902SRodney W. Grimes * documentation and/or other materials provided with the distribution. 13*fbbd9655SWarner Losh * 3. Neither the name of the University nor the names of its contributors 149b50d902SRodney W. Grimes * may be used to endorse or promote products derived from this software 159b50d902SRodney W. Grimes * without specific prior written permission. 169b50d902SRodney W. Grimes * 179b50d902SRodney W. Grimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 189b50d902SRodney W. Grimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 199b50d902SRodney W. Grimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 209b50d902SRodney W. Grimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 219b50d902SRodney W. Grimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 229b50d902SRodney W. Grimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 239b50d902SRodney W. Grimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 249b50d902SRodney W. Grimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 259b50d902SRodney W. Grimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 269b50d902SRodney W. Grimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 279b50d902SRodney W. Grimes * SUCH DAMAGE. 289b50d902SRodney W. Grimes * 299b50d902SRodney W. Grimes * @(#)extern.h 8.1 (Berkeley) 6/6/93 303f330d7dSWarner Losh * $FreeBSD$ 319b50d902SRodney W. Grimes */ 329b50d902SRodney W. Grimes 33dc20d4b9STim J. Robbins #include <limits.h> 34ca99cfddSTim J. Robbins 35ca99cfddSTim J. Robbins #define NCHARS_SB (UCHAR_MAX + 1) /* Number of single-byte characters. */ 36ca99cfddSTim J. Robbins #define OOBCH -1 /* Out of band character value. */ 37dc20d4b9STim J. Robbins 389b50d902SRodney W. Grimes typedef struct { 399b50d902SRodney W. Grimes enum { STRING1, STRING2 } which; 4030c11564SAndrey A. Chernov enum { EOS, INFINITE, NORMAL, RANGE, SEQUENCE, 41ca99cfddSTim J. Robbins CCLASS, CCLASS_UPPER, CCLASS_LOWER, SET } state; 429b50d902SRodney W. Grimes int cnt; /* character count */ 43ca99cfddSTim J. Robbins wint_t lastch; /* last character */ 44ca99cfddSTim J. Robbins wctype_t cclass; /* character class from wctype() */ 45ca99cfddSTim J. Robbins wint_t equiv[NCHARS_SB]; /* equivalence set */ 46ca99cfddSTim J. Robbins wint_t *set; /* set of characters */ 479b50d902SRodney W. Grimes char *str; /* user's string */ 489b50d902SRodney W. Grimes } STR; 499b50d902SRodney W. Grimes 50ca99cfddSTim J. Robbins wint_t next(STR *); 5100611f04SAndrey A. Chernov int charcoll(const void *, const void *); 52