Пример #1
0
void Lng::get_uid( char *in, char *out)
{
  char result[200];

#if defined OS_VMS
  {
    char dev[80], dir[80], file[80], type[80];
    int version;
    char c;

    dcli_parse_filename( "pwr_exe:", dev, dir, file, type, &version);
    sprintf( result, "%s%s", dev, dir);
    c = result[strlen(result)-1];
    sprintf( &result[strlen(result)-1], ".%s%c%s%", get_language_str(), 
	     c, in);
  }
#else
  sprintf( result, "$pwr_exe/%s/%s", get_language_str(), in);
  dcli_translate_filename( result, result);
#endif
  strcpy( out, result);
}
Пример #2
0
void wb_build::webgraph( pwr_tOid oid)
{
  pwr_tFileName dest_fname;
  pwr_tFileName src_fname;
  pwr_tCmd	cmd;
  pwr_tString80	java_name;
  pwr_tString80	name;
  pwr_tTime	dest_time, src_time;
  int 		check_hierarchy = cdh_ObjidIsNotNull( m_hierarchy);
  int 		hierarchy_found = 0;
  int 		is_frame, is_applet;
  char		jname[80];
  pwr_tStatus  	fsts;
  int		jexport;
  int 		found;
  pwr_tFileName found_file, file_spec;
  pwr_tFileName graph_name, dir;
  char		dev[80], type[80];
  int		version;
  pwr_tString80	appletsignature = "";
  char 		*s;

  wb_object o = m_session.object(oid);
  if ( !o) {
    m_sts = o.sts();
    return;
  }

  // Check that no ancestor is a LibHier
  for ( wb_object p = o.parent(); p.oddSts(); p = p.parent()) {
    if ( p.cid() == pwr_eClass_LibHier) {
      m_sts = PWRB__INLIBHIER;
      return;
    }
    if ( check_hierarchy && cdh_ObjidIsEqual( m_hierarchy, p.oid()))
      hierarchy_found = 1;
  }

  if ( check_hierarchy && !hierarchy_found) {
    m_sts = PWRB__NOBUILT;
    return;
  }

  wb_attribute a = m_session.attribute( oid, "RtBody", "Name");
  if ( !a) {
    m_sts = a.sts();
    return;
  }

  a.value( java_name);
  if ( !a) {
    m_sts = a.sts();
    return;
  }

  if ( isupper(java_name[0])) {
    cdh_ToLower( java_name, java_name);
    java_name[0] = toupper(java_name[0]);

    // Get the .pwg file for this javaname
    strcpy( graph_name, cdh_Low(java_name));
    sprintf( name, "$pwrp_pop/%s.pwg", graph_name);

    dcli_translate_filename( name, name);
    m_sts = dcli_file_time( name, &src_time);
    if ( evenSts()) {
      // Search in all pwg files
      found = 0;
      strcpy( file_spec, "$pwrp_pop/*.pwg");
      for ( fsts = dcli_search_file( file_spec, found_file, DCLI_DIR_SEARCH_INIT);
	    ODD(fsts);
	    fsts = dcli_search_file( file_spec, found_file, DCLI_DIR_SEARCH_NEXT)) {
	
	fsts = grow_IsJava( found_file, &is_frame, &is_applet, jname);
	if ( EVEN(fsts)) continue;
	
	if ( is_frame && strcmp( jname, java_name) == 0) {
	  dcli_parse_filename( found_file, dev, dir, graph_name, type, &version);
	  strcpy( name, found_file);
	  found = 1;
	  break;
	}      
      }
      dcli_search_file( file_spec, found_file, DCLI_DIR_SEARCH_END);

      if ( !found) {
	char msg[200];
	sprintf( msg, "Graph for %s not found", java_name);
	MsgWindow::message('E', msg, msgw_ePop_Yes, oid);
	m_sts = PWRB__NOBUILT;
	return;
      }
    }

    m_sts = dcli_file_time( name, &src_time);
    if ( evenSts()) return;

    // Check exported java frame
    jexport = 0;
    sprintf( dest_fname, "$pwrp_pop/%s.java", java_name);
    dcli_translate_filename( dest_fname, dest_fname);
    fsts = dcli_file_time( dest_fname, &dest_time);
    if ( opt.force || EVEN(fsts) || time_Acomp( &src_time, &dest_time) == 1)
      jexport = 1;


    if ( jexport) {
      if ( !m_wnav) {
	sprintf( cmd, "Build:    WebGraph  Unable to export java in this environment %s", java_name);
	MsgWindow::message('W', cmd, msgw_ePop_No, oid);
      }
      else {
	// Get signature from WebHandler
	for ( wb_object p = o.parent(); p.oddSts(); p = p.parent()) {
	  if ( p.cid() == pwr_cClass_WebHandler) {
	    wb_attribute a = m_session.attribute( p.oid(), "RtBody", "AppletSignature");
	    if ( !a) {
	      m_sts = a.sts();
	      return;
	    }

	    a.value( appletsignature);
	    if ( !a) {
	      m_sts = a.sts();
	      return;
	    }
	    dcli_trim( appletsignature, appletsignature);
	    break;
	  }
	}
	

	Ge *gectx = m_wnav->ge_new( graph_name, 1);
	if ( strcmp( appletsignature, "") == 0)
	  strcpy( cmd, "export java");
	else
	  sprintf( cmd, "export java /signature=\"%s\"", appletsignature);
	m_sts = gectx->command( cmd);
	if ( evenSts()) {
	  msg_GetMsg( m_sts, cmd, sizeof(cmd));
	  MsgWindow::message('E', cmd, msgw_ePop_Yes, oid);
	  m_sts = PWRB__NOBUILT;
	  delete gectx;
	  return;
	}
	delete gectx;

	sprintf( cmd, "Build:    WebGraph  Export java %s", java_name);
	MsgWindow::message('I', cmd, msgw_ePop_No, oid);
	
	m_sts = PWRB__SUCCESS;
      }
    }
  }
  else {
    // Copy from $pwrp_pop to $pwrp_web

    strcpy( graph_name, cdh_Low(java_name));

    cdh_ToLower( graph_name, graph_name);

    strcpy( src_fname, "$pwrp_pop/");
    strcat( src_fname, graph_name);

    if ( strstr( src_fname, ".pwg") == 0)
      strcat( src_fname, ".pwg");

    dcli_translate_filename( src_fname, src_fname);
    m_sts = dcli_file_time( src_fname, &src_time);
    if ( evenSts()) {
      m_sts = PWRB__NOBUILT;
      return;
    }

    strcpy( dest_fname, "$pwrp_web/");
    strcat( dest_fname, graph_name);

    if ( strstr( dest_fname, ".pwg") == 0)
      strcat( dest_fname, ".pwg");

    dcli_translate_filename( dest_fname, dest_fname);
    m_sts = dcli_file_time( dest_fname, &dest_time);
    if ( opt.force || evenSts() || src_time.tv_sec > dest_time.tv_sec) {
      sprintf( cmd, "cp %s %s", src_fname, dest_fname);
      system( cmd);
      sprintf( cmd, "Build:    WebGraph copy $pwrp_pop/%s -> $pwrp_web", graph_name);
      MsgWindow::message( 'I', cmd, msgw_ePop_No, oid);
      
      strcpy( name, graph_name);
      if (( s = strrchr( name, '.')))
	*s = 0;
      wb_log::log( wlog_eCategory_GeBuild, name, 0);
      m_sts = PWRB__SUCCESS;
    }
    else
      m_sts = PWRB__NOBUILT;

  }
}
Пример #3
0
void Ge::activate_open()
{
    prevtable_clear();
    int file_cnt;
    int allocated, old_allocated;
    pwr_tString80 *file_p;
    pwr_tString80 *old_file_p;
    char found_file[80];
    char fname[80];
    int sts;
    char dev[80];
    char dir[80];
    char file[80];
    char type[80];
    int version;

    // Get the pwg files and order them
    dcli_translate_filename( fname, "$pwrp_pop/*.pwg");

    file_cnt = 0;
    allocated = 0;
    sts = dcli_search_file( fname, found_file, DCLI_DIR_SEARCH_INIT);
    while ( ODD(sts)) {
        if ( strstr( found_file, "__p")) {
            // Skip subgraph pages
            sts = dcli_search_file( fname, found_file, DCLI_DIR_SEARCH_NEXT);
            continue;
        }
        file_cnt++;
        if ( file_cnt > allocated - 1) {
            if ( allocated == 0) {
                allocated = 100;
                file_p = (pwr_tString80 *) malloc( allocated * sizeof(*file_p));
            }
            else {
                old_file_p = file_p;
                old_allocated = allocated;
                allocated += 100;
                file_p = (pwr_tString80 *) malloc( allocated * sizeof(*file_p));
                memcpy( file_p, old_file_p, old_allocated * sizeof(*file_p));
                free( old_file_p);
            }
        }
        dcli_parse_filename( found_file, dev, dir, file, type, &version);
        strcpy( file_p[file_cnt - 1], file);
        if ( strcmp( file, "") == 0)
            file_cnt--;
        sts = dcli_search_file( fname, found_file, DCLI_DIR_SEARCH_NEXT);
    }
    dcli_search_file( fname, found_file, DCLI_DIR_SEARCH_END);

    if ( !file_cnt) {
        return;
    }

    strcpy( file_p[file_cnt], "");

    qsort( file_p, file_cnt, sizeof(*file_p), Ge::sort_files);

    create_list( "Open Graph",
                 (char *)file_p, Ge::open_list_cb, (void *)this);

    free( file_p);

    //  open_input_dialog( "Graph name", "Open Graph", "",
    //	Ge::open_graph);
}
Пример #4
0
void pkg_node::fetchFiles( bool distribute) 
{
  char	dev[80];
  char	dir[80];
  char	file[80];
  char	type[80];
  int 	version;
  char  pack_fname[200];
  char  fname[200];

  // Get temporary directory
  sprintf( m_tmpdir, "/tmp/pwrpkg%06u", pkg_random());
  sprintf( m_blddir, "%s/pkg_build", m_tmpdir);

  // Add volumes to pattern
  for ( int i = 0; i < (int)m_volumelist.size(); i++) {
    if ( !m_volumelist[i].m_isSystem) {
      pkg_pattern vol( m_volumelist[i].m_filename, "$pwrp_load/", 'E');
      push_back( vol);
    }
  }

  for ( int i = 0; i < (int)m_pattern.size(); i++) 
    m_pattern[i].fetchFiles();

  // Put all files in a single list
  for ( int i = 0; i < (int)m_pattern.size(); i++) {
    for ( int j = 0; j < (int)m_pattern[i].m_filelist.size(); j++) {
      try {
	pkg_file f = m_pattern[i].m_filelist[j];

	dcli_parse_filename( f.m_source, dev, dir, file, type, &version);
	strcpy( f.m_arname, file);
	strcat( f.m_arname, type);

	// Check that this name is unic
	for (;;) {
	  bool new_name = false;
	  for ( int k = 0; k < (int)m_filelist.size(); k++) {
	    if ( strcmp( m_filelist[k].m_arname, f.m_arname) == 0) {
	      strcat( f.m_arname, "x");
	      new_name = true;
	      break;
	    }
	  }
	  if ( !new_name)
	    break;
	}

	m_filelist.push_back( f);
      } catch ( wb_error &e) {
	MsgWindow::message( 'W', e.what().c_str(), msgw_ePop_No);
	m_warnings++;
      }
    }
  }

  if ( m_errors) {
    char msg[200];
    sprintf( msg, "Distribute errors node %s: %d errors, %d warnings", m_name, m_errors, m_warnings);
    MsgWindow::message( 'E', msg, msgw_ePop_Yes);
    throw wb_error_str( msg);
  }
  else if ( m_warnings) {
    char msg[200];
    sprintf( msg, "Distribute warnings node %s: %d warnings", m_name, m_warnings);
    MsgWindow::message( 'W', msg, msgw_ePop_Yes);
  }

  // Read and increment package version
  sprintf( fname, "$pwrp_load/pkg_v_%s.dat", m_name);
  dcli_translate_filename( fname, fname);
  ifstream ifv( fname);
  if ( ifv) {
    ifv >> version;
    ifv.close();
    version++;
  }
  else
Пример #5
0
int ItemLocalSubGraphs::open_children( SubPalette *subpalette, double x, double y)
{
  double	node_x, node_y;
  int		child_exist;

  brow_GetNodePosition( node, &node_x, &node_y);

  if ( brow_IsOpen( node))
  {
    // Close
    brow_SetNodraw( subpalette->brow->ctx);
    brow_CloseNode( subpalette->brow->ctx, node);
    if ( brow_IsOpen( node) & subpalette_mOpen_Attributes)
      brow_RemoveAnnotPixmap( node, 1);
    if ( brow_IsOpen( node) & subpalette_mOpen_Children)
      brow_SetAnnotPixmap( node, 0, subpalette->brow->pixmap_map);
    brow_ResetOpen( node, subpalette_mOpen_All);
    brow_ResetNodraw( subpalette->brow->ctx);
    brow_Redraw( subpalette->brow->ctx, node_y);
  }
  else
  {
    int			sts;
    char		found_file[120];
    char		fname[120];
    char		dev[80], dir[80], file[80], type[80];
    int			version;
    char		text[80];
    char		*s;
    int			idx;
    char		file_str[5][80];
    int		        nr;
    int                 i;
    vector<LocalFile> fvect;

    // Create some children
    brow_SetNodraw( subpalette->brow->ctx);

    child_exist = 0;

    nr = dcli_parse( filename, ",", "", (char *)file_str,
		sizeof( file_str) / sizeof( file_str[0]), sizeof( file_str[0]), 0);
    for ( i = 0; i < nr; i++) {
      dcli_translate_filename( fname, file_str[i]);
      sts = dcli_search_file( fname, found_file, DCLI_DIR_SEARCH_INIT);
      if ( ODD(sts)) {
	LocalFile f;
	strcpy( f.name, found_file);
	fvect.push_back( f);
      }
      while ( ODD(sts)) {
        sts = dcli_search_file( fname, found_file, DCLI_DIR_SEARCH_NEXT);
        if ( ODD(sts)) {
	  LocalFile f;
	  strcpy( f.name, found_file);
	  fvect.push_back( f);
	}
      }
      dcli_search_file( fname, found_file, DCLI_DIR_SEARCH_END);
    }

    subpalette_sort( fvect);

    for ( i = 0; i < (int) fvect.size(); i++) {
      dcli_parse_filename( fvect[i].name, dev, dir, file, type, &version);
      cdh_ToLower( text, file);
      text[0] = toupper( text[0]);
      
      // Skip next pages in animations
      if ( !((s = strstr( text, "__p")) && sscanf( s+3, "%d", &idx))) {
	new ItemFile( subpalette, text, fvect[i].name, 0, node, flow_eDest_IntoLast);
	child_exist = 1;
      }
    }

    if ( child_exist)
    {
      brow_SetOpen( node, subpalette_mOpen_Children);
      brow_SetAnnotPixmap( node, 0, subpalette->brow->pixmap_openmap);
    }
    brow_ResetNodraw( subpalette->brow->ctx);
    if ( child_exist)
      brow_Redraw( subpalette->brow->ctx, node_y);
  }
  return 1;
}