示例#1
0
文件: gtk.c 项目: ginggs/maemo-mtr
void update_tree_row(int row, GtkTreeIter *iter)
{
  ip_t *addr;
  char str[256], *name;

  addr = net_addr(row);
  name = "???";
  if ( addrcmp( (void *) addr, (void *) &unspec_addr, af ) != 0 ) {
    name = dns_lookup(addr);
    if(!name) {
      sprintf(str, "%s", strlongip( addr ));
      name = str;
    }
  }

  gtk_list_store_set(ReportStore, iter,
    COL_HOSTNAME, name,
    COL_LOSS, (float)(net_loss(row)/1000.0),

    COL_RCV, net_returned(row),
    COL_SNT, net_xmit(row),

    COL_LAST, net_last(row)/1000,
    COL_BEST, net_best(row)/1000,
    COL_AVG, net_avg(row)/1000,
    COL_WORST, net_worst(row)/1000,
    COL_STDEV, (float)(net_stdev(row)/1000.0),
    
    COL_COLOR, net_up(row) ? "black" : "red",

    -1);
}
示例#2
0
void split_redraw(void) 
{
  int   max;
  int   at;
  ip_t *addr, *addrs;
  char  newLine[MAX_LINE_SIZE];
  int   i;

#if DEBUG
  SPLIT_PRINT(("split_redraw()"));
#endif

  /* 
   * If there is less lines than last time, we delete them
   * TEST THIS PLEASE
   */
  max = net_max();
  for (i=LineCount; i>max; i--) {
    SPLIT_PRINT(("-%d", i));
    LineCount--;
  }

  /*
   * For each line, we compute the new one and we compare it to the old one
   */
  for(at = 0; at < max; at++) {
    addr = net_addr(at);
    if(addrcmp((void*)addr, (void*)&unspec_addr, af)) {
      char str[256], *name;
      if (!(name = dns_lookup(addr)))
        name = strlongip(addr);
      if (show_ips) {
        snprintf(str, sizeof(str), "%s\t%s", name, strlongip(addr));
        name = str;
      }
      /* May be we should test name's length */
      snprintf(newLine, sizeof(newLine), "%s\t%s\t%.1f\t%d\t%d\t%.1f\t%.1f\t%.1f\t%.1f", name, fmt_ipinfo(addr),
               net_loss(at)/1000.0,
               net_returned(at), net_xmit(at),
               net_best(at) /1000.0, net_avg(at)/1000.0,
               net_worst(at)/1000.0,
               net_stdev(at)/1000.0);
    } else {
      sprintf(newLine, "???");
    }

    if (strcmp(newLine, Lines[at]) == 0) {
      /* The same, so do nothing */
#if DEBUG
      SPLIT_PRINT(("SAME LINE"));
#endif
    } else {
      SPLIT_PRINT(("%d\t%s", at+1, newLine));

      if (strcmp(newLine, "???") != 0) {
        /* Multi path */
        for (i=0; i < MAXPATH; i++ ) {
          addrs = net_addrs(at, i);
          if ( addrcmp( (void *) addrs, (void *) addr, af ) == 0 ) continue;
          if ( addrcmp( (void *) addrs, (void *) &unspec_addr, af ) == 0 ) break;
          char *name;
 
          if (!(name = dns_lookup(addrs)))
            name = strlongip(addrs);
          if (show_ips) {
            SPLIT_PRINT(("-\t%d\t%d\t%s\t%s\t%s", at+1, i+1, name, strlongip(addrs), fmt_ipinfo(addrs)));
          } else {
            SPLIT_PRINT(("-\t%d\t%d\t%s\t%s", at+1, i+1, name, fmt_ipinfo(addrs)));
          }
        }
      }
 
      fflush(stdout);
      strcpy(Lines[at], newLine);
      if (LineCount < (at+1)) {
	LineCount = at+1;
      }
    }
  }
}