Annotation of embedaddon/mtr/display.c, revision 1.1.1.1
1.1 misho 1: /*
2: mtr -- a network diagnostic tool
3: Copyright (C) 1997,1998 Matt Kimball
4:
5: This program is free software; you can redistribute it and/or modify
6: it under the terms of the GNU General Public License version 2 as
7: published by the Free Software Foundation.
8:
9: This program is distributed in the hope that it will be useful,
10: but WITHOUT ANY WARRANTY; without even the implied warranty of
11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: GNU General Public License for more details.
13:
14: You should have received a copy of the GNU General Public License
15: along with this program; if not, write to the Free Software
16: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17: */
18:
19: #include <config.h>
20: #include <stdio.h>
21: #include <stdlib.h>
22: #include <sys/types.h>
23:
24: #include "mtr.h"
25: #include "display.h"
26: #include "mtr-curses.h"
27: #include "mtr-gtk.h"
28: #include "report.h"
29: #include "select.h"
30: #include "raw.h"
31: #include "dns.h"
32: #ifndef NO_IPINFO
33: #include <asn.h>
34: #endif
35:
36: extern int DisplayMode;
37:
38: #ifdef NO_CURSES
39: #define mtr_curses_open()
40: #define mtr_curses_close()
41: #define mtr_curses_redraw()
42: #define mtr_curses_keyaction()
43: #define mtr_curses_clear()
44: #else
45: #include "mtr-curses.h"
46: #endif
47:
48: #ifdef NO_GTK
49: #define gtk_open()
50: #define gtk_close()
51: #define gtk_redraw()
52: #define gtk_keyaction() 0
53: #define gtk_loop() {fprintf (stderr, "No GTK support. Sorry.\n"); exit (1); }
54: #else
55: #include "mtr-gtk.h"
56: #endif
57:
58: #ifdef NO_SPLIT
59: #define split_open()
60: #define split_close()
61: #define split_redraw()
62: #define split_keyaction() 0
63: #else
64: #include "split.h"
65: #endif
66:
67: void display_detect(int *argc, char ***argv) {
68: DisplayMode = DisplayReport;
69:
70: #ifndef NO_CURSES
71: DisplayMode = DisplayCurses;
72: #endif
73:
74: #ifndef NO_GTK
75: if(gtk_detect(argc, argv)) {
76: DisplayMode = DisplayGTK;
77: }
78: #endif
79: }
80:
81:
82: void display_open(void)
83: {
84: switch(DisplayMode) {
85:
86: case DisplayReport:
87: report_open();
88: break;
89: case DisplayTXT:
90: txt_open();
91: break;
92: case DisplayXML:
93: xml_open();
94: break;
95: case DisplayCSV:
96: csv_open();
97: break;
98: case DisplayCurses:
99: mtr_curses_open();
100: #ifndef NO_IPINFO
101: if (ipinfo_no >= 0)
102: asn_open();
103: #endif
104: break;
105: case DisplaySplit:
106: split_open();
107: break;
108: case DisplayGTK:
109: gtk_open();
110: break;
111: }
112: }
113:
114:
115: void display_close(time_t now)
116: {
117: switch(DisplayMode) {
118: case DisplayReport:
119: report_close();
120: break;
121: case DisplayTXT:
122: txt_close();
123: break;
124: case DisplayXML:
125: xml_close();
126: break;
127: case DisplayCSV:
128: csv_close(now);
129: break;
130: case DisplayCurses:
131: #ifndef NO_IPINFO
132: if (ipinfo_no >= 0)
133: asn_close();
134: #endif
135: mtr_curses_close();
136: break;
137: case DisplaySplit:
138: split_close();
139: break;
140: case DisplayGTK:
141: gtk_close();
142: break;
143: }
144: }
145:
146:
147: void display_redraw(void)
148: {
149: switch(DisplayMode) {
150:
151: case DisplayCurses:
152: mtr_curses_redraw();
153: break;
154:
155: case DisplaySplit:
156: split_redraw();
157: break;
158:
159: case DisplayGTK:
160: gtk_redraw();
161: break;
162: }
163: }
164:
165:
166: int display_keyaction(void)
167: {
168: switch(DisplayMode) {
169: case DisplayCurses:
170: return mtr_curses_keyaction();
171:
172: case DisplaySplit:
173: return split_keyaction();
174:
175: case DisplayGTK:
176: return gtk_keyaction();
177: }
178: return 0;
179: }
180:
181:
182: void display_rawping(int host, int msec)
183: {
184: switch(DisplayMode) {
185: case DisplayReport:
186: case DisplayTXT:
187: case DisplayXML:
188: case DisplayCSV:
189: case DisplaySplit:
190: case DisplayCurses:
191: case DisplayGTK:
192: break;
193: case DisplayRaw:
194: raw_rawping (host, msec);
195: break;
196: }
197: }
198:
199:
200: void display_rawhost(int host, ip_t *ip_addr)
201: {
202: switch(DisplayMode) {
203: case DisplayReport:
204: case DisplayTXT:
205: case DisplayXML:
206: case DisplayCSV:
207: case DisplaySplit:
208: case DisplayCurses:
209: case DisplayGTK:
210: break;
211: case DisplayRaw:
212: raw_rawhost (host, ip_addr);
213: break;
214: }
215: }
216:
217:
218: void display_loop(void)
219: {
220: switch(DisplayMode) {
221: case DisplayReport:
222: case DisplayTXT:
223: case DisplayXML:
224: case DisplayCSV:
225: case DisplaySplit:
226: case DisplayCurses:
227: case DisplayRaw:
228: select_loop();
229: break;
230: case DisplayGTK:
231: gtk_loop();
232: break;
233: }
234: }
235:
236:
237: void display_clear(void)
238: {
239: switch(DisplayMode) {
240: case DisplayCurses:
241: mtr_curses_clear();
242: break;
243: case DisplayReport:
244: case DisplayTXT:
245: case DisplayXML:
246: case DisplayCSV:
247: case DisplaySplit:
248: case DisplayRaw:
249: break;
250:
251: case DisplayGTK:
252: break;
253: }
254: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>