Пример #1
0
int	rtt_view_buffer(
			menu_ctx	parent_ctx,
			pwr_tObjid	objid,
			char		*filename, 
			char		*inbuff,
			char		*intitle,
			int		type)
{
	int	sts;

	sts = rtt_view(	parent_ctx, filename, inbuff, intitle, type);
	return sts;
}
Пример #2
0
int rtt_crr_code(
    char* filename, char* str, int brief, int func, int case_sensitive)
{
  pwr_tFileName default_filename;
  FILE* file;
  char line[500];
  char tst_line[500];
  pwr_tAName object;
  pwr_tOName objname;
  int spaces;
  int first;
  int sts;
  char* s;
  int signalcount = 0;
  char filestr[80];
  int lines;
  char* buff;
  pwr_tVolumeId volid;
  pwr_tObjid objid;
  int buffcnt = 0;
  int len;
  int i;
  int objname_written;
  int hit;
  char* tst_char;

  /* Open file */
  if (filename == NULL) {
    sts = gdh_GetNodeObject(0, &objid);
    if (EVEN(sts))
      return sts;
    volid = objid.vid;

    sprintf(default_filename, "%srtt_crrc_%s.dat", rtt_pwr_dir("pwrp_load"),
        rtt_VolumeIdToStr(volid));
    rtt_get_defaultfilename(default_filename, filestr, NULL);
    file = fopen(filestr, "r");
  } else {
    rtt_get_defaultfilename(filename, filestr, ".lis");
    file = fopen(filestr, "r");
  }

  if (file == 0) {
    rtt_message('E', "Unable to open file");
    return RTT__NOPICTURE;
  }

  /* Case sensitive if any lowercase */
  if (!case_sensitive)
    for (s = str; *s != 0; s++) {
      if (!isupper(*s))
        case_sensitive = 1;
    }

  buff = calloc(1, CRR_BUFF_SIZE);
  if (!buff) {
    rtt_message('E', "Unable to allocate memory");
    fclose(file);
    return RTT__NOPICTURE;
  }

  /* Get the hierarchy */
  while (!str_StartsWith(line, " _Obj_ ")) {
    sts = rtt_get_signal_line(
        file, line, sizeof(line), &spaces, object, &lines);
    if (EVEN(sts))
      goto finish;
  }

  first = 1;
  while (1) {
    strcpy(objname, &line[7]);
    for (s = objname; !(*s == 32 || *s == 9 || *s == 0); s++)
      ;
    *s = 0;

    sts = rtt_get_signal_line(
        file, line, sizeof(line), &spaces, object, &lines);
    objname_written = 0;
    while (!str_StartsWith(line, " _Obj_ ")) {
      if (!case_sensitive)
        rtt_toupper(tst_line, line);
      else
        strcpy(tst_line, line);

      hit = 0;
      if (!func) {
        if (strstr(tst_line, str) != 0)
          hit = 1;
      } else {
        if ((s = strstr(tst_line, str)) != 0) {
          hit = 1;
          /* Check char after */
          tst_char = s + strlen(str);
          if (isalpha(*tst_char) || isdigit(*tst_char) || *tst_char == '_')
            hit = 0;
          /* Check char before */
          if (s != tst_line) {
            tst_char = s - 1;
            if (isalpha(*tst_char) || isdigit(*tst_char) || *tst_char == '_')
              hit = 0;
          }
        }
      }
      if (hit) {
        /* Hit, print this object */
        if (signalcount == 0) {
          rtt_clear_screen();
          if (func)
            buffcnt
                = sprintf(buff, "Crossreferens list Function  \"%s\"\n\n", str);
          else
            buffcnt
                = sprintf(buff, "Crossreferens list String    \"%s\"\n\n", str);
        }
        signalcount++;

        if (buffcnt > CRR_BUFF_SIZE - 100) {
          buffcnt += sprintf(
              buff + buffcnt, "RTT-E-QUOTAEXC, Crossref quota exceeded");
          goto finish;
        }
        if (!objname_written) {
          len = sprintf(buff + buffcnt, " %s", objname);
          objname_written = 1;
        } else
          len = 0;
        for (i = len; i < 45; i++) {
          strcat(buff + buffcnt + len, " ");
          len++;
        }
        buffcnt += len;

        buffcnt += sprintf(buff + buffcnt, " \"%s\"\n", line);

        if (brief) {
          while (!str_StartsWith(line, " _Obj_ ")) {
            sts = rtt_get_signal_line(
                file, line, sizeof(line), &spaces, object, &lines);
            if (EVEN(sts))
              goto finish;
          }
        } else {
          sts = rtt_get_signal_line(
              file, line, sizeof(line), &spaces, object, &lines);
          if (EVEN(sts))
            goto finish;
        }
      } else {
        sts = rtt_get_signal_line(
            file, line, sizeof(line), &spaces, object, &lines);
        if (EVEN(sts))
          goto finish;
      }
    }
  }

finish:
  fclose(file);

  if (signalcount > 0) {
    sts = rtt_view(0, 0, buff, "Crossreference list", RTT_VIEWTYPE_BUF);
    return sts;
  } else {
    if (func)
      rtt_message('E', "String not found");
    else
      rtt_message('E', "Function not found");
    return RTT__NOPICTURE;
  }
}
Пример #3
0
int rtt_crr_object(char* filename, char* objectname)
{
  pwr_tFileName default_filename;
  FILE* file;
  char line[200];
  int object_spaces;
  char object[80];
  pwr_tOName objname;
  char show_objname[80];
  int spaces;
  int first;
  int sts;
  char* s;
  int wildcard;
  int signalcount = 0;
  pwr_tFileName filestr;
  int lines;
  char* buff;
  pwr_tVolumeId volid;
  pwr_tObjid objid;
  int buffcnt = 0;

  rtt_toupper(objectname, objectname);

  /* Check if wildcard */
  s = strchr(objectname, '*');
  if (s == 0)
    wildcard = 0;
  else
    wildcard = 1;

  /* Open file */
  if (filename == NULL) {
    /* Open file, first get the volume id */
    if (!wildcard) {
      sts = gdh_NameToObjid(objectname, &objid);
      if (EVEN(sts)) {
        rtt_message('E', "Object not found");
        return RTT__NOPICTURE;
      }
      volid = objid.vid;
    } else {
      sts = gdh_GetNodeObject(0, &objid);
      if (EVEN(sts))
        return sts;
      volid = objid.vid;
    }

    sprintf(default_filename, "%srtt_crro_%s.dat", rtt_pwr_dir("pwrp_load"),
        rtt_VolumeIdToStr(volid));
    rtt_get_defaultfilename(default_filename, filestr, NULL);
    file = fopen(filestr, "r");
  } else {
    rtt_get_defaultfilename(filename, filestr, ".lis");
    file = fopen(filestr, "r");
  }

  if (file == 0) {
    rtt_message('E', "Unable to open file");
    return RTT__NOPICTURE;
  }

  buff = calloc(1, CRR_BUFF_SIZE);
  if (!buff) {
    rtt_message('E', "Unable to allocate memory");
    fclose(file);
    return RTT__NOPICTURE;
  }

  /* Get the object */
  sts = rtt_get_signal_line(file, line, sizeof(line), &spaces, object, &lines);
  if (EVEN(sts))
    goto finish;
  object_spaces = spaces;

  first = 1;
  while (1) {
    if ((s = strchr(object, ':')))
      strcpy(objname, s + 1);
    else
      strcpy(objname, object);

    strcpy(show_objname, objname);
    rtt_toupper(objname, objname);

    sts = rtt_wildcard(objectname, objname);
    if (sts) {
      pwr_tAName subname;
      strcpy(subname, objectname);
      strcat(subname, ".*");

      sts = rtt_wildcard(subname, objname);
    }
    if (!sts) {
      /* Hit, print this object */
      if (signalcount == 0) {
        rtt_clear_screen();
        buffcnt = sprintf(buff, "Crossreferens list   %s\n\n", show_objname);
      }
      signalcount++;

      sts = rtt_get_signal_line(
          file, line, sizeof(line), &spaces, object, &lines);
      if (EVEN(sts))
        goto finish;
      while (spaces > object_spaces) {
        str_trim(line, line);

        if (buffcnt > CRR_BUFF_SIZE - 100) {
          buffcnt += sprintf(
              buff + buffcnt, "RTT-E-QUOTAEXC, Crossref quota exceeded");
          goto finish;
        }

        buffcnt += sprintf(buff + buffcnt, " %s\n", line);

        sts = rtt_get_signal_line(
            file, line, sizeof(line), &spaces, object, &lines);
        if (EVEN(sts))
          goto finish;
      }
    } else {
      if (!wildcard && signalcount)
        goto finish;

      sts = rtt_get_signal_line(
          file, line, sizeof(line), &spaces, object, &lines);
      if (EVEN(sts))
        goto finish;
    }

    while (spaces != object_spaces) {
      sts = rtt_get_signal_line(
          file, line, sizeof(line), &spaces, object, &lines);
      if (EVEN(sts))
        goto finish;
    }
  }

finish:
  fclose(file);

  if (signalcount > 0) {
    sts = rtt_view(0, 0, buff, "Crossreference list", RTT_VIEWTYPE_BUF);
    return sts;
  } else {
    rtt_message('E', "Object not found");
    return RTT__NOPICTURE;
  }
}