tc.nls.h revision 145479
1130167Sgad/* $Header: /src/pub/tcsh/tc.nls.h,v 3.9 2005/03/03 15:52:20 kim Exp $ */ 2130167Sgad/* 3130167Sgad * tc.nls.h: NLS support 4130167Sgad * 5130167Sgad */ 6130167Sgad/*- 7130167Sgad * Copyright (c) 1980, 1991 The Regents of the University of California. 8130167Sgad * All rights reserved. 9130167Sgad * 10130167Sgad * Redistribution and use in source and binary forms, with or without 11130167Sgad * modification, are permitted provided that the following conditions 12130167Sgad * are met: 13130167Sgad * 1. Redistributions of source code must retain the above copyright 14130167Sgad * notice, this list of conditions and the following disclaimer. 15130167Sgad * 2. Redistributions in binary form must reproduce the above copyright 16130167Sgad * notice, this list of conditions and the following disclaimer in the 17130167Sgad * documentation and/or other materials provided with the distribution. 18130167Sgad * 3. Neither the name of the University nor the names of its contributors 19130167Sgad * may be used to endorse or promote products derived from this software 20130167Sgad * without specific prior written permission. 21130167Sgad * 22130167Sgad * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23130167Sgad * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24130167Sgad * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25130167Sgad * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26130167Sgad * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27130167Sgad * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28130167Sgad * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29130167Sgad * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30130167Sgad * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3113244Sgraichen * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3213244Sgraichen * SUCH DAMAGE. 3313244Sgraichen */ 3413244Sgraichen#ifndef _h_tc_nls 3513244Sgraichen#define _h_tc_nls 3659004Shm 3759004Shm#include "sh.h" 3859004Shm 3959004Shm#define NLSZEROT ((size_t)-1) 4059004Shm 4159004Shm#ifdef WIDE_STRINGS 4259004Shm 4359004Shm# define NLSSize(s, l) 1 4459004Shm# define NLSFrom(s, l, cp) (USE (l), (*(cp) = *(s) & CHAR), 1) 4559004Shm# define NLSFinished(s, l, c) (l != 0 && c != CHAR_ERR ? 2 : 1) 4659004Shm# define NLSChars(s) Strlen(s) 4759004Shm# define NLSQuote(s) 4859004Shm# define TRIM_AND_EXTEND(s, c) (c &= TRIM) 4959004Shm 5013244Sgraichenextern int NLSWidth __P((NLSChar)); 5113244Sgraichenextern int NLSStringWidth __P((Char *)); 5259004Shm 5359004Shm#define NLS_ILLEGAL INVALID_BYTE 5413244Sgraichen 5513244Sgraichen#else 56114601Sobrien# ifdef SHORT_STRINGS 57114601Sobrien 5813244Sgraichenextern int NLSFrom __P((const Char *, size_t, NLSChar *)); 59130045Sgadextern int NLSFinished __P((Char *, size_t, eChar)); 6013244Sgraichenextern int NLSChars __P((Char *)); 61130045Sgadextern int NLSStringWidth __P((Char *)); 6213244Sgraichenextern int NLSWidth __P((NLSChar)); 6380638Sobrienextern int NLSTo __P((Char *, NLSChar)); 6480638Sobrienextern void NLSQuote __P((Char *)); 6580638Sobrien 6613244Sgraichen#define NLSSize(s, l) NLSFrom(s, l, (NLSChar *)0) 6796001Smaxim#define TRIM_AND_EXTEND(s, c) (s += NLSFrom(s - 1, NLSZEROT, &c) - 1) 68130167Sgad#define NLS_ILLEGAL 0x40000000 6996001Smaxim 7096001Smaxim 7196001Smaxim# else 7230160Scharnier# define NLSSize(s, l) 1 7330160Scharnier# define NLSFrom(s, l, cp) (USE (l), (*(cp) = *(s) & CHAR), 1) 7495999Smaxim# define NLSFinished(s, l, c) (l != 0 && c != CHAR_ERR ? 2 : 1) 7530160Scharnier# define NLSChars(s) Strlen(s) 76111773Sgad# define NLSStringWidth(s) Strlen(s) 77106905Ssobomax# define NLSWidth(c) 1 7830160Scharnier# define NLSQuote(s) 7943071Swollman 8030160Scharnier# define TRIM_AND_EXTEND(s, c) (c &= TRIM) 8130160Scharnier# define NLS_ILLEGAL 0x40000000 8213244Sgraichen# endif 8313244Sgraichen#endif 8413244Sgraichen 8543071Swollmanextern int NLSExtend __P((Char *, int, int)); 8616240Salexextern Char *NLSChangeCase __P((Char *, int)); 8713244Sgraichenextern int NLSClassify __P((NLSChar, int)); 8843071Swollman 89119998Sgad#define NLSCLASS_CTRL (-1) 9043071Swollman#define NLSCLASS_TAB (-2) 91111768Sgad#define NLSCLASS_NL (-3) 92111768Sgad#define NLSCLASS_ILLEGAL (-4) 93111768Sgad#define NLSCLASS_ILLEGAL2 (-5) 94130045Sgad#define NLSCLASS_ILLEGAL3 (-6) 95130045Sgad#define NLSCLASS_ILLEGAL4 (-7) 96130045Sgad 97111768Sgad#define NLSCLASS_ILLEGAL_SIZE(x) (-(x) - (-(NLSCLASS_ILLEGAL) - 1)) 98130045Sgad 99111768Sgad#endif 100130045Sgad