[vte] emulation: Migrating from terminfo: miscellaneous
- From: Egmont Koblinger <egmontkob src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vte] emulation: Migrating from terminfo: miscellaneous
- Date: Mon, 19 May 2014 13:09:43 +0000 (UTC)
commit 2e549d2372740b10163a90471991f8fad260f461
Author: Egmont Koblinger <egmont gmail com>
Date: Mon May 19 15:03:20 2014 +0200
emulation: Migrating from terminfo: miscellaneous
Hardwire the behavior of some random operations, rather than relying on
terminfo.
Drop support for "uc", there's no corresponding xterm terminfo entry.
src/caps.c | 3 +
src/vteseq-2.gperf | 50 +++++++-------
src/vteseq-n.gperf | 6 +-
src/vteseq.c | 192 ++-------------------------------------------------
4 files changed, 40 insertions(+), 211 deletions(-)
---
diff --git a/src/caps.c b/src/caps.c
index ae94f39..620430b 100644
--- a/src/caps.c
+++ b/src/caps.c
@@ -70,6 +70,9 @@ struct _vte_capability_string _vte_xterm_capability_strings[] = {
{ESC "%%@", "iso8859-1-character-set", 0},
{ESC "%%G", "utf-8-character-set", 0},
+ {ESC "(0", "alternate-character-set-start", 0},
+ {ESC "(B", "alternate-character-set-end", 0},
+
{ESC "7", "save-cursor", 0},
{ESC "8", "restore-cursor", 0},
{ESC "=", "application-keypad", 0},
diff --git a/src/vteseq-2.gperf b/src/vteseq-2.gperf
index 8aff9f5..1fdc10f 100644
--- a/src/vteseq-2.gperf
+++ b/src/vteseq-2.gperf
@@ -152,9 +152,9 @@ struct vteseq_2_struct {
#"SX", VTE_SEQUENCE_HANDLER_NULL
#"UP", VTE_SEQUENCE_HANDLER(vte_sequence_handler_UP)
#"XF", VTE_SEQUENCE_HANDLER_NULL
-"ae", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ae)
+#"ae", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ae)
#"al", VTE_SEQUENCE_HANDLER(vte_sequence_handler_al)
-"as", VTE_SEQUENCE_HANDLER(vte_sequence_handler_as)
+#"as", VTE_SEQUENCE_HANDLER(vte_sequence_handler_as)
#"bc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_le)
#"bl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bl)
#"bt", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bt)
@@ -175,10 +175,10 @@ struct vteseq_2_struct {
"dm", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
#"do", VTE_SEQUENCE_HANDLER(vte_sequence_handler_do)
#"ds", VTE_SEQUENCE_HANDLER_NULL
-"eA", VTE_SEQUENCE_HANDLER(vte_sequence_handler_eA)
+#"eA", VTE_SEQUENCE_HANDLER(vte_sequence_handler_eA)
#"ec", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ec)
"ed", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
-"ei", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ei)
+#"ei", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ei)
"ff", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
#"fs", VTE_SEQUENCE_HANDLER_NULL
#"hd", VTE_SEQUENCE_HANDLER_NULL
@@ -189,7 +189,7 @@ struct vteseq_2_struct {
#"iP", VTE_SEQUENCE_HANDLER_NULL
#"ic", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ic)
#"if", VTE_SEQUENCE_HANDLER_NULL
-"im", VTE_SEQUENCE_HANDLER(vte_sequence_handler_im)
+#"im", VTE_SEQUENCE_HANDLER(vte_sequence_handler_im)
#"ip", VTE_SEQUENCE_HANDLER_NULL
#"is", VTE_SEQUENCE_HANDLER_NULL
#"k0", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
@@ -221,11 +221,11 @@ struct vteseq_2_struct {
#"ka", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
#"kb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_kb)
#"kd", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
-"ke", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ke)
+#"ke", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ke)
#"kh", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
#"kl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
#"kr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
-"ks", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ks)
+#"ks", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ks)
#"kt", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
#"ku", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
#"l0", VTE_SEQUENCE_HANDLER_NULL
@@ -241,15 +241,15 @@ struct vteseq_2_struct {
#"la", VTE_SEQUENCE_HANDLER_NULL
#"le", VTE_SEQUENCE_HANDLER(vte_sequence_handler_le)
#"ll", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ll)
-"mb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mb)
-"md", VTE_SEQUENCE_HANDLER(vte_sequence_handler_md)
-"me", VTE_SEQUENCE_HANDLER(vte_sequence_handler_me)
-"mh", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mh)
-"mk", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mk)
+#"mb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mb)
+#"md", VTE_SEQUENCE_HANDLER(vte_sequence_handler_md)
+#"me", VTE_SEQUENCE_HANDLER(vte_sequence_handler_me)
+#"mh", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mh)
+#"mk", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mk)
#"mm", VTE_SEQUENCE_HANDLER_NULL
#"mo", VTE_SEQUENCE_HANDLER_NULL
-"mp", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mp)
-"mr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mr)
+#"mp", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mp)
+#"mr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mr)
#"nd", VTE_SEQUENCE_HANDLER(vte_sequence_handler_nd)
#"nw", VTE_SEQUENCE_HANDLER(vte_sequence_handler_nw)
#"pO", VTE_SEQUENCE_HANDLER_NULL
@@ -265,27 +265,27 @@ struct vteseq_2_struct {
#"r2", VTE_SEQUENCE_HANDLER_NULL
#"r3", VTE_SEQUENCE_HANDLER_NULL
#"rP", VTE_SEQUENCE_HANDLER_NULL
-"rc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_rc)
+#"rc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_rc)
#"rf", VTE_SEQUENCE_HANDLER_NULL
#"rp", VTE_SEQUENCE_HANDLER_NULL
#"rs", VTE_SEQUENCE_HANDLER_NULL
#"sa", VTE_SEQUENCE_HANDLER_NULL
-"sc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sc)
-"se", VTE_SEQUENCE_HANDLER(vte_sequence_handler_se)
+#"sc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sc)
+#"se", VTE_SEQUENCE_HANDLER(vte_sequence_handler_se)
#"sf", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sf)
-"so", VTE_SEQUENCE_HANDLER(vte_sequence_handler_so)
+#"so", VTE_SEQUENCE_HANDLER(vte_sequence_handler_so)
#"sr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sr)
#"st", VTE_SEQUENCE_HANDLER(vte_sequence_handler_st)
#"ta", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ta)
"te", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
"ti", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
#"ts", VTE_SEQUENCE_HANDLER_NULL
-"uc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_uc)
-"ue", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ue)
+#"uc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_uc)
+#"ue", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ue)
#"up", VTE_SEQUENCE_HANDLER(vte_sequence_handler_up)
-"us", VTE_SEQUENCE_HANDLER(vte_sequence_handler_us)
-"vb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vb)
-"ve", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ve)
-"vi", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vi)
-"vs", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vs)
+#"us", VTE_SEQUENCE_HANDLER(vte_sequence_handler_us)
+#"vb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vb)
+#"ve", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ve)
+#"vi", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vi)
+#"vs", VTE_SEQUENCE_HANDLER(vte_sequence_handler_vs)
#"wi", VTE_SEQUENCE_HANDLER_NULL
diff --git a/src/vteseq-n.gperf b/src/vteseq-n.gperf
index 1cb2e7d..39a94f2 100644
--- a/src/vteseq-n.gperf
+++ b/src/vteseq-n.gperf
@@ -44,7 +44,7 @@ struct vteseq_n_struct {
"soft-reset", VTE_SEQUENCE_HANDLER(vte_sequence_handler_soft_reset)
"cursor-down", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_down)
#"memory-lock", VTE_SEQUENCE_HANDLER_NULL
-"save-cursor", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sc)
+"save-cursor", VTE_SEQUENCE_HANDLER(vte_sequence_handler_save_cursor)
"scroll-down", VTE_SEQUENCE_HANDLER(vte_sequence_handler_scroll_down)
"change-color-bel", VTE_SEQUENCE_HANDLER(vte_sequence_handler_change_color_bel)
"change-color-st", VTE_SEQUENCE_HANDLER(vte_sequence_handler_change_color_st)
@@ -64,7 +64,7 @@ struct vteseq_n_struct {
#"change-logfile", VTE_SEQUENCE_HANDLER_NULL
"cursor-forward", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_forward)
#"dec-media-copy", VTE_SEQUENCE_HANDLER_NULL
-"restore-cursor", VTE_SEQUENCE_HANDLER(vte_sequence_handler_rc)
+"restore-cursor", VTE_SEQUENCE_HANDLER(vte_sequence_handler_restore_cursor)
"set-icon-title", VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_icon_title)
"cursor-back-tab", VTE_SEQUENCE_HANDLER(vte_sequence_handler_back_tab)
"cursor-backward", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_backward)
@@ -119,6 +119,8 @@ struct vteseq_n_struct {
#"ansi-conformance-level-1", VTE_SEQUENCE_HANDLER_NULL
#"ansi-conformance-level-2", VTE_SEQUENCE_HANDLER_NULL
#"ansi-conformance-level-3", VTE_SEQUENCE_HANDLER_NULL
+"alternate-character-set-start", VTE_SEQUENCE_HANDLER(vte_sequence_handler_alternate_character_set_start)
+"alternate-character-set-end", VTE_SEQUENCE_HANDLER(vte_sequence_handler_alternate_character_set_end)
"change-background-colors-bel", VTE_SEQUENCE_HANDLER(vte_sequence_handler_change_background_color_bel)
"change-background-colors-st", VTE_SEQUENCE_HANDLER(vte_sequence_handler_change_background_color_st)
"reset-background-colors", VTE_SEQUENCE_HANDLER(vte_sequence_handler_reset_background_color)
diff --git a/src/vteseq.c b/src/vteseq.c
index 549788a..fb9cdab 100644
--- a/src/vteseq.c
+++ b/src/vteseq.c
@@ -748,15 +748,15 @@ vte_sequence_handler_decset_internal(VteTerminal *terminal,
{1048, 0, 0, 0,
0,
0,
- vte_sequence_handler_rc,
- vte_sequence_handler_sc,},
+ vte_sequence_handler_restore_cursor,
+ vte_sequence_handler_save_cursor,},
/* 1049: Use alternate screen buffer, saving the cursor
* position. */
{1049, 0, 0, PRIV_OFFSET(screen),
PRIV_OFFSET(normal_screen),
PRIV_OFFSET(alternate_screen),
- vte_sequence_handler_rc,
- vte_sequence_handler_sc,},
+ vte_sequence_handler_restore_cursor,
+ vte_sequence_handler_save_cursor,},
/* 2004: Bracketed paste mode. */
{2004, PRIV_OFFSET(bracketed_paste_mode), 0, 0,
FALSE,
@@ -927,14 +927,14 @@ vte_sequence_handler_decset_internal(VteTerminal *terminal,
/* End alternate character set. */
static void
-vte_sequence_handler_ae (VteTerminal *terminal, GValueArray *params)
+vte_sequence_handler_alternate_character_set_end (VteTerminal *terminal, GValueArray *params)
{
terminal->pvt->screen->alternate_charset = FALSE;
}
/* Start using alternate character set. */
static void
-vte_sequence_handler_as (VteTerminal *terminal, GValueArray *params)
+vte_sequence_handler_alternate_character_set_start (VteTerminal *terminal, GValueArray *params)
{
terminal->pvt->screen->alternate_charset = TRUE;
}
@@ -1332,13 +1332,6 @@ vte_sequence_handler_cursor_down (VteTerminal *terminal, GValueArray *params)
screen->cursor_current.row = MIN(screen->cursor_current.row + val, end);
}
-/* Start using alternate character set. */
-static void
-vte_sequence_handler_eA (VteTerminal *terminal, GValueArray *params)
-{
- vte_sequence_handler_ae (terminal, params);
-}
-
/* Erase characters starting at the cursor position (overwriting N with
* spaces, but not moving the cursor). */
static void
@@ -1391,13 +1384,6 @@ vte_sequence_handler_erase_characters (VteTerminal *terminal, GValueArray *param
terminal->pvt->text_deleted_flag = TRUE;
}
-/* End insert mode. */
-static void
-vte_sequence_handler_ei (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->screen->insert_mode = FALSE;
-}
-
/* Form-feed / next-page. */
static void
vte_sequence_handler_form_feed (VteTerminal *terminal, GValueArray *params)
@@ -1428,13 +1414,6 @@ vte_sequence_handler_insert_blank_characters (VteTerminal *terminal, GValueArray
vte_sequence_handler_multiple_r(terminal, params, _vte_sequence_handler_insert_character);
}
-/* Begin insert mode. */
-static void
-vte_sequence_handler_im (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->screen->insert_mode = TRUE;
-}
-
/* Cursor down 1 line, with scrolling. */
static void
vte_sequence_handler_index (VteTerminal *terminal, GValueArray *params)
@@ -1442,20 +1421,6 @@ vte_sequence_handler_index (VteTerminal *terminal, GValueArray *params)
vte_sequence_handler_line_feed (terminal, params);
}
-/* Keypad mode end. */
-static void
-vte_sequence_handler_ke (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->keypad_mode = VTE_KEYMODE_NORMAL;
-}
-
-/* Keypad mode start. */
-static void
-vte_sequence_handler_ks (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->keypad_mode = VTE_KEYMODE_APPLICATION;
-}
-
/* Cursor left. */
static void
vte_sequence_handler_backspace (VteTerminal *terminal, GValueArray *params)
@@ -1490,59 +1455,6 @@ vte_sequence_handler_cursor_backward (VteTerminal *terminal, GValueArray *params
screen->cursor_current.col = MAX(screen->cursor_current.col - val, 1);
}
-/* Blink on. */
-static void
-vte_sequence_handler_mb (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->screen->defaults.attr.blink = 1;
-}
-
-/* Bold on. */
-static void
-vte_sequence_handler_md (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->screen->defaults.attr.bold = 1;
- terminal->pvt->screen->defaults.attr.half = 0;
-}
-
-/* End modes. */
-static void
-vte_sequence_handler_me (VteTerminal *terminal, GValueArray *params)
-{
- _vte_terminal_set_default_attributes(terminal);
-}
-
-/* Half-bright on. */
-static void
-vte_sequence_handler_mh (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->screen->defaults.attr.half = 1;
- terminal->pvt->screen->defaults.attr.bold = 0;
-}
-
-/* Invisible on. */
-static void
-vte_sequence_handler_mk (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->screen->defaults.attr.invisible = 1;
-}
-
-/* Protect on. */
-static void
-vte_sequence_handler_mp (VteTerminal *terminal, GValueArray *params)
-{
- /* unused; bug 499893
- terminal->pvt->screen->defaults.attr.protect = 1;
- */
-}
-
-/* Reverse on. */
-static void
-vte_sequence_handler_mr (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->screen->defaults.attr.reverse = 1;
-}
-
/* Cursor right N columns. */
static void
vte_sequence_handler_cursor_forward (VteTerminal *terminal, GValueArray *params)
@@ -1585,7 +1497,7 @@ vte_sequence_handler_noop (VteTerminal *terminal, GValueArray *params)
/* Restore cursor (position). */
static void
-vte_sequence_handler_rc (VteTerminal *terminal, GValueArray *params)
+vte_sequence_handler_restore_cursor (VteTerminal *terminal, GValueArray *params)
{
VteScreen *screen;
screen = terminal->pvt->screen;
@@ -1599,7 +1511,7 @@ vte_sequence_handler_rc (VteTerminal *terminal, GValueArray *params)
/* Save cursor (position). */
static void
-vte_sequence_handler_sc (VteTerminal *terminal, GValueArray *params)
+vte_sequence_handler_save_cursor (VteTerminal *terminal, GValueArray *params)
{
VteScreen *screen;
screen = terminal->pvt->screen;
@@ -1741,13 +1653,6 @@ vte_sequence_handler_scroll_up (VteTerminal *terminal, GValueArray *params)
_vte_terminal_scroll_text (terminal, -val);
}
-/* Standout end. */
-static void
-vte_sequence_handler_se (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->screen->defaults.attr.reverse = 0;
-}
-
/* Cursor down 1 line, with scrolling. */
static void
vte_sequence_handler_line_feed (VteTerminal *terminal, GValueArray *params)
@@ -1755,13 +1660,6 @@ vte_sequence_handler_line_feed (VteTerminal *terminal, GValueArray *params)
_vte_terminal_cursor_down (terminal);
}
-/* Standout start. */
-static void
-vte_sequence_handler_so (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->screen->defaults.attr.reverse = 1;
-}
-
/* Cursor up 1 line, with scrolling. */
static void
vte_sequence_handler_reverse_index (VteTerminal *terminal, GValueArray *params)
@@ -1932,44 +1830,6 @@ vte_sequence_handler_tab_clear (VteTerminal *terminal, GValueArray *params)
}
}
-/* Underline this character and move right. */
-static void
-vte_sequence_handler_uc (VteTerminal *terminal, GValueArray *params)
-{
- VteCell *cell;
- int column;
- VteScreen *screen;
-
- screen = terminal->pvt->screen;
- column = screen->cursor_current.col;
- cell = vte_terminal_find_charcell(terminal, column, screen->cursor_current.row);
- while ((cell != NULL) && (cell->attr.fragment) && (column > 0)) {
- column--;
- cell = vte_terminal_find_charcell(terminal, column, screen->cursor_current.row);
- }
- if (cell != NULL) {
- /* Set this character to be underlined. */
- cell->attr.underline = 1;
- /* Cause the character to be repainted. */
- _vte_invalidate_cells(terminal,
- column, cell->attr.columns,
- screen->cursor_current.row, 1);
- /* Move the cursor right. */
- vte_sequence_handler_cursor_forward (terminal, params);
- }
-
- /* We've modified the display without changing the text. Make a note
- * of it. */
- terminal->pvt->text_modified_flag = TRUE;
-}
-
-/* Underline end. */
-static void
-vte_sequence_handler_ue (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->screen->defaults.attr.underline = 0;
-}
-
/* Cursor up N lines, no scrolling. */
static void
vte_sequence_handler_cursor_up (VteTerminal *terminal, GValueArray *params)
@@ -1999,27 +1859,6 @@ vte_sequence_handler_cursor_up (VteTerminal *terminal, GValueArray *params)
screen->cursor_current.row = MAX(screen->cursor_current.row - val, start);
}
-/* Underline start. */
-static void
-vte_sequence_handler_us (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->screen->defaults.attr.underline = 1;
-}
-
-/* Visible bell. */
-static void
-vte_sequence_handler_vb (VteTerminal *terminal, GValueArray *params)
-{
- _vte_terminal_visible_beep (terminal);
-}
-
-/* Cursor visible. */
-static void
-vte_sequence_handler_ve (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->cursor_visible = TRUE;
-}
-
/* Vertical tab. */
static void
vte_sequence_handler_vertical_tab (VteTerminal *terminal, GValueArray *params)
@@ -2027,21 +1866,6 @@ vte_sequence_handler_vertical_tab (VteTerminal *terminal, GValueArray *params)
vte_sequence_handler_line_feed (terminal, params);
}
-/* Cursor invisible. */
-static void
-vte_sequence_handler_vi (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->cursor_visible = FALSE;
-}
-
-/* Cursor standout. */
-static void
-vte_sequence_handler_vs (VteTerminal *terminal, GValueArray *params)
-{
- terminal->pvt->cursor_visible = TRUE; /* FIXME: should be *more*
- visible. */
-}
-
/* Parse parameters of SGR 38 or 48, starting at @index within @params.
* Returns the color index, or -1 on error.
* Increments @index to point to the last consumed parameter (not beyond). */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]