373 /* 150 */ 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
374 /* 160 */ 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
375 /* 170 */ 'X', 'Y', 'Z', '{', '|', '}', '~', 0,
376 /* 200 - 377 aren't mapped (they're stoppers). */
377 };
378
379 static struct streamtab ldtrinfo;
380
381 static struct fmodsw fsw = {
382 "ldterm",
383 &ldtrinfo,
384 D_MTQPAIR | D_MP
385 };
386
387 static struct modlstrmod modlstrmod = {
388 &mod_strmodops, "terminal line discipline", &fsw
389 };
390
391
392 static struct modlinkage modlinkage = {
393 MODREV_1, &modlstrmod, NULL
394 };
395
396
397 int
398 _init(void)
399 {
400 return (mod_install(&modlinkage));
401 }
402
403 int
404 _fini(void)
405 {
406 return (mod_remove(&modlinkage));
407 }
408
409 int
410 _info(struct modinfo *modinfop)
411 {
412 return (mod_info(&modlinkage, modinfop));
413 }
488 __ldterm_memwidth_pccs
489 },
490 {
491 __ldterm_dispwidth_utf8,
492 __ldterm_memwidth_utf8
493 }
494 };
495
496 /*
497 * The default codeset is presumably C locale's ISO 646 in EUC but
498 * the data structure at below defined as the default codeset data also
499 * support any single byte (EUC) locales.
500 */
501 static const ldterm_cs_data_t default_cs_data = {
502 LDTERM_DATA_VERSION,
503 LDTERM_CS_TYPE_EUC,
504 (uchar_t)0,
505 (uchar_t)0,
506 (char *)NULL,
507 {
508 '\0', '\0', '\0', '\0',
509 '\0', '\0', '\0', '\0',
510 '\0', '\0', '\0', '\0',
511 '\0', '\0', '\0', '\0',
512 '\0', '\0', '\0', '\0',
513 '\0', '\0', '\0', '\0',
514 '\0', '\0', '\0', '\0',
515 '\0', '\0', '\0', '\0',
516 '\0', '\0', '\0', '\0',
517 '\0', '\0', '\0', '\0'
518 }
519 };
520
521 /*
522 * The following tables are from either u8_textprep.c or uconv.c at
523 * usr/src/common/unicode/. The tables are used to figure out corresponding
524 * UTF-8 character byte lengths and also the validity of given character bytes.
525 */
526 extern const int8_t u8_number_of_bytes[];
527 extern const uchar_t u8_masks_tbl[];
528 extern const uint8_t u8_valid_min_2nd_byte[];
529 extern const uint8_t u8_valid_max_2nd_byte[];
530
531 /*
532 * Unicode character width definition tables from uwidth.c:
533 */
534 extern const ldterm_unicode_data_cell_t ldterm_ucode[][16384];
535
536 #ifdef LDDEBUG
537 int ldterm_debug = 0;
|
373 /* 150 */ 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
374 /* 160 */ 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
375 /* 170 */ 'X', 'Y', 'Z', '{', '|', '}', '~', 0,
376 /* 200 - 377 aren't mapped (they're stoppers). */
377 };
378
379 static struct streamtab ldtrinfo;
380
381 static struct fmodsw fsw = {
382 "ldterm",
383 &ldtrinfo,
384 D_MTQPAIR | D_MP
385 };
386
387 static struct modlstrmod modlstrmod = {
388 &mod_strmodops, "terminal line discipline", &fsw
389 };
390
391
392 static struct modlinkage modlinkage = {
393 MODREV_1, { &modlstrmod, NULL }
394 };
395
396
397 int
398 _init(void)
399 {
400 return (mod_install(&modlinkage));
401 }
402
403 int
404 _fini(void)
405 {
406 return (mod_remove(&modlinkage));
407 }
408
409 int
410 _info(struct modinfo *modinfop)
411 {
412 return (mod_info(&modlinkage, modinfop));
413 }
488 __ldterm_memwidth_pccs
489 },
490 {
491 __ldterm_dispwidth_utf8,
492 __ldterm_memwidth_utf8
493 }
494 };
495
496 /*
497 * The default codeset is presumably C locale's ISO 646 in EUC but
498 * the data structure at below defined as the default codeset data also
499 * support any single byte (EUC) locales.
500 */
501 static const ldterm_cs_data_t default_cs_data = {
502 LDTERM_DATA_VERSION,
503 LDTERM_CS_TYPE_EUC,
504 (uchar_t)0,
505 (uchar_t)0,
506 (char *)NULL,
507 {
508 { '\0', '\0', '\0', '\0' },
509 { '\0', '\0', '\0', '\0' },
510 { '\0', '\0', '\0', '\0' },
511 { '\0', '\0', '\0', '\0' },
512 { '\0', '\0', '\0', '\0' },
513 { '\0', '\0', '\0', '\0' },
514 { '\0', '\0', '\0', '\0' },
515 { '\0', '\0', '\0', '\0' },
516 { '\0', '\0', '\0', '\0' },
517 { '\0', '\0', '\0', '\0' }
518 }
519 };
520
521 /*
522 * The following tables are from either u8_textprep.c or uconv.c at
523 * usr/src/common/unicode/. The tables are used to figure out corresponding
524 * UTF-8 character byte lengths and also the validity of given character bytes.
525 */
526 extern const int8_t u8_number_of_bytes[];
527 extern const uchar_t u8_masks_tbl[];
528 extern const uint8_t u8_valid_min_2nd_byte[];
529 extern const uint8_t u8_valid_max_2nd_byte[];
530
531 /*
532 * Unicode character width definition tables from uwidth.c:
533 */
534 extern const ldterm_unicode_data_cell_t ldterm_ucode[][16384];
535
536 #ifdef LDDEBUG
537 int ldterm_debug = 0;
|