diff options
Diffstat (limited to 'vietnamese/vnterm/files/patch-main.c')
-rw-r--r-- | vietnamese/vnterm/files/patch-main.c | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/vietnamese/vnterm/files/patch-main.c b/vietnamese/vnterm/files/patch-main.c new file mode 100644 index 000000000000..48561c19633e --- /dev/null +++ b/vietnamese/vnterm/files/patch-main.c @@ -0,0 +1,185 @@ +--- main.c.orig Mon Aug 21 08:47:47 2000 ++++ main.c Sat Feb 10 05:42:17 2001 +@@ -76,6 +76,9 @@ + #include "data.h" + #include "error.h" + #include "menu.h" ++#ifndef NO_VIETNAMESE ++#include "vnvars.h" ++#endif /* NO_VIETNAMESE */ + + #ifdef att + #define ATT +@@ -421,7 +424,11 @@ + CFLUSH, CWERASE, CLNEXT + }; + static int d_disipline = NTTYDISC; ++#ifndef NO_VIETNAMESE ++static long int d_lmode = LCRTBS|LCRTERA|LCRTKIL|LPASS8; ++#else /* NO_VIETNAMESE */ + static long int d_lmode = LCRTBS|LCRTERA|LCRTKIL|LCTLECH; ++#endif /* NO_VIETNAMESE */ + #ifdef sony + static long int d_jmode = KM_SYSSJIS|KM_ASCII; + static struct jtchars d_jtc = { +@@ -586,6 +593,11 @@ + Boolean sunFunctionKeys; /* %%% should be widget resource? */ + Boolean wait_for_map; + Boolean useInsertMode; ++#ifndef NO_VIETNAMESE ++ Boolean vn_filter_keyboard; ++ Boolean vn_filter_screen; ++ unsigned int vn_erase_character; ++#endif /* NO_VIETNAMESE */ + } resource; + + /* used by VT (charproc.c) */ +@@ -613,6 +625,14 @@ + offset(wait_for_map), XtRString, "false"}, + {"useInsertMode", "UseInsertMode", XtRBoolean, sizeof (Boolean), + offset(useInsertMode), XtRString, "false"}, ++#ifndef NO_VIETNAMESE ++ {"vnFilterKeyboard", "VnFilterKeyboard", XtRBoolean, sizeof (Boolean), ++ offset(vn_filter_keyboard), XtRString, "true"}, ++ {"vnFilterScreen", "VnFilterScreen", XtRBoolean, sizeof (Boolean), ++ offset(vn_filter_screen), XtRString, "false"}, ++ {"vnEraseCharacter", "VnEraseCharacter", XtRInt, sizeof (unsigned int), ++ offset(vn_erase_character), XtRString, "0"}, ++#endif /* NO_VIETNAMESE */ + }; + #undef offset + +@@ -621,7 +641,7 @@ + "XTerm*SimpleMenu*HorizontalMargins: 16", + "XTerm*SimpleMenu*Sme.height: 16", + "XTerm*SimpleMenu*Cursor: left_ptr", +- "XTerm*mainMenu.Label: Main Options (no app-defaults)", ++ "XTerm*mainMenu.Label: VNTERM v2.1.1 (SGI version by Tin Le)", + "XTerm*vtMenu.Label: VT Options (no app-defaults)", + "XTerm*fontMenu.Label: VT Fonts (no app-defaults)", + "XTerm*tekMenu.Label: Tek Options (no app-defaults)", +@@ -693,6 +713,13 @@ + {"+im", "*useInsertMode", XrmoptionNoArg, (caddr_t) "off"}, + {"-vb", "*visualBell", XrmoptionNoArg, (caddr_t) "on"}, + {"+vb", "*visualBell", XrmoptionNoArg, (caddr_t) "off"}, ++#ifndef NO_VIETNAMESE ++{"-vnk", "*vnFilterKeyboard", XrmoptionNoArg, (caddr_t) "on"}, ++{"+vnk", "*vnFilterKeyboard", XrmoptionNoArg, (caddr_t) "off"}, ++{"-vns", "*vnFilterScreen", XrmoptionNoArg, (caddr_t) "on"}, ++{"+vns", "*vnFilterScreen", XrmoptionNoArg, (caddr_t) "off"}, ++{"-vne", "*vnEraseCharacter", XrmoptionSepArg, (caddr_t) "0"}, ++#endif /* NO_VIETNAMESE */ + {"-wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "on"}, + {"+wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "off"}, + /* bogus old compatibility stuff for which there are +@@ -770,6 +797,11 @@ + #endif + { "-/+vb", "turn on/off visual bell" }, + { "-/+wf", "turn on/off wait for map before command exec" }, ++#ifndef NO_VIETNAMESE ++{ "-/+vnk", "turn on/off Vietnamese keyboard filter" }, ++{ "-/+vns", "turn on/off Vietnamese screen filter" }, ++{ "-vne ASCII_code", "specify erase character for Vietnamese typing" }, ++#endif /* NO_VIETNAMESE */ + { "-e command args ...", "command to execute" }, + { "%geom", "Tek window geometry" }, + { "#geom", "icon window geometry" }, +@@ -815,6 +847,11 @@ + + fprintf (stderr, "\r\n\nType %s -help for a full description.\r\n\n", + ProgramName); ++fprintf(stderr, "\n"); ++fprintf(stderr, "Version: VISCII & VIQR 1.1\n"); ++fprintf(stderr, "Ported by: Cuong T. Nguyen (cuong@haydn.Stanford.EDU\n"); ++fprintf(stderr, " TriChlor Software Group\n"); ++fprintf(stderr, "Ported to 4.4BSD and X11R6.5.1 by: David E. O'Brien <obrien@NUXI.com>\n"); + exit (1); + } + +@@ -836,6 +873,11 @@ + putc ('\n', stderr); + } + putc ('\n', stderr); ++fprintf(stderr, "\n"); ++fprintf(stderr, "Version: VISCII & VIQR 1.1\n"); ++fprintf(stderr, "Ported by: Cuong T. Nguyen (cuong@haydn.Stanford.EDU\n"); ++fprintf(stderr, " TriChlor Software Group\n"); ++fprintf(stderr, "Ported to 4.4BSD and X11R6.5.1 by: David E. O'Brien <obrien@NUXI.com>\n"); + + exit (0); + } +@@ -926,6 +968,11 @@ + int mode; + char *base_name(); + int xerror(), xioerror(); ++#ifndef NO_VIETNAMESE ++#ifdef USE_SYSV_TERMIO ++ struct termio deftio; ++#endif /* USE_SYSV_TERMIO */ ++#endif /* NO_VIETNAMESE */ + + XtSetLanguageProc (NULL, NULL, NULL); + +@@ -1150,6 +1197,39 @@ + XtNumber(application_resources), NULL, 0); + + waiting_for_initial_map = resource.wait_for_map; ++#ifndef NO_VIETNAMESE ++{ ++ vn_filter_keyboard = resource.vn_filter_keyboard; ++ vn_filter_screen = resource.vn_filter_screen; ++ vn_erase_character = resource.vn_erase_character; ++ ++ vn_keyboard_id = vk_init(VK_ST_VIETNAMESE, VK_DEFAULT_ESC, VK_DEFAULT_BS); ++ _Set_Vn_Title(VK_ST_VIETNAMESE); ++ ++#ifdef USE_SYSV_TERMIO /* deftio has been initialized above */ ++ vn_erase_char = deftio.c_cc[VERASE]; ++#else /* USE_SYSV_TERMIO */ ++ { ++ struct sgttyb attr; ++ ++ if (ioctl (0, TIOCGETP, (char *)&attr) >= 0) { ++ vn_erase_char = attr.sg_erase; ++ } else { ++ vn_erase_char = VK_DEFAULT_BS; ++ } ++ } ++#endif /* USE_SYSV_TERMIO */ ++ if (vn_erase_character != 0) { /* not specified by user, take from tty characteristics */ ++ vn_erase_char = (unsigned int) vn_erase_character; ++ } ++ vk_set(vn_keyboard_id, (unsigned int) vn_erase_char, (int)VK_SET_BS); ++ ++ vn_screen_id = vk_init(VK_ST_VIETNAMESE, VK_DEFAULT_ESC, VK_DEFAULT_BS); ++ /* screen filter is batch mode, as we don't want to spew backspaces ++ all over the true drawing screen */ ++ vk_set(vn_screen_id, 1, VK_SET_BATCH); ++} ++#endif /* NO_VIETNAMESE */ + + /* + * ICCCM delete_window. +@@ -1255,6 +1335,11 @@ + + if (screen->savelines < 0) screen->savelines = 0; + ++#ifndef NO_VIETNAMESE ++ update_vnfilterkeyboard(); ++ update_vnfilterscreen(); ++#endif /* NO_VIETNAMESE */ ++ + term->flags = 0; + if (!screen->jumpscroll) { + term->flags |= SMOOTHSCROLL; +@@ -2417,6 +2502,10 @@ + HsSysError(cp_pipe[1], ERROR_TIOCSETC); + #endif /* TIOCSLTC */ + #ifdef TIOCLSET ++#ifndef NO_VIETNAMESE ++ lmode |= LPASS8; ++ lmode &= ~LCTLECH; ++#endif /* NO_VIETNAMESE */ + if (ioctl (tty, TIOCLSET, (char *)&lmode) == -1) + HsSysError(cp_pipe[1], ERROR_TIOCLSET); + #endif /* TIOCLSET */ |