예제 #1
0
파일: ini.c 프로젝트: hfuhuang/proview
ini_sContext *ini_CheckContext (
  pwr_tStatus	*status,
  ini_sContext	*cp
)
{
  pwr_dStatus(sts, status, INI__SUCCESS);

  ini_LoadDirectory(sts, cp);

  if (!cp->flags.b.aliasfile)
    sprintf(cp->aliasfile.name, dbs_cNameAlias, cp->dir);
  cdh_ToLower(cp->aliasfile.name, cp->aliasfile.name);
  cp->nodefile.errcount = NULL;
  cp->nodefile.logOpenFail = errh_LogInfo;

  if (!cp->flags.b.applfile)
    sprintf(cp->applfile.name, dbs_cNameAppl, cp->dir, cp->nodename, cp->busid);
  cdh_ToLower(cp->applfile.name, cp->applfile.name);
  cp->applfile.errcount = NULL;
  cp->applfile.logOpenFail = errh_LogInfo;

  if (!cp->flags.b.bootfile)
    sprintf(cp->bootfile.name, dbs_cNameBoot, cp->dir, cp->nodename, cp->busid);
  cdh_ToLower(cp->bootfile.name, cp->bootfile.name);
  cp->bootfile.errcount = &cp->fatals;
  cp->bootfile.logOpenFail = errh_LogFatal;

  if (!cp->flags.b.nodefile)
    sprintf(cp->nodefile.name, dbs_cNameNode, cp->dir, cp->nodename, cp->busid);
  cdh_ToLower(cp->nodefile.name, cp->nodefile.name);
  cp->nodefile.errcount = &cp->fatals;
  cp->nodefile.logOpenFail = errh_LogFatal;

  return cp;  
}
예제 #2
0
파일: ge.cpp 프로젝트: Strongc/proview
void Ge::save_graph_and_close( Ge *gectx, char *name)
{
    char filename[80];
    char graphname[80];
    char *s;
    int sts;

    if ( ! gectx->graph->is_subgraph() )
    {
        cdh_ToLower( graphname, name);
        if ( (s = strrchr( graphname, '.')))
            *s = 0;
        gectx->graph->set_name( graphname);

        cdh_ToLower( filename, name);
        if ( ! strrchr( filename, '.'))
            strcat( filename, ".pwg");

        sts = gectx->graph->save( filename);
        if ( EVEN(sts)) {
            gectx->message( sts);
            return;
        }
        gectx->message( 'I', "Graph saved");
    }
    else
    {
        char filename[80];
        char graphname[80];
        char *s;
        int sts;

        cdh_ToLower( graphname, name);
        if ( (s = strrchr( graphname, '.')))
            *s = 0;
        gectx->graph->set_name( graphname);

        cdh_ToLower( filename, name);
        if ( ! strrchr( filename, '.'))
            strcat( filename, ".pwsg");
        sts = gectx->graph->save_subgraph( filename);
        if ( EVEN(sts)) {
            gectx->message( sts);
            return;
        }

        cdh_ToLower( filename, name);
        if ( ! strrchr( filename, '.'))
            strcat( filename, ".pwg");
        sts = gectx->graph->save( filename);
        if ( EVEN(sts)) {
            gectx->message( sts);
            return;
        }
        gectx->message( 'I', "SubGraph saved");
    }

    delete gectx;
}
예제 #3
0
int main( int argc, char *argv[])
{
  char		uid_filename[120] = {"pwr_exe:wb.uid"};
  char		*uid_filename_p = uid_filename;
  MrmHierarchy 	s_DRMh;
  MrmType 	dclass;
  pwr_tStatus 	sts;
  XtAppContext  app_ctx;
  char		title[80];
  Admin		*admin;
  
  dcli_translate_filename( uid_filename, uid_filename);

  // First argument is username, and second password
  strcpy( login_prv.username, "-");
  strcpy( login_prv.password, "-");
  if ( argc > 0)
    cdh_ToLower( login_prv.username, argv[1]);
  if ( argc > 1)
    cdh_ToLower( login_prv.password, argv[2]); 

  MrmInitialize();

  strcpy( title, "PwR Administrator");

  toplevel = XtVaAppInitialize (
		      &app_ctx, 
		      "PWR_ADM",
		      NULL, 0, 
		      &argc, argv, 
		      fbr, 
		      XtNallowShellResize,  True,
		      XtNtitle, title,
		      XmNmappedWhenManaged, False,
		      NULL);
    

  sts = MrmOpenHierarchy( 1, &uid_filename_p, NULL, &s_DRMh);
  if (sts != MrmSUCCESS) printf("can't open %s\n", uid_filename);

  sts = MrmFetchWidget(s_DRMh, "mainwindow", toplevel,
		&mainwindow, &dclass);
  if (sts != MrmSUCCESS)  printf("can't fetch mainwindow\n");

  MrmCloseHierarchy( s_DRMh);

  XtManageChild( mainwindow);

  admin = new Admin( toplevel, 0);
  admin->close_cb = &adm_close_cb;

  XtRealizeWidget( toplevel);

  XtAppMainLoop(app_ctx);
  return (0);
}
예제 #4
0
static int help_cmp_items( const void *node1, const void *node2)
{
  char	text1[80];
  char	text2[80];

  brow_GetAnnotation( *(brow_tNode *) node1, 0, text1, sizeof(text1));
  brow_GetAnnotation( *(brow_tNode *) node2, 0, text2, sizeof(text2));
  cdh_ToLower( text1, text1);
  cdh_ToLower( text2, text2);

  return ( strcmp( text1, text2));
}
예제 #5
0
int GeUser::get_user( const char *gu_system, const char *gu_user, const char *gu_password, 
		      unsigned int *priv)
{
  UserList *ul;
  SystemList *sl;
  SystemName *sn, *parent;
  int sts;
  char system[80];
  char password[80];
  char user[80];

  cdh_ToLower( system, gu_system);
  cdh_ToLower( user, gu_user);
  strcpy( password, gu_password);

  // Find system
  sn = new SystemName( system);
  sts = sn->parse();
  if ( EVEN(sts))
  {
    delete sn;
    return USER__NOSUCHSYSTEM;
  }

  while( sn)
  {
    sl = find_system( sn);
    if ( sl)
    {
      ul = (UserList *) sl->find_user( user);
      if ( ul)
      {
        sts = ul->check_password( password);
        if ( EVEN(sts))
          return sts;
        *priv = ul->priv;
        return USER__SUCCESS;
      }
      if ( !(sl->attributes & user_mSystemAttr_UserInherit))
        break;
    }
    parent = sn->parent();
    if ( parent)
      parent->parse();
    delete sn;
    sn = parent;
  }
  return USER__NOSUCHUSER;
}
예제 #6
0
파일: ge.cpp 프로젝트: Strongc/proview
void Ge::open_graph( char *name)
{
    char filename[80];
    char graphname[80];
    int		path_cnt;
    char		*path;
    char		*s;

    graph->clear_all();
    graph->set_show_grid( 0);

    cdh_ToLower( filename, name);
    strcpy( graphname, filename);
    if ( (s = strrchr( graphname, '.')))
        *s = 0;
    graph->set_name( graphname);
    if ( ! strrchr( filename, '.'))
        strcat( filename, ".pwg");
    graph->open( filename);

    subpalette->get_path( &path_cnt, &path);
    graph->set_subgraph_path( path_cnt, path);

    update();
    set_title();

    if ( graph->journal)
        graph->journal->open( graphname);
}
예제 #7
0
파일: wb_pkg.cpp 프로젝트: Strongc/proview
wb_pkg::wb_pkg( char *nodelist, bool distribute, bool config_only)
{
  if ( nodelist) {
    char node_str[32][20];
    int num;
    
    cdh_ToLower( nodelist, nodelist);
    num = dcli_parse( nodelist, " 	,", "", (char *)node_str,
		     sizeof(node_str)/sizeof(node_str[0]),
		     sizeof(node_str[0]), 0);
    m_allnodes = false;
    
    for ( int i = 0; i < num; i++) {
      pkg_node n( node_str[i]);
      m_nodelist.push_back( n);
    }
  }
  else
    m_allnodes = true;

  readConfig();
  if ( config_only)
    return;

  fetchFiles( distribute);
}
예제 #8
0
파일: co_dbs.c 프로젝트: jordibrus/proview
void
dbs_Split(pwr_tStatus *sts, dbs_sMenv *mep, char *dirName)
{
  int i;
  
  for (i = 0; i < mep->nVolRef; i++) {
    dbs_sVenv *vep;
    dbs_sVolRef *vrp;
    int n;
    int j;
    int offset;
    size_t bytes;
    size_t size;
    FILE *fp;
    char fileName[512];
    char *p;
    
    vep = &mep->venv[i + 1];
      
    vrp = (dbs_sVolRef*)(vep->base + vep->sect[dbs_eSect_volref].offset);
    n = vep->sect[dbs_eSect_volref].size / sizeof(*vrp);
    printf("Write meta file %s, %d volrefs\n", vep->vp->name, n);
    printf("  size %d, index %d, nSect %d\n", vep->size, vep->index, vep->nSect);
    size = offset = vep->size;

    sprintf(fileName, "%s/%s.dbs", dirName, vep->vp->name);
    cdh_ToLower(fileName, fileName);
    
    fp = fopen(fileName, "w+b");
    if (fp == NULL) {
      printf("** Cannot open file: %s\n", fileName);
      perror("   Reason");
      return;
    } else {
      printf("!! Opened file: %s\n", fileName);
    }


    p = vep->base;
  
    while (size > 0) {
      if (size > 512) {
        bytes = 512;
      } else {
        bytes = size;
      }
      size -= bytes;  
    
      if (fwrite(p, bytes, 1, fp) < 1)
        return;
      p += bytes;
    }

    fclose(fp);
    
    for (j = 0; j < n; j++, vrp++) {
      offset += vrp->size;
    }
  }
}
예제 #9
0
void WGeGtk::activate_help(GtkWidget *w, gpointer data)
{
  WGe 	*ge = (WGe *)data;
  char key[80];

  if ( ge->help_cb) {
    cdh_ToLower( key, ge->name);
    (ge->help_cb)( ge, key);
  }
}
예제 #10
0
static int	xtttbl_login_func(	void		*client_data,
					void		*client_flag)
{
  XttTbl *xtttbl = (XttTbl *)client_data;
  int	sts;
  char	arg1_str[80];
  char	arg2_str[80];
  char	systemgroup[80];
  unsigned int	priv;
  char	msg[80];
	
  // sts = gdh_GetObjectInfo ( "pwrNode-System.SystemGroup", &systemgroup, 
  //		sizeof(systemgroup));
  // if ( EVEN(sts)) return sts;
  sts = xtttbl->read_bootfile( 0, systemgroup);

  if ( EVEN( dcli_get_qualifier( "dcli_arg1", arg1_str, sizeof(arg1_str))))
  {
    xtttbl->cologin = xtttbl->login_new( "PwR Login", systemgroup, xtttbl_login_success_bc, 
				     xtttbl_login_cancel_bc, &sts);

    return 1;
  }
  if ( EVEN( dcli_get_qualifier( "dcli_arg2", arg2_str, sizeof(arg2_str))))
  {
    xtttbl->message('E',"Syntax error");
    return 1;
  }

  cdh_ToLower( arg1_str, arg1_str);
  cdh_ToLower( arg2_str, arg2_str);
  sts = user_CheckUser( systemgroup, arg1_str, UserList::pwcrypt(arg2_str), &priv);
  if ( EVEN(sts))
    xtttbl->message('E',"Login failure");
  else
  {
    strcpy( xtttbl->user, arg1_str);
    xtttbl->priv = priv;
    sprintf( msg, "User %s logged in", arg1_str);
    xtttbl->message('I', msg);
  }
  return sts;
}
예제 #11
0
void WGeMotif::activate_help( Widget w, WGe *ge, XmAnyCallbackStruct *data)
{
  char key[80];

  if ( ge->help_cb)
  {
    cdh_ToLower( key, ge->name);
    (ge->help_cb)( ge, key);
  }
}
예제 #12
0
void XttGeGtk::activate_help( GtkWidget *w, gpointer data)
{
  XttGe *ge = (XttGe *)data;

  char key[80];

  if ( ge->help_cb) {
    cdh_ToLower( key, ge->name);
    (ge->help_cb)( ge->parent_ctx, key);
  }
}
예제 #13
0
void CnvXtthelpToText::subject_to_fname( char *fname, const char *subject, int path)
{

  if ( path) {
    strcpy( fname, ctx->dir);
    strcat( fname, ctx->rx->name);
  }
  else
    strcpy( fname, ctx->rx->name);
  strcat( fname, ".txt");
  cdh_ToLower( fname, fname);
}
예제 #14
0
static pwr_tStatus OpenObjectGraph (
  ldh_sMenuCall *ip
)
{
  int 		sts;
  char		name[32];
  int		size;
 
  sts = ldh_ObjidToName( ip->PointedSession, ip->Pointed.Objid, ldh_eName_Object, 
	name, sizeof(name), &size);
  if ( EVEN(sts)) return sts;

  cdh_ToLower( name, name);
  ip->wnav->ge_new( name, 0);
  return PWRS__SUCCESS;
}
예제 #15
0
int CnvWblToPs::init( char *first)
{
  pwr_tFileName fname;
  char text[200];

  strcpy( fname, ctx->dir);
  strcat( fname, ctx->rw->volume_name);
  strcat( fname, ".ps");
  cdh_ToLower( fname, fname);

  tops.set_filename( ps_eFile_Info, fname);
  tops.set_filename( ps_eFile_Body, ps_cTmpFile);
  tops.open();

  // Print first page
  tops.set_cf( ps_eFile_Info);
  tops.set_ci( ps_eId_TitlePage);
  tops.y -= 100;
  tops.print_image("pwr_logga.gif");
  tops.y -= 100;
  tops.print_h2( Lng::translate("Object Reference Manual"));
  tops.print_h3( Lng::translate("Volume"));
  tops.print_h2( ctx->rw->volume_name);
  tops.y -= 150;
  tops.print_horizontal_line();
  tops.print_text("Version " pwrv_cPwrVersionStr, tops.style[tops.ci].text);
  tops.print_horizontal_line();
  tops.print_pagebreak( 0);

  tops.set_cf( ps_eFile_Info);
  tops.set_ci( ps_eId_InfoPage);
  tops.y = ps_cPageHeight - ps_cTopMargin - 450;
  tops.print_text(pwrv_cPwrCopyright, tops.style[tops.ci].text);
  tops.print_text("", tops.style[tops.ci].text);
  tops.print_text("Permission is granted to copy, distribute and/or modify this document", tops.style[tops.ci].text);
  tops.print_text("under the terms of the GNU Free Documentation License, Version 1.2", tops.style[tops.ci].text);
  tops.print_text("or any later version published by the Free Software Foundation;", tops.style[tops.ci].text);
  tops.print_text("with no Invariant Sections, no Front-Cover Texts, and no Back-Cover", tops.style[tops.ci].text);
  tops.print_text("Texts.", tops.style[tops.ci].text);

  tops.y = ps_cPageHeight - ps_cTopMargin;
  tops.set_cf( ps_eFile_Body);
  tops.set_ci( ps_eId_Class);
  sprintf( text, "Volume %s", ctx->rw->volume_name);
  tops.set_pageheader( text);
  return 1;
}
예제 #16
0
static pwr_tStatus OpenGraph (
  ldh_sMenuCall *ip
)
{
  int 		sts;
  char		*action;
  int		size;
  char		graph_name[80];

  sts = ldh_GetObjectPar( ip->PointedSession, ip->Pointed.Objid, "RtBody",
			"Name", &action, &size); 
  if ( EVEN(sts)) return sts;

  cdh_ToLower( graph_name, action);
  free( (char *)action);

  ip->wtt->ge_new( graph_name);
  return 1;
}
예제 #17
0
int wb_dbms_env::create()
{
    struct stat sb;
    char name[512];

    cdh_ToLower(m_fileName, m_fileName);

    printf("wb_dbms_env::create: %s\n", m_fileName);
    /* Create the directory, read/write/access owner and group. */
    if (stat(m_fileName, &sb) != 0) {
        if (mkdir(m_fileName, S_IRWXU | S_IRWXG) != 0) {
            fprintf(stderr, "wb_dbms_env::create: mkdir: %s, %s\n", m_fileName, strerror(errno));
            return errno;
        }
    }

    sprintf(name, "%s/%s", m_fileName, "connection.dmsql");

    if (stat(name, &sb) != 0) {
        FILE *fp;

        fp = fopen(name, "w+b");
        if (fp == NULL) {
            printf("** Cannot open file: %s, %s\n", name, strerror(errno));
            return errno;
        }

        fprintf(fp, "HOST...: %s\n", m_host);
        fprintf(fp, "USER...: %s\n", user());
        if ( !passwd() || strcmp( passwd(), "") == 0)
            fprintf(fp, "PASSWD.: (null)\n");
        else
            fprintf(fp, "PASSWD.: %s\n", passwd());
        fprintf(fp, "DB_NAME: %s\n", m_dbName);
        fprintf(fp, "PORT...: %d\n", port());
        fprintf(fp, "SOCKET.: %s\n", socket());

        fclose(fp);
    }

    return 0;
}
예제 #18
0
char *wb_dbms_env::dbName(void)
{
    char pname[80];
    pwr_tStatus sts;
    static char dbname[80];

    sts = utl_get_projectname( pname);
    if ( EVEN(sts)) {
        printf( "** Project is not configured\n");
        return m_dbName;
    }

    strcpy( dbname, "pwrp_");
    strcat( dbname, pname);
    strcat( dbname, "__");
    strcat( dbname, m_dbName);
    cdh_ToLower( dbname, dbname);

    return dbname;
}
예제 #19
0
void CnvXtthelpToHtml::subject_to_fname( char *fname, const char *subject, int path)
{
  char *s, *t;

  if ( path) {
    strcpy( fname, ctx->dir);
    strcat( fname, ctx->rx->name);
  }
  else
    strcpy( fname, ctx->rx->name);
  strcat( fname, "_");
  t = fname + strlen(fname);
  for ( s = (char *)subject; *s; s++,t++) {
    if ( *s == ' ' || *s == '(' || *s == ')')
      *t = '_';
    else
      *t = *s;
  }
  *t = 0;
  strcat( fname, ".html");
  cdh_ToLower( fname, fname);
}
예제 #20
0
//
// Help for class of an object in wnav
//
static pwr_tStatus HelpClass( ldh_sMenuCall *ip) 
{
  pwr_tStatus sts;
  int size;
  char cname[32];
  char vname[32];
  char cmd[200];
  pwr_tCid cid;
  pwr_tVid vid;
  
  sts = ldh_GetAttrRefTid( ip->PointedSession, &ip->Pointed, &cid);
  if ( EVEN(sts)) return sts;

  sts = ldh_ClassIdToName( ip->PointedSession, cid, cname, sizeof(cname), &size);
  if ( EVEN(sts)) return sts;

  vid = cdh_CidToVid(cid);
  if ( cdh_cManufactClassVolMin <= vid && vid <= cdh_cManufactClassVolMax) {
    /* Get help file for this volume */
    sts = ldh_VolumeIdToName( ldh_SessionToWB(ip->PointedSession), vid, vname, sizeof(vname), &size);
    if ( EVEN(sts)) return sts;

    cdh_ToLower( vname, vname);
    snprintf( cmd, sizeof(cmd), "help %s /helpfile=\"$pwr_exe/%s/%s_xtthelp.dat\"/strict", cname, 
	     lng_get_language_str(), vname);

    ip->wnav->command( cmd);
    return 1;
  }

  if ( cname[0] == '$')
    snprintf( cmd, sizeof(cmd), "help %s /strict", &cname[1]);
  else
    snprintf( cmd, sizeof(cmd), "help %s /strict", cname);

  ip->wnav->command( cmd);
  return 1;
}
예제 #21
0
void wb_build::rootvolume( pwr_tVid vid)
{
  pwr_tStatus 		sumsts, plcsts;
  pwr_tOid		oid;
  pwr_tTime		modtime;
  pwr_tObjName		vname;
  pwr_tFileName		fname;
  pwr_tTime		dbs_time, rtt_time;
  pwr_tCmd		cmd;
  char			msg[80];

  wb_log::push();

  if ( !opt.manual) {
    // Build all plcpgm
    classlist( pwr_cClass_plc);
    if ( evenSts()) return;
    plcsts = sumsts = m_sts;

    // Build all XttGraph
    classlist( pwr_cClass_XttGraph);
    if ( evenSts()) return;
    if ( sumsts == PWRB__NOBUILT && m_sts != PWRB__NOBUILT)
      sumsts = m_sts;

    classlist( pwr_cClass_WebHandler);
    if ( evenSts()) return;
    if ( sumsts == PWRB__NOBUILT && m_sts != PWRB__NOBUILT)
      sumsts = m_sts;

    classlist( pwr_cClass_WebBrowserConfig);
    if ( evenSts()) return;
    if ( sumsts == PWRB__NOBUILT && m_sts != PWRB__NOBUILT)
      sumsts = m_sts;

    // Build all WebGraph
    classlist( pwr_cClass_WebGraph);
    if ( evenSts()) return;
    if ( sumsts == PWRB__NOBUILT && m_sts != PWRB__NOBUILT)
      sumsts = m_sts;

    // Build all AppGraph
    classlist( pwr_cClass_AppGraph);
    if ( evenSts()) return;
    if ( sumsts == PWRB__NOBUILT && m_sts != PWRB__NOBUILT)
      sumsts = m_sts;

    classlist( pwr_cClass_Application);
    if ( evenSts()) return;
    if ( sumsts == PWRB__NOBUILT && m_sts != PWRB__NOBUILT)
      sumsts = m_sts;

    classlist( pwr_cClass_PlcProcess);
    if ( evenSts()) return;
    if ( sumsts == PWRB__NOBUILT && m_sts != PWRB__NOBUILT)
      sumsts = m_sts;
  }
  wb_log::pull();

  // Create loadfiles
  oid.oix = 0;
  oid.vid = m_session.vid();
  wb_attribute a = m_session.attribute( oid, "SysBody", "Modified");
  if ( !a) {
    m_sts = a.sts();
    return;
  }

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

  cdh_ToLower( vname, m_session.name());
  sprintf( fname, "$pwrp_load/%s.dbs", vname);
  dcli_translate_filename( fname, fname);
  m_sts = dcli_file_time( fname, &dbs_time);

  // Get time for classvolumes
  wb_merep *merep = ((wb_vrep *)m_session)->merep();
  pwr_tTime mtime = pwr_cNTime;
  pwr_tTime t;
  pwr_tStatus sts;
  for ( wb_mvrep *mvrep = merep->volume( &sts);
	ODD(sts);
	mvrep = merep->nextVolume( &sts, mvrep->vid())) {
    mvrep->time( &t);
    if ( time_Acomp( &t, &mtime) == 1)
      mtime = t;
  }

  if ( opt.force || opt.manual || evenSts() || time_Acomp( &modtime, &dbs_time) == 1 ||
       time_Acomp( &mtime, &dbs_time) == 1 || plcsts != PWRB__NOBUILT) {
    m_sts = lfu_create_loadfile( (ldh_tSession *) &m_session);
    if ( evenSts()) return;
    m_sts = ldh_CreateLoadFile( (ldh_tSession *) &m_session);
    if ( evenSts()) return;

    sprintf( msg, "Build:    Volume   Loadfiles created volume %s", m_session.name());
    MsgWindow::message('I', msg, msgw_ePop_No);

    wb_log::log( &m_session, wlog_eCategory_VolumeBuild, m_session.vid());

    sumsts = PWRB__SUCCESS;
  }
  else
    m_sts = sumsts;

  cdh_uVolumeId	uvid;
  uvid.pwr = m_session.vid();
  sprintf( fname, "$pwrp_load/" load_cNameRttCrr,
	   uvid.v.vid_3, uvid.v.vid_2, uvid.v.vid_1, uvid.v.vid_0);
  dcli_translate_filename( fname, fname);
  m_sts = dcli_file_time( fname, &rtt_time);
  if ( opt.crossref && ( evenSts() || time_Acomp( &modtime, &rtt_time) == 1)) {
    strcpy( cmd, "create crossreferencefiles");
    m_wnav->command( cmd);
    if ( ODD(sumsts))
      sumsts = PWRB__SUCCESS;
	 
    sprintf( msg, "Build:    Volume   Crossreference file generated volume %s", m_session.name());
    MsgWindow::message('I', msg, msgw_ePop_No);
  }


  m_sts = sumsts;
}
예제 #22
0
int wb_dbms_env::open(void)
{
    char var[32];
    char value[32];
    char buf[512];
    char *s;
    char *valp;
    int rc;

    cdh_ToLower(m_fileName, m_fileName);

    sprintf(buf, "%s/%s", m_fileName, "connection.dmsql");

    FILE *fp = fopen(buf, "r");
    if (fp == NULL) {
        printf("** Cannot open file: %s, %s\n", buf, strerror(errno));
        return errno;
    }

    while ((s = fgets(buf, sizeof(buf) - 1, fp))) {
        if (*s == '#')
            continue;

        rc = sscanf(s, " %[A-Z_] %*[^ ] %s", var, value);
        if (rc < 1)
            continue;
        if (rc == 1)
            valp = 0;
        else
            valp = value;

        if (strcmp(valp, "(null)") == 0)
            valp = 0;

        if (strcmp(var, "HOST") == 0) {
            host(valp);
        }
        else if (strcmp(var, "USER") == 0) {
            user(valp);
        }
        else if (strcmp(var, "PASSWD") == 0) {
            passwd(valp);
        }
        else if (strcmp(var, "DB_NAME") == 0) {
            dbName(valp);
        }
        else if (strcmp(var, "PORT") == 0) {
            if (valp == 0)
                port(0);
            else
                port(atoi(valp));
        }
        else if (strcmp(var, "SOCKET") == 0) {
            socket(valp);
        }
        else {
            printf("Unknown connection parameter! : %s\n", var);
        }
    }

    fclose(fp);

    m_exists = true;

    return 0;
}
예제 #23
0
void wb_build::node( char *nodename, void *volumelist, int volumecnt)
{
  lfu_t_volumelist *vlist = (lfu_t_volumelist *)volumelist;
  pwr_tTime vtime;
  pwr_tTime btime;
  pwr_tFileName fname;
  pwr_tObjName vname;
  int bussid = -1;
  int rebuild = 1;
  pwr_tStatus status;
  char currentnode[80];
  char node[80];
  pwr_tStatus sumsts;

  printf( "-- Build node %s\n", nodename);

  wb_log::push();

  if ( !opt.manual) {
    // Check if there is any new dbsfile
    rebuild = 0;
    for ( int i = 0; i < volumecnt; i++) {
      if ( cdh_NoCaseStrcmp( nodename, vlist[i].p1) == 0) {
	if ( bussid == -1) {
	  char systemname[80], systemgroup[80];
	  pwr_tVid *vl;
	  pwr_tString40 *vnl;
	  int vcnt;
	
	  // Get time for current bootfile
	  status = sscanf( vlist[i].p3, "%d", &bussid);
	  if ( status != 1) {
	    // Bussid error
	  }
	
	  sprintf( fname, load_cNameBoot, 
		   load_cDirectory, vlist[i].p2, bussid);
	  cdh_ToLower( fname, fname);
	  dcli_translate_filename( fname, fname);
	  status = lfu_ReadBootFile( fname, &btime, systemname, systemgroup, &vl, &vnl, 
				     &vcnt, 0, 0);
	  if ( EVEN(status)) {
	    rebuild = 1;
	  }	 
	  strcpy( node, vlist[i].p2);
	}
      
	if ( vlist[i].volume_id == m_session.vid()) {
	  // Build current volume
	  volume();
	  if ( evenSts()) 
	    return;
	}
      
	cdh_ToLower( vname, vlist[i].volume_name);
	if ( vlist[i].volume_id >= cdh_cUserVolMin &&
	     vlist[i].volume_id <= cdh_cUserVolMax) {
	  sprintf( fname, "$pwrp_load/%s.dbs", vname);
	  dcli_translate_filename( fname, fname);
	  m_sts = dcli_file_time( fname, &vtime);
	  if ( evenSts()) {
	    // Dbs file is missing
	    char msg[200];
	    sprintf( msg, "Loadfile for volume %s not created", vname);
	    MsgWindow::message('E', msg, msgw_ePop_Yes);
	    return;
	  }
	  if ( vtime.tv_sec > btime.tv_sec)
	    rebuild = 1;
	}
      }
    }
  }
  wb_log::pull();

  if ( m_wnav && m_wnav->ldhses) {
    wb_erep *erep = *(wb_env *)ldh_SessionToWB( m_wnav->ldhses);
    erep->checkVolumes( &m_sts, nodename);

    if ( evenSts())
      return;
  }

  if ( opt.force || opt.manual || rebuild) {

    m_sts = lfu_create_bootfile( nodename, (lfu_t_volumelist *)volumelist, volumecnt,
				 opt.debug);
    if ( ODD(m_sts))
      wb_log::log( wlog_eCategory_NodeBuild, nodename, 0);      
  }
  else
    m_sts = PWRB__NOBUILT;


  sumsts = m_sts;

  syi_NodeName( &m_sts, currentnode, sizeof(currentnode));

  // if ( cdh_NoCaseStrcmp( node, currentnode) == 0) 
  {
    pwr_tFileName src_fname, dest_fname;
    pwr_tCmd	cmd;
    pwr_tTime	dest_time, src_time;


    // Copy xtt_help.dat from $pwrp_cnf to $pwrp_exe
    sprintf( src_fname, "$pwrp_cnf/%s/xtt_help.dat", node);
    dcli_translate_filename( src_fname, src_fname);
    m_sts = dcli_file_time( src_fname, &src_time);
    if ( evenSts()) {
      strcpy( src_fname, "$pwrp_cnf/xtt_help.dat");
      dcli_translate_filename( src_fname, src_fname);
      m_sts = dcli_file_time( src_fname, &src_time);
      if ( evenSts()) {
	char msg[200];
	sprintf( msg, "File is missing $pwrp_cnf/xtt_help.dat");
	MsgWindow::message('E', msg, msgw_ePop_Yes);
      }
    }

    if ( oddSts()) {
      strcpy( dest_fname, "$pwrp_exe/xtt_help.dat");
      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:    Copy %s -> $pwrp_exe", src_fname);
	MsgWindow::message( 'I', cmd, msgw_ePop_No);
	m_sts = PWRB__SUCCESS;
      }
      else
	m_sts = PWRB__NOBUILT;
    }  
    if ( sumsts == PWRB__NOBUILT && m_sts != PWRB__NOBUILT)
      sumsts = m_sts;

    // Copy pwrp_alias.dat from $pwrp_cnf to $pwrp_load
    sprintf( src_fname, "$pwrp_cnf/%s/pwrp_alias.dat", node);
    dcli_translate_filename( src_fname, src_fname);
    m_sts = dcli_file_time( src_fname, &src_time);
    if ( evenSts()) {
      strcpy( src_fname, "$pwrp_cnf/pwrp_alias.dat");
      dcli_translate_filename( src_fname, src_fname);
      m_sts = dcli_file_time( src_fname, &src_time);
    }
    
    if ( oddSts()) {
      strcpy( dest_fname, "$pwrp_load/pwrp_alias.dat");
      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:    Copy %s -> $pwrp_load", src_fname);
	MsgWindow::message( 'I', cmd, msgw_ePop_No);
	m_sts = PWRB__SUCCESS;
      }
      else
	m_sts = PWRB__NOBUILT;
    }
    else
      m_sts = PWRB__NOBUILT;

    if ( sumsts == PWRB__NOBUILT && m_sts != PWRB__NOBUILT)
      sumsts = m_sts;

    // Copy ld_appl_...txt from $pwrp_cnf to $pwrp_load
    sprintf( src_fname, load_cNameAppl, "$pwrp_cnf", cdh_Low(node), bussid);
    dcli_translate_filename( src_fname, src_fname);
    m_sts = dcli_file_time( src_fname, &src_time);
    if ( evenSts()) {
      char dir[80];
      strcpy( dir, "$pwrp_cnf/");
      sprintf( src_fname, load_cNameAppl, dir, cdh_Low(node), bussid);
      dcli_translate_filename( src_fname, src_fname);
      m_sts = dcli_file_time( src_fname, &src_time);
    }

    if ( oddSts()) {
      sprintf( dest_fname, load_cNameAppl, "$pwrp_load/", cdh_Low(node), bussid);
      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:    %s -> $pwrp_load", src_fname);
	MsgWindow::message( 'I', cmd, msgw_ePop_No);
	m_sts = PWRB__SUCCESS;
      }
      else
	m_sts = PWRB__NOBUILT;
    }
    else
      m_sts = PWRB__NOBUILT;

    if ( sumsts == PWRB__NOBUILT && m_sts != PWRB__NOBUILT)
      sumsts = m_sts;
  }

  if ( sumsts != PWRB__NOBUILT) {
    char msg[200];

    sprintf( msg, "Build:    Node     %s", nodename);
    MsgWindow::message('I', msg, msgw_ePop_No);
  }

  m_sts = sumsts;
}
예제 #24
0
static pwr_tStatus OpenDb (
  ldh_sMenuCall *ip
)
{
#ifdef OS_VMS
  int size;
  char *db_id;
  int	sts;
  char name[80];
  static char	cmd[100];
  $DESCRIPTOR(cmd_desc,cmd);
  unsigned long cli_flag = CLI$M_NOWAIT;

  sts = ldh_GetObjectPar( ip->PointedSession,
			ip->Pointed.Objid, "RtBody",
			"Id", (char **) &db_id, &size);
  if (EVEN(sts)) return sts;

  sts = ldh_ObjidToName ( ip->PointedSession, ip->Pointed.Objid,
		ldh_eName_Object, name, sizeof(name), &size);
  if ( EVEN(sts)) return sts;

  sprintf( cmd,
	"@pwr_exe:wb_open_db \"%s\" \"%s\" \"%s\" \"\" \"%s\"",
	db_id, CoLogin::username(), CoLogin::uspassword(), name);
  free( db_id);

  sts = lib$spawn (&cmd_desc , 0 , 0 , &cli_flag );
  if (EVEN(sts)) {
    printf("-- Error when creating subprocess.\n");
    return sts;
  }
#else
  int size;
  char *db_id_p;
  char db_id[80];
  int	sts;
  char name[80];
  char filename[80];
  char	cmd[100];

  sts = ldh_GetObjectPar( ip->PointedSession,
			ip->Pointed.Objid, "RtBody",
			"Id", (char **) &db_id_p, &size);
  if (EVEN(sts)) return sts;

  sts = ldh_ObjidToName ( ip->PointedSession, ip->Pointed.Objid,
		ldh_eName_Object, name, sizeof(name), &size);
  if ( EVEN(sts)) return sts;

  dcli_translate_filename( filename, "$pwr_exe/wb_open_db.sh");
  cdh_ToLower( db_id, db_id_p);
  sprintf( cmd,
	"%s \"%s\" \"%s\" \"%s\" \"\" \"%s\" &",
	filename, db_id, CoLogin::username(), CoLogin::ucpassword(), name);
  free( db_id_p);

  sts = system( cmd);
  if ( sts == -1 || sts == 127) {
    printf("-- Error when creating process.\n");
    return sts;
  }
#endif
  return 1;
}
예제 #25
0
int CnvWblToHtml::typedef_exec()
{
  pwr_tFileName fname;
  int i;
  pwr_tFileName html_file_name;
  char full_class_name[80];
  char ref_name[200];
  pwr_tFileName struct_file;
  char low_volume_name[80];
  char low_class_name[80];
  char txt[200];
  char code_aref[200];
  int lng_sts = 1;

  if ( Lng::current() != lng_eLanguage_en_US)
    lng_sts = ctx->rw->read_lng( ctx->rw->typedef_name, 0);

  strcpy( ctx->rw->class_name, ctx->rw->typedef_name);

  cdh_ToLower( low_volume_name, ctx->rw->volume_name);
  cdh_ToLower( low_class_name, ctx->rw->class_name);

  CnvWblToH::get_filename( ctx->rw, fname, 0);
  CnvReadSrc::filename_to_html( struct_file, fname);

  strcpy( full_class_name, ctx->rw->volume_name);
  strcat( full_class_name, ":");
  strcat( full_class_name, ctx->rw->class_name);

  strcpy( html_file_name, low_volume_name);
  strcat( html_file_name, "_");
  strcat( html_file_name, low_class_name);

  // Add into index file
  fp_html_index <<
"<A HREF=\"" << html_file_name << ".html\" TARGET=\"classFrame\">" << ctx->rw->class_name << "</A>" << endl <<
"<BR>" << endl;

  // Add into AllClasses js file
  cnv_mentry mentry;
  strcpy( mentry.name, ctx->rw->class_name);
  strcpy( mentry.file, html_file_name);
  strcat( mentry.file, ".html");
  all_types.push_back( mentry);

  // Add into group file
  for ( int i = 0; i < ctx->rw->doc_group_cnt; i++) {
    for ( int j = 0; j < ctx->setup->group_cnt; j++) {
      if ( cdh_NoCaseStrcmp( ctx->rw->doc_groups[i], ctx->setup->groups[j]) == 0) {
	fp_html_group[j] <<
"<A HREF=\"" << html_file_name << ".html\" TARGET=\"classFrame\">" << ctx->rw->class_name << "</A>" << endl <<
"<BR>" << endl;

 	if ( !js_group_first[j])
	  fp_js_group[j] << ",";
	else
	  js_group_first[j] = false;

	fp_js_group[j] <<
"[\"" << ctx->rw->class_name << "\",\"" << html_file_name << ".html\"]" << endl;
      }
    }
  }

  // Create class html file

  strcpy( fname, ctx->dir);
  strcat( fname, html_file_name);
  strcat( fname, ".html");
  cdh_ToLower( fname, fname);
  html_clf = new CnvFile();
  html_clf->f.open( fname);

  fp_tmp.open( cread_cTmpFile1);


  html_class_open = 1;

  html_clf->f <<
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Frameset//EN\"\"http://www.w3.org/TR/REC-html40/frameset.dtd\">" << endl <<
"<!-- Generated by pwr_cnv-->" << endl <<
"<HTML>" << endl <<
"<HEAD>" << endl <<
"<META http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">" << endl <<
"<TITLE>" << endl <<
": Type  " << full_class_name << endl <<
"</TITLE>" << endl <<
"<link rel=\"stylesheet\" type=\"text/css\" href=\"orm.css\">" << endl <<
"</HEAD>" << endl <<
"<BODY BGCOLOR=\"white\">" << endl <<
"" << endl <<
"<!-- ========== START OF NAVBAR ========== -->" << endl <<
"<A NAME=\"navbar_top\"><!-- --></A>" << endl <<
"<TABLE BORDER=\"0\" WIDTH=\"100%\" CELLPADDING=\"1\" CELLSPACING=\"0\">" << endl <<
"<TR>" << endl <<
"<TD COLSPAN=2 BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" << endl <<
"<A NAME=\"navbar_top_firstrow\"><FONT  CLASS=\"NavBarFont1Rev\"><B>Volume " << ctx->rw->volume_name << "</B></FONT></A>" << endl <<
"</TD>" << endl <<
"</TR>" << endl <<
endl <<
"<TR>" << endl <<
"<TD BGCOLOR=\"white\" CLASS=\"NavBarCell2\"><FONT SIZE=\"-2\">" << endl;

  if ( (strcmp( ctx->rw->typedef_typeref, "Mask") == 0 ||
	strcmp( ctx->rw->typedef_typeref, "Enum") == 0) &&
       strcmp( low_volume_name, "pwrs") != 0) {
    sprintf( code_aref, "%s#%s", struct_file, ctx->rw->typedef_name);
    html_clf->f <<
" C Binding: &nbsp;<A HREF=\"" << code_aref << "\">Typedef</A>" << endl;
  }
  else if ( ctx->rw->doc_fresh && strcmp( ctx->rw->doc_code, "") != 0)
  {
    CnvReadSrc::filename_to_html( ref_name, ctx->rw->doc_code);
    sprintf( code_aref, "%s#%s", ref_name, low_class_name);
    html_clf->f <<
" C Binding: &nbsp;<A HREF=\"" << code_aref << "\">Typedef</A>" << endl;
  }
  for ( i = 0; i < 50; i++)
    html_clf->f << "&nbsp;";
  html_clf->f <<
"</FONT></TD>" << endl <<
"<TD BGCOLOR=\"white\" CLASS=\"NavBarCell2\"><FONT SIZE=\"-2\">" << endl <<
"  <A HREF=\"" << low_volume_name << "_index.html\" TARGET=\"_top\"><B>INDEX</B></A>  &nbsp;" << endl <<
"&nbsp;<A HREF=\"" << html_file_name << ".html\" TARGET=\"_top\"><B>NO INDEX</B></A></FONT></TD>" << endl <<
"</TR>" << endl <<
"</TABLE>" << endl <<
"<!-- =========== END OF NAVBAR =========== -->" << endl <<
endl <<
"<HR>" << endl <<
"<!-- ======== START OF CLASS DATA ======== -->" << endl <<
"<H2>" << endl <<
"Type " << ctx->rw->class_name << "</H2>" << endl <<
"<HR>" << endl <<
"<DL>" << endl;
  if ( ctx->rw->doc_fresh && strcmp( ctx->rw->doc_author, "") != 0)
  {
    html_clf->f <<
"<DT><B>Author</B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" << ctx->rw->doc_author << "<DT>" << endl;
  }

  if ( ctx->rw->doc_fresh && strcmp( ctx->rw->doc_version, "") != 0)
  {
    html_clf->f <<
"<DT><B>Version</B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" << ctx->rw->doc_version << "<DT>" << endl;
  }
  if ( ctx->rw->doc_fresh && strcmp( ctx->rw->doc_code, "") != 0)
  {
    html_clf->f <<
"<DT><B>Code</B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" << ctx->rw->doc_code << "<DT>" << endl;
  }

  html_clf->f <<
"<BR><DT><B>Description</B><DT><BR>" << endl <<
"</DL><DIV ID=\"description\"><XMP>" << endl;

  if ( ctx->rw->doc_fresh) {
    for ( i = 0; i < ctx->rw->doc_cnt; i++) {
      ctx->remove_spaces( ctx->rw->doc_text[i], txt);
      if ( strncmp( CnvCtx::low(txt), "@image", 6) == 0)  {
	char imagefile[80];

	ctx->remove_spaces( txt + 6, imagefile);
	html_clf->f << "</XMP><IMG SRC=\"" << imagefile << "\"><XMP>" << endl;
      }
      else if ( strncmp( CnvCtx::low(txt), "@b", 2) == 0)  {
	html_clf->f << "</XMP><B><FONT SIZE=\"3\">" << txt + 2 << "</FONT></B><BR><XMP>" << endl;
      }
      else if ( strncmp( CnvCtx::low(txt), "@h1", 3) == 0)  {
	html_clf->f << "</XMP><H3>" << txt + 3 << "</H3><BR><XMP>" << endl;
      }
      else if ( strncmp( CnvCtx::low(txt), "@h2", 3) == 0)  {
	html_clf->f << "</XMP><H4>" << txt + 3 << "</H4><BR><XMP>" << endl;
      }
      else
	html_clf->f << ctx->rw->doc_text[i] << endl;
    }
  }
  html_clf->f <<
"</XMP></DIV>" << endl;

  for ( i = 0; i < ctx->rw->doc_link_cnt; i++) {
    html_clf->f <<
"  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF=\"" << ctx->rw->doc_link_ref[i] << "\" TARGET=\"_self\"><FONT size=\"-1\"> " << ctx->rw->doc_link_text[i] <<"</FONT></A><BR>" << endl;
  }
  for ( i = 0; i < ctx->rw->doc_clink_cnt; i++) {
    html_clf->f <<
"  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF=\"" << ctx->rw->doc_clink_ref[i] << "\" TARGET=\"_self\"><FONT size=\"-1\"> " << ctx->rw->doc_clink_text[i] <<"</FONT></A><BR>" << endl;
  }
  html_clf->f <<
"</FONT>" << endl;


  if ( strcmp( ctx->rw->typedef_typeref, "Mask") == 0 ||
       strcmp( ctx->rw->typedef_typeref, "Enum") == 0) {
    char bitchar = _tolower(ctx->rw->typedef_typeref[0]);

    html_clf->f <<
"<HR><BR>" << endl <<
"<A NAME=\"" << ctx->rw->typedef_name << "\"><!-- --></A>" << endl <<
"<TABLE BORDER=\"1\" CELLPADDING=\"3\" CELLSPACING=\"0\" WIDTH=\"100%\">" << endl <<
"<TR BGCOLOR=\"#CCCCFF\" CLASS=\"TableHeadingColor\">" << endl <<
"<TD COLSPAN=3><FONT SIZE=\"+2\">" << endl <<
"<B>" << ctx->rw->typedef_name << " elements</B></FONT>" <<
"<FONT SIZE=\"+1\"<B>&nbsp;&nbsp;&nbsp;&nbsp; <A HREF=\"" << code_aref << "\">pwr_" << bitchar << ctx->rw->typedef_name << "</A></B></FONT></TD>" << endl <<
"</TR>" << endl;
  }
  return 1;
}
예제 #26
0
int CnvWblToHtml::class_exec()
{
  pwr_tFileName fname;
  int i;
  pwr_tFileName html_file_name;
  pwr_tFileName ctree_file;
  char full_class_name[80];
  char ref_name[200];
  pwr_tFileName struct_file;
  pwr_tFileName hpp_file;
  char low_volume_name[80];
  char low_class_name[80];
  char txt[200];
  char timestr[80];
  int lng_sts = 1;

  cdp_created = false;

  if ( Lng::current() != lng_eLanguage_en_US)
    lng_sts = ctx->rw->read_lng( ctx->rw->class_name, 0);

  time_AtoAscii( 0, time_eFormat_DateAndTime, timestr, sizeof(timestr));

  cdh_ToLower( low_volume_name, ctx->rw->volume_name);
  cdh_ToLower( low_class_name, ctx->rw->class_name);

  CnvWblToH::get_filename( ctx->rw, fname, 0);
  CnvReadSrc::filename_to_html( struct_file, fname);

  ctx->hpp = 1;
  CnvWblToH::get_filename( ctx->rw, fname, 1);
  CnvReadSrc::filename_to_html( hpp_file, fname);
  ctx->hpp = 0;

  strcpy( full_class_name, ctx->rw->volume_name);
  strcat( full_class_name, ":");
  strcat( full_class_name, ctx->rw->class_name);

  strcpy( html_file_name, low_volume_name);
  strcat( html_file_name, "_");
  strcat( html_file_name, low_class_name);

  strcpy( ctree_file, low_volume_name);
  strcat( ctree_file, "_");
  strcat( ctree_file, low_class_name);
  strcat( ctree_file, "_ctree.html");


  // Add into index file
  fp_html_index <<
"<A HREF=\"" << html_file_name << ".html\" TARGET=\"classFrame\">" << ctx->rw->class_name << "</A>" << endl <<
"<BR>" << endl;

  cnv_mentry mentry;
  strcpy( mentry.name, ctx->rw->class_name);
  strcpy( mentry.file, html_file_name);
  strcat( mentry.file, ".html");
  all_classes.push_back( mentry);

  // Add into group file
  for ( int i = 0; i < ctx->rw->doc_group_cnt; i++) {
    for ( int j = 0; j < ctx->setup->group_cnt; j++) {
      if ( cdh_NoCaseStrcmp( ctx->rw->doc_groups[i], ctx->setup->groups[j]) == 0) {
	fp_html_group[j] <<
"<A HREF=\"" << html_file_name << ".html\" TARGET=\"classFrame\">" << ctx->rw->class_name << "</A>" << endl <<
"<BR>" << endl;

 	if ( !js_group_first[j])
	  fp_js_group[j] << ",";
	else
	  js_group_first[j] = false;
	fp_js_group[j] <<
"[\"" << ctx->rw->class_name << "\",\"" << html_file_name << ".html\"]" << endl;
      }
    }
  }

  // Create class html file

  strcpy( fname, ctx->dir);
  strcat( fname, html_file_name);
  strcat( fname, ".html");
  cdh_ToLower( fname, fname);
  html_clf = new CnvFile();
  html_clf->f.open( fname);

  fp_tmp.open( cread_cTmpFile1);

  fp_tmp <<
"<HR><BR>" << endl <<
"<A NAME=\"detail\"><H1>Attributes detail</H1></A>" << endl;

  html_class_open = 1;

  html_clf->f <<
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Frameset//EN\"\"http://www.w3.org/TR/REC-html40/frameset.dtd\">" << endl <<
"<!-- Generated by co_convert " << timestr << "  -->" << endl <<
"<HTML>" << endl <<
"<HEAD>" << endl <<
"<META http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">" << endl <<
"<TITLE>" << endl <<
"  Class  " << full_class_name << endl <<
"</TITLE>" << endl <<
"<link rel=\"stylesheet\" type=\"text/css\" href=\"orm.css\">" << endl <<
"</HEAD>" << endl <<
"<BODY BGCOLOR=\"white\">" << endl <<
"" << endl <<
"<!-- ========== START OF NAVBAR ========== -->" << endl <<
"<A NAME=\"navbar_top\"><!-- --></A>" << endl <<
"<TABLE BORDER=\"0\" WIDTH=\"100%\" CELLPADDING=\"1\" CELLSPACING=\"0\">" << endl <<
"<TR>" << endl <<
"<TD COLSPAN=2 BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" << endl <<
"<A NAME=\"navbar_top_firstrow\"><FONT  CLASS=\"NavBarFont1Rev\"><B>Volume " << ctx->rw->volume_name << "</B></FONT></A>" << endl <<
"</TD>" << endl <<
"</TR>" << endl <<
endl <<
"<TR>" << endl <<
"<TD BGCOLOR=\"white\" CLASS=\"NavBarCell2\"><FONT SIZE=\"-2\">" << endl <<
"  Attributes: &nbsp;<A HREF=\"#RtBody\">Runtime</A>" << endl <<
"&nbsp;|&nbsp;<A HREF=\"#DevBody\">Development</A>" << endl <<
"&nbsp;|&nbsp;<A HREF=\"#SysBody\">System</A>" << endl <<
"&nbsp;|&nbsp;<A HREF=\"#template\">Template</A>" << endl <<
"&nbsp;|&nbsp;<A HREF=\"#detail\">Detail</A>" << endl <<
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C Binding: " << endl <<
"&nbsp;<A HREF=\"" << struct_file << "#" << ctx->rw->class_name << "\">Struct</A>" << endl <<
"&nbsp;|&nbsp<A HREF=\"" << hpp_file << "#" << ctx->rw->class_name << "\">Class</A>" << endl;

  if ( ctx->rw->doc_fresh && strcmp( ctx->rw->doc_code, "") != 0) {
    if ( strstr( ctx->rw->doc_code, ".pdf") != 0) {
      strcpy( ref_name, ctx->rw->doc_code);
      html_clf->f <<
"&nbsp;|&nbsp;<A HREF=\"" << ref_name << "\">Code</A>" << endl;
    }
    else {
      CnvReadSrc::filename_to_html( ref_name, ctx->rw->doc_code);
      html_clf->f <<
"&nbsp;|&nbsp;<A HREF=\"" << ref_name << "#" << low_class_name << "\">Code</A>" << endl;
    }
  }
  html_clf->f <<
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp<A HREF=\"" << ctree_file << "\">ClassTree</A>" << endl;

  html_clf->f <<
"</FONT></TD>" << endl <<
"<TD BGCOLOR=\"white\" CLASS=\"NavBarCell2\"><FONT SIZE=\"-2\">" << endl <<
"  <A HREF=\"" << low_volume_name << "_index.html\" TARGET=\"_top\"><B>INDEX</B></A>  &nbsp;" << endl <<
"&nbsp;<A HREF=\"" << html_file_name << ".html\" TARGET=\"_top\"><B>NO INDEX</B></A></FONT></TD>" << endl <<
"</TR>" << endl <<
"</TABLE>" << endl <<
"<!-- =========== END OF NAVBAR =========== -->" << endl <<
endl <<
"<HR>" << endl <<
"<!-- ======== START OF CLASS DATA ======== -->" << endl <<
"<H2>" << endl <<
"Class " << ctx->rw->class_name << "</H2>" << endl <<
"<HR>" << endl <<
"<DL>" << endl;
  if ( ctx->rw->doc_fresh && strcmp( ctx->rw->doc_author, "") != 0)
  {
    html_clf->f <<
"<DT><B>" << Lng::translate("Author") << "</B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" << ctx->rw->doc_author << "<DT>" << endl;
  }
  if ( ctx->rw->doc_fresh && strcmp( ctx->rw->doc_creator, "") != 0)
  {
    html_clf->f <<
"<DT><B>" << Lng::translate("Creator") << "</B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" << ctx->rw->doc_creator << "<DT>" << endl;
  }

  if ( ctx->rw->doc_fresh && (strcmp( ctx->rw->doc_version, "") != 0 || 
			      strcmp( ctx->rw->class_version, "") != 0))
  {
    html_clf->f <<
"<DT><B>" << Lng::translate("Version") << "</B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    if ( strcmp( ctx->rw->doc_version, "") != 0)
      html_clf->f << ctx->rw->doc_version << "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    if (strcmp( ctx->rw->class_version, "") != 0)
      html_clf->f << ctx->rw->class_version;
    html_clf->f << "<DT>" << endl;
  }
  if ( ctx->rw->doc_fresh && strcmp( ctx->rw->doc_code, "") != 0)
  {
    if ( strstr( ctx->rw->doc_code, ".pdf") != 0) {
      html_clf->f <<
"<DT><B>" << Lng::translate("Code") << "</B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A HREF=\"" << ref_name << "\"><FONT size=\"-1\">PlcTemplate</FONT></A><DT>" << endl;
    }
    else {
      html_clf->f <<
"<DT><B>" << Lng::translate("Code") << "</B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A HREF=\"" << ref_name << "#" << low_class_name << "\"><FONT size=\"-1\">" << ctx->rw->doc_code << "</FONT></A><DT>" << endl;
    }
  }

  html_clf->f <<
"<BR><DT><B>" << Lng::translate("Description") << "</B><DT><BR>" << endl <<
"</DL><DIV ID=\"description\"><XMP>" << endl;

  if ( ctx->rw->doc_fresh) {
    for ( i = 0; i < ctx->rw->doc_cnt; i++) {
      ctx->remove_spaces( ctx->rw->doc_text[i], txt);
      if ( strncmp( CnvCtx::low(txt), "@image", 6) == 0)  {
	char imagefile[80];

	ctx->remove_spaces( txt + 6, imagefile);
	html_clf->f << "</XMP><IMG SRC=\"" << imagefile << "\"><XMP>" << endl;
      }
      else if ( strncmp( CnvCtx::low(txt), "@b", 2) == 0)  {
	html_clf->f << "</XMP><B><FONT SIZE=\"3\">" << txt + 2 << "</FONT></B><BR><XMP>" << endl;
      }
      else if ( strncmp( CnvCtx::low(txt), "@h1", 3) == 0)  {
	html_clf->f << "</XMP><H3>" << txt + 3 << "</H3><BR><XMP>" << endl;
      }
      else if ( strncmp( CnvCtx::low(txt), "@h2", 3) == 0)  {
	html_clf->f << "</XMP><H4>" << txt + 3 << "</H4><BR><XMP>" << endl;
      }
      else
	html_clf->f << ctx->rw->doc_text[i] << endl;
    }
  }
  html_clf->f <<
"</XMP>" << endl;

  for ( i = 0; i < ctx->rw->doc_xlink_cnt; i++) {
    html_clf->f <<
"  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF=\"" << ctx->rw->doc_xlink_ref[i] << "\" TARGET=\"_self\"><FONT size=\"-1\"> " << ctx->rw->doc_xlink_text[i] <<"</FONT></A><BR>" << endl;
  }
  for ( i = 0; i < ctx->rw->doc_clink_cnt; i++) {
    html_clf->f <<
"  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF=\"" << ctx->rw->doc_clink_ref[i] << "\" TARGET=\"_self\"><FONT size=\"-1\"> " << ctx->rw->doc_clink_text[i] <<"</FONT></A><BR>" << endl;
  }
  for ( i = 0; i < ctx->rw->doc_link_cnt; i++) {
    html_clf->f <<
"  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF=\"" << ctx->rw->doc_link_ref[i] << "\" TARGET=\"_self\"><FONT size=\"-1\"> " << ctx->rw->doc_link_text[i] <<"</FONT></A><BR>" << endl;
  }
  html_clf->f <<
"</DIV>" << endl;  
  return 1;
}
예제 #27
0
int CnvWblToHtml::close()
{

  fp_html_index <<
"</FONT></TD>" << endl <<
"</TR>" << endl <<
"</TABLE>" << endl <<
"" << endl <<
"</BODY>" << endl <<
"</HTML>" << endl;
  fp_html_index.close();

  print_all_menu();

  fp_js_all << 
"])" << endl <<
"}" << endl;
  fp_js_all.close();

  for ( int i = 0; i < ctx->setup->group_cnt; i++) {
    fp_html_group[i] <<
"</FONT></TD>" << endl <<
"</TR>" << endl <<
"</TABLE>" << endl <<
"" << endl <<
"</BODY>" << endl <<
"</HTML>" << endl;
    fp_html_group[i].close();

    fp_js_group[i] <<
"])" << endl <<
"}" << endl;
    fp_js_group[i].close();
  }

#if 0
  {
    char fname[200];

    strcpy( fname, ctx->dir);
    strcat( fname, "index.jsm");
    cdh_ToLower( fname, fname);
    ofstream fp( fname);
 
   fp <<
"  aux = insFld(foldersTree, gFld(\"<b>pwrs</b>\",\"pwrs_index.html\"))" << endl <<
"  pwrs_index(aux)" << endl <<
"  aux = insFld(foldersTree, gFld(\"<b>pwrb</b>\",\"pwrb_index.html\"))" << endl <<
"  pwrb_index(aux)" << endl <<
"  aux = insFld(foldersTree, gFld(\"<b>nmps</b>\",\"nmps_index.html\"))" << endl <<
"  nmps_index(aux)" << endl <<
"  aux = insFld(foldersTree, gFld(\"<b>ssab</b>\",\"ssab_index.html\"))" << endl <<
"  ssab_index(aux)" << endl <<
"  aux = insFld(foldersTree, gFld(\"<b>tlog/b>\",\"tlog_index.html\"))" << endl <<
"  tlog_index(aux)" << endl;

   fp.close();
  }
#endif

  char cmd[600];
  snprintf( cmd, sizeof(cmd), "if [ -e %s/../../orm_menu.js ]; then cat %s/*.jsf %s/../../orm_menu.js > %s/menu.js; fi", 
	   ctx->dir, ctx->dir, ctx->dir, ctx->dir);
  system( cmd);

  return 1;
}
예제 #28
0
void wb_build::classvolume( pwr_tVid vid)
{
  pwr_tCmd cmd;
  pwr_tFileName fname;
  pwr_tObjName name;
  pwr_tTime wbl_time, dbs_time, h_time;
  pwr_tStatus fsts;
  pwr_tStatus sumsts = PWRB__NOBUILT;

  wb_log::push();

  if ( !opt.manual) {
    // Build all ClassDef
    classlist( pwr_eClass_ClassDef);
    if ( evenSts()) return;
    if ( sumsts == PWRB__NOBUILT && m_sts != PWRB__NOBUILT)
      sumsts = m_sts;
  }

  wb_log::pull();

  if ( vid == 0) {
    // Build current volume
    cdh_ToLower( name, m_session.name());
  }
  else {
    wb_env env = m_session.env();
    wb_volume v = env.volume(vid);
    if ( !v) {
      m_sts = v.sts();
      return;
    }
    strcpy( name, v.name());
  }

  // Get time for wb_load file
  sprintf( fname, "$pwrp_db/%s.wb_load", name);
  dcli_translate_filename( fname, fname);
  m_sts = dcli_file_time( fname, &wbl_time);
  if ( evenSts())
    return;

  // Get time for dbs file
  sprintf( fname, "$pwrp_load/%s.dbs", name);
  dcli_translate_filename( fname, fname);
  fsts = dcli_file_time( fname, &dbs_time);

  // Get time for classvolumes
  wb_merep *merep = ((wb_erep *)m_session.env())->merep();
  pwr_tTime mtime = pwr_cNTime;
  pwr_tTime t;
  pwr_tStatus sts;
  for ( wb_mvrep *mvrep = merep->volume( &sts);
	ODD(sts);
	mvrep = merep->nextVolume( &sts, mvrep->vid())) {
    if ( m_session.vid() == mvrep->vid())
      continue;
    // Check only system class and manufact class volumes
    if ( mvrep->vid() > cdh_cSystemClassVolMax &&
	 (mvrep->vid() < cdh_cManufactClassVolMin ||
	  mvrep->vid() > cdh_cManufactClassVolMax))
      continue;

    mvrep->time( &t);
    if ( time_Acomp( &t, &mtime) == 1)
      mtime = t;
  }


  // Create new loadfile
  if ( opt.force || EVEN(fsts) || wbl_time.tv_sec > dbs_time.tv_sec ||
       mtime.tv_sec > dbs_time.tv_sec) {
    sprintf( cmd, "create snapshot/file=\"$pwrp_db/%s.wb_load\"", name);
    m_sts = m_wnav->command( cmd);
    sumsts = m_sts;
  }
  else
    m_sts = sumsts;

  // Get time for struct file
  sprintf( fname, "$pwrp_inc/pwr_%sclasses.h", name);
  dcli_translate_filename( fname, fname);
  fsts = dcli_file_time( fname, &h_time);

  // Create new struct file
  if ( opt.force || EVEN(fsts) || wbl_time.tv_sec > h_time.tv_sec) {
    sprintf( cmd, "create struct/file=\"$pwrp_db/%s.wb_load\"", name);
    m_sts = m_wnav->command( cmd);
    sumsts = m_sts;
  }
  else
    m_sts = sumsts;

  if ( sumsts != PWRB__NOBUILT) {
    char msg[80];

    sprintf( msg, "Build:    Volume   %s", name);
    MsgWindow::message('I', msg, msgw_ePop_No);
  }
}
예제 #29
0
int CnvWblToHtml::init( char *first)
{
  pwr_tFileName fname;
  pwr_tFileName gname;
  char allclasses_name[80];
  char timestr[80];

  time_AtoAscii( 0, time_eFormat_DateAndTime, timestr, sizeof(timestr));
  strcpy( html_first, ctx->rw->volume_name);
  strcat( html_first, "_");
  strcat( html_first, first);
  cdh_ToLower( html_first, html_first);

  strcpy( allclasses_name, ctx->rw->volume_name);
  strcat( allclasses_name, "_allclasses.html");
  cdh_ToLower( allclasses_name, allclasses_name);

  // Create index file
  {
    strcpy( fname, ctx->dir);
    strcat( fname, ctx->rw->volume_name);
    strcat( fname, "_index.html");
    cdh_ToLower( fname, fname);

    ofstream fp( fname);

    // Get group menu name
    if ( ctx->setup->group_cnt) {
      strcpy( gname, CnvCtx::low(ctx->rw->volume_name));
      strcat( gname, "_menu_group.html");
      cdh_ToLower( fname, fname);
    }

    fp <<
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"\"http://www.w3.org/TR/REC-html40/loose.dtd>" << endl <<
"<!-- Generated by co_convert " << timestr << "  -->" << endl <<
"<HTML>" << endl <<
"<HEAD>" << endl <<
"<META http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">" << endl <<
"<TITLE>" << endl <<
"Class Menu" << endl <<
"</TITLE>" << endl <<
"<link rel=\"stylesheet\" type=\"text/css\" href=\"orm.css\">" << endl <<
"</HEAD>" << endl <<
"<FRAMESET cols=\"20%,80%\">" << endl;
    if ( ctx->setup->group_cnt)
      fp <<
"<FRAMESET rows=\"20%,80%\">" << endl <<
"<FRAME src=\"" << gname << "\" name=\"groupFrame\">" << endl <<
"<FRAME src=\"" << allclasses_name << "\" name=\"menuFrame\">" << endl <<
"</FRAMESET>" << endl;
    else
      fp <<
"<FRAME src=\"" << allclasses_name << "\" name=\"menuFrame\">" << endl;
      
    fp <<
"<FRAME src=\"" << html_first << ".html\" name=\"classFrame\">" << endl <<
"</FRAMESET>" << endl <<
"<NOFRAMES>" << endl <<
"<H2>" << endl <<
"Frame Alert</H2>" << endl <<

"<P>" << endl <<
"This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client." << endl <<
"<BR>" << endl <<
"Link to <A HREF=\"" << html_first << ".html\">Non-frame version.</A></NOFRAMES>" << endl <<
"</HTML>" << endl;
  }


  // Create js index file
  strcpy( fname, ctx->dir);
  strcat( fname, ctx->rw->volume_name);
  strcat( fname, "_allclasses.jsf");
  cdh_ToLower( fname, fname);

  fp_js_all.open( fname);
  js_all_first = true;
  fp_js_all <<
"function " << ctx->rw->volume_name << "_AllClasses( parent)" << endl <<
"{" << endl << 
"parent.addChildren([" << endl;

  // Create group menu file 
  if ( ctx->setup->group_cnt) {
    strcpy( fname, ctx->dir);
    strcat( fname, gname);
    cdh_ToLower( fname, fname);

    ofstream fp( fname);


    fp <<
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Frameset//EN\"\"http://www.w3.org/TR/REC-html40/frameset.dtd\">" << endl <<
"<!-- Generated by co_convert " << timestr << "  -->" << endl <<
"<HTML>" << endl <<
"<HEAD>" << endl <<
"<META http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">" << endl <<
"<TITLE>" << endl <<
"Groups" << endl <<
"</TITLE>" << endl <<
"<link rel=\"stylesheet\" type=\"text/css\" href=\"orm.css\">" << endl <<
"</HEAD>" << endl <<
"<BODY BGCOLOR=\"white\">" << endl <<
"<FONT size=\"+1\" CLASS=\"FrameHeadingFont\">" << endl <<
"<B>Groups</B></FONT>" << endl <<
"<BR>" << endl <<
"" << endl <<
"<TABLE BORDER=\"0\" WIDTH=\"100%\">" << endl <<
"<TR>" << endl <<
"<TD NOWRAP><FONT CLASS=\"FrameItemFont\">  " << endl;

    // Put index filename in fname
    strcpy( fname, ctx->rw->volume_name);
    strcat( fname, "_index.html");
    cdh_ToLower( fname, fname);

    fp <<
"<A HREF=\"" << fname << "\" TARGET=\"_parent\">AllClasses</A>" << endl <<
"<BR>" << endl;
  
    for ( int i = 0; i < ctx->setup->group_cnt; i++) {
      // Put group index filename in fname
      strcpy( fname, ctx->rw->volume_name);
      strcat( fname, "_group_");
      strcat( fname, ctx->setup->groups[i]);
      strcat( fname, "_index.html");
      cdh_ToLower( fname, fname);

      fp <<
"<A HREF=\"" << fname << "\" TARGET=\"_parent\">" << ctx->setup->groups[i] << "</A>" << endl <<
"<BR>" << endl;
    }

    fp <<
"</FONT></TD>" << endl <<
"</TR>" << endl <<
"</TABLE>" << endl <<
"" << endl <<
"</BODY>" << endl <<
"</HTML>" << endl;

  }

  // Open allclasses file
  strcpy( fname, ctx->dir);
  strcat( fname, allclasses_name);
  cdh_ToLower( fname, fname);
  fp_html_index.open( fname);


  html_index_open = 1;

  fp_html_index <<
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Frameset//EN\"\"http://www.w3.org/TR/REC-html40/frameset.dtd\">" << endl <<
"<!-- Generated by co_convert " << timestr << "  -->" << endl <<
"<HTML>" << endl <<
"<HEAD>" << endl <<
"<META http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">" << endl <<
"<TITLE>" << endl <<
"All Classes" << endl <<
"</TITLE>" << endl <<
"<link rel=\"stylesheet\" type=\"text/css\" href=\"orm.css\">" << endl <<
"</HEAD>" << endl <<
"<BODY BGCOLOR=\"white\">" << endl <<
"<FONT size=\"+1\" CLASS=\"FrameHeadingFont\">" << endl <<
"<B>All Classes</B></FONT>" << endl <<
"<BR>" << endl <<
"" << endl <<
"<TABLE BORDER=\"0\" WIDTH=\"100%\">" << endl <<
"<TR>" << endl <<
"<TD NOWRAP><FONT CLASS=\"FrameItemFont\">  " << endl;

  // Open one index file for each configured group
  for ( int i = 0; i < ctx->setup->group_cnt; i++) {

    // Create index page for each group
    strcpy( fname, ctx->dir);
    strcat( fname, ctx->rw->volume_name);
    strcat( fname, "_group_");
    strcat( fname, ctx->setup->groups[i]);
    strcat( fname, "_index.html");
    cdh_ToLower( fname, fname);
    {
      ofstream fp( fname);

      // Put menu filename in fname
      strcpy( fname, ctx->rw->volume_name);
      strcat( fname, "_group_");
      strcat( fname, ctx->setup->groups[i]);
      strcat( fname, ".html");
      cdh_ToLower( fname, fname);

      fp <<
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"\"http://www.w3.org/TR/REC-html40/loose.dtd>" << endl <<
"<!-- Generated by co_convert " << timestr << "  -->" << endl <<
"<HTML>" << endl <<
"<HEAD>" << endl <<
"<META http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">" << endl <<
"<TITLE>" << endl <<
"Group Menu" << endl <<
"</TITLE>" << endl <<
"<link rel=\"stylesheet\" type=\"text/css\" href=\"orm.css\">" << endl <<
"</HEAD>" << endl <<
"<FRAMESET cols=\"20%,80%\">" << endl <<
"<FRAMESET rows=\"20%,80%\">" << endl <<
"<FRAME src=\"" << gname << "\" name=\"groupFrame\">" << endl <<
"<FRAME src=\"" << fname << "\" name=\"menuFrame\">" << endl <<
"</FRAMESET>" << endl;
      if ( strcmp( ctx->setup->groups_startpage[i], "") == 0)
	fp <<
"<FRAME name=\"classFrame\">" << endl;
      else
	fp <<
"<FRAME src=\"" << ctx->setup->groups_startpage[i] << "\" name=\"classFrame\">" << endl;

      fp <<
"</FRAMESET>" << endl <<
"<NOFRAMES>" << endl <<
"<H2>" << endl <<
"Frame Alert</H2>" << endl <<

"<P>" << endl <<
"This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client." << endl <<
"<BR>" << endl <<
"Link to <A HREF=\"" << html_first << ".html\">Non-frame version.</A></NOFRAMES>" << endl <<
"</HTML>" << endl;

    }

    // Create menu page
    strcpy( fname, ctx->dir);
    strcat( fname, ctx->rw->volume_name);
    strcat( fname, "_group_");
    strcat( fname, ctx->setup->groups[i]);
    strcat( fname, ".html");
    cdh_ToLower( fname, fname);
    fp_html_group[i].open( fname);

    strcpy( fname, ctx->dir);
    strcat( fname, ctx->rw->volume_name);
    strcat( fname, "_group_");
    strcat( fname, ctx->setup->groups[i]);
    strcat( fname, ".jsf");
    cdh_ToLower( fname, fname);
    fp_js_group[i].open( fname);

    fp_html_group[i] <<
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Frameset//EN\"\"http://www.w3.org/TR/REC-html40/frameset.dtd\">" << endl <<
"<!-- Generated by co_convert " << timestr << "  -->" << endl <<
"<HTML>" << endl <<
"<HEAD>" << endl <<
"<META http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">" << endl <<
"<TITLE>" << endl <<
ctx->setup->groups[i] << endl <<
"</TITLE>" << endl <<
"<link rel=\"stylesheet\" type=\"text/css\" href=\"orm.css\">" << endl <<
"</HEAD>" << endl <<
"<BODY BGCOLOR=\"white\">" << endl <<
"<FONT size=\"+1\" CLASS=\"FrameHeadingFont\">" << endl <<
"<B>" << ctx->setup->groups[i] << "</B></FONT>" << endl <<
"<BR>" << endl <<
"" << endl <<
"<TABLE BORDER=\"0\" WIDTH=\"100%\">" << endl <<
"<TR>" << endl <<
"<TD NOWRAP><FONT CLASS=\"FrameItemFont\">  " << endl;


    js_group_first[i] = true;
    fp_js_group[i] <<
      "function " << ctx->rw->volume_name << "_" << ctx->setup->groups[i] << "(parent)" << endl <<
      "{" << endl <<
      "parent.addChildren([" << endl;

  }

  // Create js map for volume
  {
    strcpy( fname, ctx->dir);
    strcat( fname, ctx->rw->volume_name);
    strcat( fname, "_groups.jsf");
    cdh_ToLower( fname, fname);
    ofstream fp( fname);
 
   fp <<
"function " << ctx->rw->volume_name << "(parent)" << endl <<
"{" << endl <<
"  aux = insFld(parent, gFld(\"AllClasses\",\"" << ctx->rw->volume_name << "_index.html\"))" << endl <<
"  " << ctx->rw->volume_name << "_AllClasses(aux)" << endl;

    for ( int i = 0; i < ctx->setup->group_cnt; i++) {
      strcpy( fname, ctx->rw->volume_name);
      strcat( fname, "_group_");
      strcat( fname, ctx->setup->groups[i]);
      strcat( fname, "_index.html");
      cdh_ToLower( fname, fname);

      fp <<
"  aux = insFld(parent, gFld(\"" << ctx->setup->groups[i] << "\",\"" << fname << "\"))" << endl <<
"  " << ctx->rw->volume_name << "_" << ctx->setup->groups[i] << "(aux)" << endl;
    }
    fp << 
"}" << endl;
  }
    
  return 1;
}
예제 #30
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;

  }
}