source: trunk/ncurses/tack/init.c@ 2747

Last change on this file since 2747 was 2621, checked in by bird, 20 years ago

GNU ncurses 5.5

File size: 7.1 KB
Line 
1/*
2** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
3**
4** This file is part of TACK.
5**
6** TACK is free software; you can redistribute it and/or modify
7** it under the terms of the GNU General Public License as published by
8** the Free Software Foundation; either version 2, or (at your option)
9** any later version.
10**
11** TACK is distributed in the hope that it will be useful,
12** but WITHOUT ANY WARRANTY; without even the implied warranty of
13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14** GNU General Public License for more details.
15**
16** You should have received a copy of the GNU General Public License
17** along with TACK; see the file COPYING. If not, write to
18** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19** Boston, MA 02110-1301, USA
20*/
21/* initialization and wrapup code */
22
23#include <tack.h>
24
25MODULE_ID("$Id: init.c,v 1.6 2005/09/17 19:49:16 tom Exp $")
26
27#if NCURSES_VERSION_MAJOR >= 5 || NCURSES_VERSION_PATCH >= 981219
28#define _nc_get_curterm(p) _nc_get_tty_mode(p)
29#endif
30
31FILE *debug_fp;
32char temp[1024];
33char tty_basename[64];
34
35void
36put_name(const char *cap, const char *name)
37{ /* send the cap name followed by the cap */
38 if (cap) {
39 ptext(name);
40 tc_putp(cap);
41 }
42}
43
44static void
45report_cap(const char *tag, const char *s)
46{ /* expand the cap or print *** missing *** */
47 int i;
48
49 ptext(tag);
50 for (i = char_count; i < 13; i++) {
51 putchp(' ');
52 }
53 put_str(" = ");
54 if (s) {
55 putln(expand(s));
56 } else {
57 putln("*** missing ***");
58 }
59}
60
61
62void
63reset_init(void)
64{ /* send the reset and init strings */
65 int i;
66
67 ptext("Terminal reset");
68 i = char_count;
69 put_name(reset_1string, " (rs1)");
70 put_name(reset_2string, " (rs2)");
71 /* run the reset file */
72 if (reset_file && reset_file[0]) {
73 FILE *fp;
74 int ch;
75
76 can_test("rf", FLAG_TESTED);
77 if ((fp = fopen(reset_file, "r"))) { /* send the reset file */
78 sprintf(temp, " (rf) %s", reset_file);
79 ptextln(temp);
80 while (1) {
81 ch = getc(fp);
82 if (ch == EOF)
83 break;
84 put_this(ch);
85 }
86 fclose(fp);
87 } else {
88 sprintf(temp, "\nCannot open reset file (rf) %s", reset_file);
89 ptextln(temp);
90 }
91 }
92 put_name(reset_3string, " (rs3)");
93 if (i != char_count) {
94 put_crlf();
95 }
96 ptext(" init");
97 put_name(init_1string, " (is1)");
98 put_name(init_2string, " (is2)");
99 if (set_tab && clear_all_tabs && init_tabs != 8) {
100 put_crlf();
101 tc_putp(clear_all_tabs);
102 for (char_count = 0; char_count < columns; char_count++) {
103 put_this(' ');
104 if ((char_count & 7) == 7) {
105 tc_putp(set_tab);
106 }
107 }
108 put_cr();
109 }
110 /* run the initialization file */
111 if (init_file && init_file[0]) {
112 FILE *fp;
113 int ch;
114
115 can_test("if", FLAG_TESTED);
116 if ((fp = fopen(init_file, "r"))) { /* send the init file */
117 sprintf(temp, " (if) %s", init_file);
118 ptextln(temp);
119 while (1) {
120 ch = getc(fp);
121 if (ch == EOF)
122 break;
123 put_this(ch);
124 }
125 fclose(fp);
126 } else {
127 sprintf(temp, "\nCannot open init file (if) %s", init_file);
128 ptextln(temp);
129 }
130 }
131 if (init_prog) {
132 can_test("iprog", FLAG_TESTED);
133 (void) system(init_prog);
134 }
135 put_name(init_3string, " (is3)");
136
137 fflush(stdout);
138}
139
140/*
141** display_basic()
142**
143** display the basic terminal definitions
144*/
145void
146display_basic(void)
147{
148 put_str("Name: ");
149 putln(ttytype);
150
151 report_cap("\\r ^M (cr)", carriage_return);
152 report_cap("\\n ^J (ind)", scroll_forward);
153 report_cap("\\b ^H (cub1)", cursor_left);
154 report_cap("\\t ^I (ht)", tab);
155/* report_cap("\\f ^L (ff)", form_feed); */
156 if (newline) {
157 /* OK if missing */
158 report_cap(" (nel)", newline);
159 }
160 report_cap(" (clear)", clear_screen);
161 if (!cursor_home && cursor_address) {
162 report_cap("(cup) (home)", tparm(cursor_address, 0, 0));
163 } else {
164 report_cap(" (home)", cursor_home);
165 }
166#ifdef user9
167 report_cap("ENQ (u9)", user9);
168#endif
169#ifdef user8
170 report_cap("ACK (u8)", user8);
171#endif
172