File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / mtr / display.c
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Nov 1 09:33:48 2016 UTC (7 years, 7 months ago) by misho
Branches: mtr, elwix, MAIN
CVS tags: v0_86, HEAD
mtr 0.86

    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: 
   21: #include <stdio.h>
   22: #include <stdlib.h>
   23: #include <sys/types.h>
   24: 
   25: #include "mtr.h"
   26: #include "display.h"
   27: #include "mtr-curses.h"
   28: #include "mtr-gtk.h"
   29: #include "report.h"
   30: #include "select.h"
   31: #include "raw.h"
   32: #include "dns.h"
   33: #include "asn.h"
   34: 
   35: extern int DisplayMode;
   36: 
   37: #ifdef NO_CURSES
   38: #define mtr_curses_open()
   39: #define mtr_curses_close()
   40: #define mtr_curses_redraw()
   41: #define mtr_curses_keyaction()
   42: #define mtr_curses_clear()
   43: #else
   44: #include "mtr-curses.h"
   45: #endif
   46: 
   47: #ifdef NO_GTK
   48: #define gtk_open()
   49: #define gtk_close()
   50: #define gtk_redraw()
   51: #define gtk_keyaction() 0
   52: #define gtk_loop() {fprintf (stderr, "No GTK support. Sorry.\n"); exit (1); } 
   53: #else
   54: #include "mtr-gtk.h"
   55: #endif
   56: 
   57: #ifdef NO_SPLIT
   58: #define split_open()
   59: #define split_close()
   60: #define split_redraw()
   61: #define split_keyaction() 0
   62: #else
   63: #include "split.h"
   64: #endif
   65: 
   66: void display_detect(int *argc, char ***argv) {
   67:   DisplayMode = DisplayReport;
   68: 
   69: #ifndef NO_CURSES
   70:   DisplayMode = DisplayCurses;
   71: #endif
   72: 
   73: #ifndef NO_GTK
   74:   if(gtk_detect(argc, argv)) {
   75:     DisplayMode = DisplayGTK;
   76:   }
   77: #endif
   78: }
   79: 
   80: 
   81: void display_open(void)
   82: {
   83:   switch(DisplayMode) {
   84: 
   85:   case DisplayReport:
   86:     report_open();
   87:     break;
   88:   case DisplayTXT:
   89:     txt_open();
   90:     break;
   91:   case DisplayXML:
   92:     xml_open();
   93:     break;
   94:   case DisplayCSV:
   95:     csv_open();
   96:     break;
   97:   case DisplayCurses:
   98:     mtr_curses_open();  
   99: #ifdef IPINFO
  100:     if (ipinfo_no >= 0)
  101:         asn_open();
  102: #endif
  103:     break;
  104:   case DisplaySplit:
  105:     split_open();
  106:     break;
  107:   case DisplayGTK:
  108:     gtk_open();
  109:     break;
  110:   }
  111: }
  112: 
  113: 
  114: void display_close(time_t now)
  115: {
  116:   switch(DisplayMode) {
  117:   case DisplayReport:
  118:     report_close();
  119:     break;
  120:   case DisplayTXT:
  121:     txt_close();
  122:     break;
  123:   case DisplayXML:
  124:     xml_close();
  125:     break;
  126:   case DisplayCSV:
  127:     csv_close(now);
  128:     break;
  129:   case DisplayCurses:
  130: #ifdef IPINFO
  131:     if (ipinfo_no >= 0)
  132:         asn_close();
  133: #endif
  134:     mtr_curses_close();
  135:     break;
  136:   case DisplaySplit:
  137:     split_close();
  138:     break;
  139:   case DisplayGTK:
  140:     gtk_close();
  141:     break;
  142:   }
  143: }
  144: 
  145: 
  146: void display_redraw(void)
  147: {
  148:   switch(DisplayMode) {
  149: 
  150:   case DisplayCurses:
  151:     mtr_curses_redraw();
  152:     break;
  153: 
  154:   case DisplaySplit:
  155:     split_redraw();
  156:     break;
  157: 
  158:   case DisplayGTK:
  159:     gtk_redraw();
  160:     break;
  161:   }
  162: }
  163: 
  164: 
  165: int display_keyaction(void)
  166: {
  167:   switch(DisplayMode) {
  168:   case DisplayCurses:
  169:     return mtr_curses_keyaction();
  170: 
  171:   case DisplaySplit:
  172:     return split_keyaction();
  173: 
  174:   case DisplayGTK:
  175:     return gtk_keyaction();
  176:   }
  177:   return 0;
  178: }
  179: 
  180: 
  181: void display_rawping(int host, int msec) 
  182: {
  183:   switch(DisplayMode) {
  184:   case DisplayReport:
  185:   case DisplayTXT:
  186:   case DisplayXML:
  187:   case DisplayCSV:
  188:   case DisplaySplit:
  189:   case DisplayCurses:
  190:   case DisplayGTK:
  191:     break;
  192:   case DisplayRaw:
  193:     raw_rawping (host, msec);
  194:     break;
  195:   }
  196: }
  197: 
  198: 
  199: void display_rawhost(int host, ip_t *ip_addr) 
  200: {
  201:   switch(DisplayMode) {
  202:   case DisplayReport:
  203:   case DisplayTXT:
  204:   case DisplayXML:
  205:   case DisplayCSV:
  206:   case DisplaySplit:
  207:   case DisplayCurses:
  208:   case DisplayGTK:
  209:     break;
  210:   case DisplayRaw:
  211:     raw_rawhost (host, ip_addr);
  212:     break;
  213:   }
  214: }
  215: 
  216: 
  217: void display_loop(void)
  218: {
  219:   switch(DisplayMode) {
  220:   case DisplayReport:
  221:   case DisplayTXT:
  222:   case DisplayXML:
  223:   case DisplayCSV:
  224:   case DisplaySplit:
  225:   case DisplayCurses:
  226:   case DisplayRaw:
  227:     select_loop();
  228:     break;
  229:   case DisplayGTK:
  230:     gtk_loop();
  231:     break;
  232:   }
  233: }
  234: 
  235: 
  236: void display_clear(void)
  237: {
  238:   switch(DisplayMode) {
  239:   case DisplayCurses:
  240:     mtr_curses_clear();
  241:     break;
  242:   case DisplayReport:
  243:   case DisplayTXT:
  244:   case DisplayXML:
  245:   case DisplayCSV:
  246:   case DisplaySplit:
  247:   case DisplayRaw:
  248:     break;
  249: 
  250:   case DisplayGTK:
  251:     break;
  252:   }
  253: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>