File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / mtr / ui / display.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Oct 21 14:25:31 2019 UTC (4 years, 9 months ago) by misho
Branches: mtr, MAIN
CVS tags: v0_92, HEAD
mtr ver 0.92

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

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