Exemplo n.º 1
0
pwr_tStatus GeCurveGtk::get_times( pwr_tTime *from, pwr_tTime *to) 
{
  char *from_p, *to_p;
  pwr_tStatus sts;

  from_p = gtk_editable_get_chars( GTK_EDITABLE(timebox_start_time), 0, -1);
  to_p = gtk_editable_get_chars( GTK_EDITABLE(timebox_stop_time), 0, -1);

  sts = time_FormAsciiToA( from_p, SWE, SECOND, from);
  if ( EVEN(sts)) {
    g_free( from_p);
    g_free( to_p);
    return sts;
  }

  sts = time_FormAsciiToA( to_p, SWE, SECOND, to);
  if ( EVEN(sts)) {
    g_free( from_p);
    g_free( to_p);
    return sts;
  }
  g_free( from_p);
  g_free( to_p);
  return 1;
}
Exemplo n.º 2
0
void CLogNav::read(int* pos_list, int pos_cnt)
{
  char line[400];
  errh_eSeverity severity = errh_eSeverity_Null;
  pwr_tTime time;
  pwr_tTime ztime = { 0, 0 };
  char time_str[40];
  char logger[40];
  int pid;
  int sts;
  FILE* fp;
  char filename[200];
  CLogMsg* msg;
  char tmpfile[200] = "/tmp/clog.tmp";
  int found;

  msg_list.clear();

  current_pos_low = file_list.size();
  current_pos_high = 0;
  for (int i = file_list.size() - 1; i >= 0; i--) {
    found = 0;
    for (int j = 0; j < pos_cnt; j++) {
      if (pos_list[j] - 1 == i) {
        found = 1;
        break;
      }
    }
    if (!found)
      continue;

    if (i + 1 > current_pos_high)
      current_pos_high = i + 1;
    if (i + 1 < current_pos_low)
      current_pos_low = i + 1;

    if (i == 0) {
      strcpy(filename, file_list[0].name);
      if (streq(filename, ""))
        continue;
    } else {
      // Unzip the file
      char cmd[300];

      sprintf(cmd, "zcat %s > %s", file_list[i].name, tmpfile);
      system(cmd);
      strcpy(filename, tmpfile);
    }

    fp = fopen(filename, "r");
    if (!fp)
      return;

    while (1) {
      sts = dcli_read_line(line, sizeof(line), fp);
      if (!sts)
        break;

      if (line[1] == ' ' && line[27] == ' '
          && (line[0] == 'S' || line[0] == 'I' || line[0] == 'W'
                 || line[0] == 'E' || line[0] == 'F')) {
        switch (line[0]) {
        case 'S':
          severity = errh_eSeverity_Success;
          break;
        case 'I':
          severity = errh_eSeverity_Info;
          break;
        case 'W':
          severity = errh_eSeverity_Warning;
          break;
        case 'E':
          severity = errh_eSeverity_Error;
          break;
        case 'F':
          severity = errh_eSeverity_Fatal;
          break;
        default:;
        }
        strncpy(logger, &line[2], 18);
        logger[18] = 0;

        sts = sscanf(&line[22], "%d", &pid);
        if (sts != 1)
          pid = 0;

        strncpy(&time_str[2], &line[28], 20);
        time_str[0] = '2';
        time_str[1] = '0';
        time_str[22] = 0;
        time_FormAsciiToA(time_str, HUNDRED, GB, &time);

        msg = new CLogMsg(severity, logger, pid, time, &line[49]);
        msg_list.push_back(*msg);
        delete msg;
      } else {
        str_trim(line, line);
        msg = new CLogMsg(errh_eSeverity_Null, "", 0, ztime, line);
        msg_list.push_back(*msg);
        delete msg;
      }
    }
    fclose(fp);
    if (i != 0)
      unlink(filename);
  }
  draw();
}