1: /* 2: Author: Frank da Cruz (fdc@columbia.edu, FDCCU@CUVMA.BITNET), 3: Columbia University Center for Computing Activities. 4: First released January 1985. 5: Copyright (C) 1985, 1992, Trustees of Columbia University in the City of New 6: York. Permission is granted to any individual or institution to use this 7: software as long as it is not sold for profit. This copyright notice must be 8: retained. This software may not be included in commercial products without 9: written permission of Columbia University. 10: */ 11: #ifndef CKCXLA_H /* Guard against multiple inclusion */ 12: #define CKCXLA_H 13: 14: #ifdef NOCSETS 15: #ifdef KANJI 16: #undef KANJI 17: #endif /* KANJI */ 18: #ifdef CYRILLIC 19: #undef CYRILLIC 20: #endif /* CYRILLIC */ 21: #ifdef LATIN2 22: #undef LATIN2 23: #endif /* LATIN2 */ 24: 25: #else /* Rest of this file... */ 26: 27: #ifndef NOLATIN2 /* If they didn't say "no Latin-2" */ 28: #ifndef LATIN2 /* Then if LATIN2 isn't already */ 29: #define LATIN2 /* defined, define it. */ 30: #endif /* LATIN2 */ 31: #endif /* NOLATIN2 */ 32: 33: #ifndef NOCYRIL /* If they didn't say "no Cyrillic" */ 34: #ifndef CYRILLIC /* Then if CYRILLIC isn't already */ 35: #define CYRILLIC /* defined, define it. */ 36: #endif /* CYRILLIC */ 37: #endif /* NOCYRIL */ 38: 39: /* File ckcxla.h -- Character-set-related definitions, system independent */ 40: 41: /* Codes for Kermit Transfer Syntax Level (obsolete) */ 42: 43: #define TS_L0 0 /* Level 0 (Transparent) */ 44: #define TS_L1 1 /* Level 1 (one standard character set) */ 45: #define TS_L2 2 /* Level 2 (multiple character sets in same file) */ 46: 47: #define UNK 63 /* Symbol to use for unknown character (63 = ?) */ 48: 49: /* 50: Codes for the base alphabet of a given character set. 51: These are assigned in roughly ISO 8859 order. 52: (Each is assumed to include ASCII/Roman.) 53: */ 54: #define AL_UNIV 0 /* Universal (like ISO 10646) */ 55: #define AL_ROMAN 1 /* Roman (Latin) alphabet */ 56: #define AL_CYRIL 2 /* Cyrillic alphabet */ 57: #define AL_ARABIC 3 /* Arabic */ 58: #define AL_GREEK 4 /* Greek */ 59: #define AL_HEBREW 5 /* Hebrew */ 60: #define AL_KANA 6 /* Japanese Katakana */ 61: #define AL_JAPAN 7 /* Japanese Katakana+Kanji ideograms */ 62: #define AL_HAN 8 /* Chinese/Japanese/Korean ideograms */ 63: #define AL_INDIA 9 /* Indian scripts (ISCII) */ 64: /* Add more here... */ 65: #define AL_UNK 999 /* Unknown (transparent) */ 66: 67: /* Codes for languages */ 68: /* 69: NOTE: It would perhaps be better to use ISO 639-1988 2-letter "Codes for 70: Representation of Names of Languages" here, shown in the comments below. 71: */ 72: #define L_ASCII 0 /* EN ASCII, English */ 73: #define L_USASCII 0 /* EN ASCII, English */ 74: #define L_DUTCH 1 /* NL Dutch */ 75: #define L_FINNISH 2 /* FI Finnish */ 76: #define L_FRENCH 3 /* FR French */ 77: #define L_GERMAN 4 /* DE German */ 78: #define L_HUNGARIAN 5 /* HU Hungarian */ 79: #define L_ITALIAN 6 /* IT Italian */ 80: #define L_NORWEGIAN 7 /* NO Norwegian */ 81: #define L_PORTUGUESE 8 /* PT Portuguese */ 82: #define L_SPANISH 9 /* ES Spanish */ 83: #define L_SWEDISH 10 /* SV Swedish */ 84: #define L_SWISS 11 /* RM Swiss (Rhaeto-Romance) */ 85: #define L_DANISH 12 /* DA Danish */ 86: #define L_ICELANDIC 13 /* IS Icelandic */ 87: 88: #ifdef CYRILLIC /* RU Russian */ 89: #define L_RUSSIAN 14 90: #ifndef KANJI 91: #define MAXLANG 14 92: #endif /* KANJI */ 93: #endif /* CYRILLIC */ 94: 95: #ifdef KANJI /* JA Japanese */ 96: #ifndef CYRILLIC 97: #define L_JAPANESE 14 98: #define MAXLANG 14 99: #else 100: #define L_JAPANESE 15 101: #define MAXLANG 15 102: #endif /* CYRILLIC */ 103: #endif /* KANJI */ 104: 105: #ifndef MAXLANG 106: #define MAXLANG 14 107: #endif /* MAXLANG */ 108: 109: #ifdef COMMENT 110: /* 111: The ones below are not used yet. This list needs to be expanded and 112: organized, and something must be done about the hard coded numbers, because 113: they will be wrong if CYRILLIC and/or KANJI are deselected. But we can't do 114: "#define L_CHINESE L_JAPANESE + 1" because that causes recursion in the 115: preprocessor. 116: */ 117: #define L_CHINESE 16 /* ZH */ 118: #define L_KOREAN 17 /* KO */ 119: #define L_ARABIC 18 /* AR */ 120: #define L_HEBREW 19 /* IW */ 121: #define L_GREEK 20 /* EL */ 122: #define L_TURKISH 21 /* TR */ 123: /* etc... */ 124: #endif /* COMMENT */ 125: 126: /* 127: File character-sets are defined in the system-specific ck?xla.h file, 128: except for the following one, which must be available to all versions: 129: */ 130: #define FC_TRANSP 254 /* Transparent */ 131: 132: /* 133: Designators for Kermit's transfer character sets. These are all standard 134: sets, or based on them. Symbols must be unique in the first 8 characters, 135: because some C preprocessors have this limit. 136: */ 137: /* LIST1 */ 138: #define TC_TRANSP 0 /* Transparent, no character translation */ 139: #define TC_USASCII 1 /* US 7-bit ASCII */ 140: #define TC_1LATIN 2 /* ISO 8859-1, Latin-1 */ 141: #define TC_2LATIN 3 /* ISO 8859-2, Latin-2 */ 142: #define TC_CYRILL 4 /* ISO 8859-5, Latin/Cyrillic */ 143: #define TC_JEUC 5 /* Japanese EUC */ 144: 145: #define MAXTCSETS 5 /* Highest Transfer Character Set Number */ 146: 147: #ifdef COMMENT 148: /* 149: Not used yet. 150: */ 151: #define TC_3LATIN 6 /* ISO 8859-3, Latin-3 */ 152: #define TC_4LATIN 7 /* ISO 8859-4, Latin-4 */ 153: #define TC_5LATIN 8 /* ISO 8859-9, Latin-5 */ 154: #define TC_ARABIC 9 /* ISO-8859-6, Latin/Arabic */ 155: #define TC_GREEK 10 /* ISO-8859-7, Latin/Greek */ 156: #define TC_HEBREW 11 /* ISO-8859-8, Latin/Hebrew */ 157: #define TC_JIS208 12 /* Japanese JIS X 0208 multibyte set */ 158: #define TC_CHINES 13 /* Chinese Standard GB 2312-80 */ 159: #define TC_KOREAN 14 /* Korean KS C 5601-1987 */ 160: #define TC_I10646 15 /* ISO DIS 10646 (not defined yet) */ 161: /* etc... */ 162: #endif /* COMMENT */ 163: 164: /* Structure for character-set information */ 165: 166: struct csinfo { 167: char *name; /* Name of character set */ 168: int size; /* Size (128 or 256) */ 169: int code; /* Like TC_1LATIN, etc. */ 170: char *designator; /* Designator, like I2/100 = Latin-1 */ 171: int alphabet; /* Base alphabet */ 172: }; 173: 174: /* Structure for language information */ 175: 176: struct langinfo { 177: int id; /* Language ID code (L_whatever) */ 178: int fc; /* File character set to use */ 179: int tc; /* Transfer character set to use */ 180: char *description; /* Description of language */ 181: }; 182: 183: /* Now take in the system-specific definitions */ 184: 185: #ifdef UNIX 186: #include "ckuxla.h" 187: #endif /* UNIX */ 188: 189: #ifdef OSK /* OS-9 */ 190: #include "ckuxla.h" 191: #endif /* OS-9 */ 192: 193: #ifdef VMS /* VAX/VMS */ 194: #include "ckuxla.h" 195: #endif /* VMS */ 196: 197: #ifdef GEMDOS /* Atari ST */ 198: #include "ckuxla.h" 199: #endif /* GEMDOS */ 200: 201: #ifdef MAC /* Macintosh */ 202: #include "ckmxla.h" 203: #endif /* MAC */ 204: 205: #ifdef OS2 /* OS/2 */ 206: #include "ckuxla.h" /* Uses big UNIX version */ 207: #endif /* OS2 */ 208: 209: #ifdef AMIGA /* Commodore Amiga */ 210: #include "ckuxla.h" 211: #endif /* AMIGA */ 212: 213: #ifdef datageneral /* Data General MV AOS/VS */ 214: #include "ckuxla.h" 215: #endif /* datageneral */ 216: 217: #endif /* NOCSETS */ 218: 219: #endif /* CKCXLA_H */ 220: 221: #ifdef KANJI 222: _PROTOTYP( int xkanjf, (void) ); 223: _PROTOTYP( int xkanjz, (int (*)(char)) ); 224: _PROTOTYP( int xkanji, (int, int (*)(char)) ); 225: #endif /* KANJI */ 226: 227: /* End of ckcxla.h */