mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
55f400bd84
This is merely updating the Copyright statements from 1997 to 1998.
It's a once a year thing :-).
NO OTHER CHANGES WERE MADE.
Jeremy.
(This used to be commit b9c1697723
)
156 lines
4.8 KiB
C
156 lines
4.8 KiB
C
/*
|
|
Unix SMB/Netbios implementation.
|
|
Version 1.9.
|
|
Kanji Extensions
|
|
Copyright (C) Andrew Tridgell 1992-1998
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
Adding for Japanese language by <fujita@ainix.isac.co.jp> 1994.9.5
|
|
and extend coding system to EUC/SJIS/JIS/HEX at 1994.10.11
|
|
and add all jis codes sequence at 1995.8.16
|
|
Notes: Hexadecimal code by <ohki@gssm.otuka.tsukuba.ac.jp>
|
|
and add upper/lower case conversion 1997.8.21
|
|
*/
|
|
#ifndef _KANJI_H_
|
|
#define _KANJI_H_
|
|
|
|
/* FOR SHIFT JIS CODE */
|
|
#define is_shift_jis(c) \
|
|
((0x81 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0x9f) \
|
|
|| (0xe0 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xef))
|
|
#define is_shift_jis2(c) \
|
|
(0x40 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xfc \
|
|
&& ((unsigned char) (c)) != 0x7f)
|
|
#define is_kana(c) ((0xa0 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xdf))
|
|
|
|
/* case conversion */
|
|
#define is_sj_upper2(c) \
|
|
((0x60 <= (unsigned char) (c)) && ((unsigned char) (c) <= 0x79))
|
|
#define is_sj_lower2(c) \
|
|
((0x81 <= (unsigned char) (c)) && ((unsigned char) (c) <= 0x9A))
|
|
#define sjis_alph 0x82
|
|
#define is_sj_alph(c) (sjis_alph == (unsigned char) (c))
|
|
#define is_sj_upper(c1, c2) (is_sj_alph (c1) && is_sj_upper2 (c2))
|
|
#define is_sj_lower(c1, c2) (is_sj_alph (c1) && is_sj_lower2 (c2))
|
|
#define sj_toupper2(c) \
|
|
(is_sj_lower2 (c) ? ((int) ((unsigned char) (c) - 0x81 + 0x60)) : \
|
|
((int) (unsigned char) (c)))
|
|
#define sj_tolower2(c) \
|
|
(is_sj_upper2 (c) ? ((int) ((unsigned char) (c) - 0x60 + 0x81)) : \
|
|
((int) (unsigned char) (c)))
|
|
|
|
#ifdef _KANJI_C_
|
|
/* FOR EUC CODE */
|
|
#define euc_kana (0x8e)
|
|
#define is_euc_kana(c) (((unsigned char) (c)) == euc_kana)
|
|
#define is_euc(c) (0xa0 < ((unsigned char) (c)) && ((unsigned char) (c)) < 0xff)
|
|
|
|
/* FOR JIS CODE */
|
|
/* default jis third shift code, use for output */
|
|
#ifndef JIS_KSO
|
|
#define JIS_KSO 'B'
|
|
#endif
|
|
#ifndef JIS_KSI
|
|
#define JIS_KSI 'J'
|
|
#endif
|
|
/* in: \E$B or \E$@ */
|
|
/* out: \E(J or \E(B or \E(H */
|
|
#define jis_esc (0x1b)
|
|
#define jis_so (0x0e)
|
|
#define jis_so1 ('$')
|
|
#define jis_so2 ('B')
|
|
#define jis_si (0x0f)
|
|
#define jis_si1 ('(')
|
|
#define jis_si2 ('J')
|
|
#define is_esc(c) (((unsigned char) (c)) == jis_esc)
|
|
#define is_so1(c) (((unsigned char) (c)) == jis_so1)
|
|
#define is_so2(c) (((unsigned char) (c)) == jis_so2 || ((unsigned char) (c)) == '@')
|
|
#define is_si1(c) (((unsigned char) (c)) == jis_si1)
|
|
#define is_si2(c) (((unsigned char) (c)) == jis_si2 || ((unsigned char) (c)) == 'B' \
|
|
|| ((unsigned char) (c)) == 'H')
|
|
#define is_so(c) (((unsigned char) (c)) == jis_so)
|
|
#define is_si(c) (((unsigned char) (c)) == jis_si)
|
|
#define junet_kana1 ('(')
|
|
#define junet_kana2 ('I')
|
|
#define is_juk1(c) (((unsigned char) (c)) == junet_kana1)
|
|
#define is_juk2(c) (((unsigned char) (c)) == junet_kana2)
|
|
|
|
#define _KJ_ROMAN (0)
|
|
#define _KJ_KANJI (1)
|
|
#define _KJ_KANA (2)
|
|
|
|
/* FOR HEX */
|
|
#define HEXTAG ':'
|
|
#define hex2bin(x) \
|
|
( ((int) '0' <= ((int) (x)) && ((int) (x)) <= (int)'9')? \
|
|
(((int) (x))-(int)'0'): \
|
|
((int) 'a'<= ((int) (x)) && ((int) (x))<= (int) 'f')? \
|
|
(((int) (x)) - (int)'a'+10): \
|
|
(((int) (x)) - (int)'A'+10) )
|
|
#define bin2hex(x) \
|
|
( (((int) (x)) >= 10)? (((int) (x))-10 + (int) 'a'): (((int) (x)) + (int) '0') )
|
|
|
|
#else /* not _KANJI_C_ */
|
|
|
|
extern char *(*_dos_to_unix)(char *str, BOOL overwrite);
|
|
extern char *(*_unix_to_dos)(char *str, BOOL overwrite);
|
|
|
|
/*
|
|
* The following is needed for AIX systems that have
|
|
* their own #defines for strchr, strrchr, strstr
|
|
* and strtok.
|
|
*/
|
|
|
|
#ifdef strchr
|
|
#undef strchr
|
|
#endif /* strchr */
|
|
|
|
#ifdef strrchr
|
|
#undef strrchr
|
|
#endif /* strrchr */
|
|
|
|
#ifdef strstr
|
|
#undef strstr
|
|
#endif /* strstr */
|
|
|
|
#ifdef strtok
|
|
#undef strtok
|
|
#endif /* strtok */
|
|
|
|
/* Ensure we use our definitions. */
|
|
|
|
#define strchr sj_strchr
|
|
#define strrchr sj_strrchr
|
|
#define strstr sj_strstr
|
|
#define strtok sj_strtok
|
|
|
|
#endif /* _KANJI_C_ */
|
|
|
|
#define UNKNOWN_CODE (-1)
|
|
#define SJIS_CODE (0)
|
|
#define EUC_CODE (1)
|
|
#define JIS7_CODE (2)
|
|
#define JIS8_CODE (3)
|
|
#define JUNET_CODE (4)
|
|
#define HEX_CODE (5)
|
|
#define CAP_CODE (6)
|
|
#define DOSV_CODE SJIS_CODE
|
|
|
|
#define unix_to_dos(x,y) unix2dos_format(x,y)
|
|
#define dos_to_unix(x,y) dos2unix_format(x,y)
|
|
|
|
#endif /* _KANJI_H_ */
|