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>