Пример #1
0
static void get_display( char *disp)
{
  char display[80] = "";
  char name[80];
  pwr_tStatus sts;

  char *val = getenv("DISPLAY");
  if ( val)
    strcpy( display, val);

  if ( strcmp( display, "") == 0) {
    syi_NodeName( &sts, name, sizeof(name));
    strcpy( display, name);
    strcat( display, ":0");
  }
  else if ( display[0] == ':') {
    char tmp[80];

    syi_NodeName( &sts, name, sizeof(name));
    strcpy( tmp, display);
    strcpy( display, name);
    strcat( display, tmp);
  }
  else if ( display[0] == '0' && display[1] == ':') {
    char tmp[80];

    syi_NodeName( &sts, name, sizeof(name));
    strcpy( tmp, display);
    strcpy( display, name);
    strcat( display, &tmp[1]);
  }
  strcpy( disp, display);
}
Пример #2
0
rt_post::rt_post() : scan_time(1), conf(0), udb(0), sent_sms_startidx(0), sent_sms_endidx(0), 
		     sent_email_startidx(0), sent_email_endidx(0)
{ 
  pwr_tStatus sts;

  strcpy( systemgroup, ""); 
  syi_NodeName( &sts, nodename, sizeof(nodename));
}
Пример #3
0
char *
syi_HostName (
  pwr_tStatus *status,
  char *ibuffer,
  int isize
)
{

  return syi_NodeName(status, ibuffer, isize);
}
Пример #4
0
void RtMon::activate_stop()
{
  char nodename[40];
  char text[80] = "Do you want to stop Runtime Environment on ";
  pwr_tStatus sts;

  syi_NodeName( &sts, nodename, sizeof(nodename));
  strcat( text, nodename);

  wow->DisplayQuestion( this, "Stop Runtime", text, stop_ok_cb, 0, 0);
}
Пример #5
0
char *wb_dbms_env::host(void)
{
    char nodename[80];
    pwr_tStatus sts;
    static char host[80];

    syi_NodeName( &sts, nodename, sizeof(nodename));
    if ( ODD(sts) && cdh_NoCaseStrcmp( nodename, m_host) == 0)
        strcpy( host, "localhost");
    else
        strcpy( host, m_host);

    return host;
}
Пример #6
0
int XttTbl::read_bootfile( char *systemname, char *systemgroup)
{
  pwr_tFileName fname;
  char nodename[80];
  int busid;
  FILE *fp;
  char buffer[256];
  pwr_tStatus sts;
  char *s;

  syi_NodeName(&sts, nodename, sizeof(nodename));
  s = getenv(pwr_dEnvBusId);
  if ( !s)
    return 0;
  
  busid = atoi(s);

  sprintf(fname, dbs_cNameBoot, "$pwrp_load/", nodename, busid);
  dcli_translate_filename( fname, fname);

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

  s = fgets( buffer, sizeof(buffer) - 1, fp);
  if ( !s) return 0;

  s = fgets( buffer, sizeof(buffer) - 1, fp);
  if ( !s) return 0;
  
  if ( systemname) {
    if ( buffer[strlen(buffer)-1] == '\n')
      buffer[strlen(buffer)-1] = 0;
    strcpy( systemname, buffer);
  }
  s = fgets( buffer, sizeof(buffer) - 1, fp);
  if ( !s) return 0;

  if ( systemgroup) {
    if ( buffer[strlen(buffer)-1] == '\n')
      buffer[strlen(buffer)-1] = 0;
    strcpy( systemgroup, buffer);
  }

  fclose(fp);
  return 1;
}
Пример #7
0
RtMon::RtMon( void *rtmon_parent_ctx,
	      const char *rtmon_name,
	      const char *rtmon_display,
	      pwr_tStatus *status) :
  parent_ctx(rtmon_parent_ctx),
  nodelistnav(NULL), rtmon_displayed(0), help_cb(0), close_cb(0)
{
  pwr_tStatus sts;

  if ( rtmon_display)
    strcpy( display, rtmon_display);
  else
    strcpy( display, "");
  syi_NodeName( &sts, nodename, sizeof(nodename));  

  *status = 1;
}
Пример #8
0
void CLogNav::get_files()
{
  char nodename[40];
  pwr_tStatus sts;
  char file_spec[200];
  char found_file[200];
  pwr_tTime time = {0,0};
  struct stat info;

  syi_NodeName( &sts, nodename, sizeof(nodename));

  sprintf( file_spec, "$pwrp_log/pwr_%s.log", nodename);
  sts = dcli_search_file( file_spec, found_file, DCLI_DIR_SEARCH_INIT);
  if ( ODD(sts)) {
    stat( found_file, &info);
    time.tv_sec = info.st_ctime;

    CLogFile *cf = new CLogFile( found_file, time);
    file_list.push_back( *cf);
    delete cf;
  }
  else {
    CLogFile *cf = new CLogFile();
    file_list.push_back( *cf);
    delete cf;
  }
  dcli_search_file( file_spec, found_file, DCLI_DIR_SEARCH_END);

  for ( int i = 1; i < 21; i++) {
    sprintf( file_spec, "$pwrp_log/pwr_%s.log.%d.gz", nodename, i);
    sts = dcli_search_file( file_spec, found_file, DCLI_DIR_SEARCH_INIT);
    if ( ODD(sts)) {

      stat( found_file, &info);
      time.tv_sec = info.st_ctime;

      CLogFile *cf = new CLogFile( found_file, time);
      file_list.push_back( *cf);
      delete cf;

    }
    dcli_search_file( file_spec, found_file, DCLI_DIR_SEARCH_END);
  }

}
Пример #9
0
int sev_db::get_systemname(char* name)
{
  FILE* file;
  pwr_tFileName fname;
  char nodename[40];
  char* bus_str;
  int bus;
  char line[200];
  pwr_tStatus sts;
  static char system_name[80] = "";

  if (streq(system_name, "")) {
    syi_NodeName(&sts, nodename, sizeof(nodename));
    if (EVEN(sts))
      return 0;

    bus_str = getenv("PWR_BUS_ID");
    if (!bus_str)
      return 0;
    if (sscanf(bus_str, "%d", &bus) != 1)
      return 0;

    sprintf(fname, pwr_cNameBoot, load_cDirectory, cdh_Low(nodename), bus);
    dcli_translate_filename(fname, fname);
    file = fopen(fname, "r");
    if (file == 0) {
      printf("In %s row %d:\n", __FILE__, __LINE__);
      printf("** Warning, systemname not found\n");
      return 0;
    }

    if (!dcli_read_line(line, sizeof(line), file))
      return 0;
    if (!dcli_read_line(line, sizeof(line), file))
      return 0;

    strcpy(system_name, line);
  }
  strcpy(name, system_name);
  return 1;
}
Пример #10
0
char *ini_LoadDirectory (
  pwr_tStatus	*status,
  ini_sContext *cp
)
{
  pwr_dStatus(sts, status, INI__SUCCESS);

  if (!cp->flags.b.nodename)
    syi_NodeName(sts, cp->nodename, sizeof(cp->nodename));
  if (!cp->flags.b.hostname)
    syi_HostName(sts, cp->hostname, sizeof(cp->hostname));

  syi_NodeSpec(sts, cp->nodespec, sizeof(cp->nodespec));
  syi_HostSpec(sts, cp->hostspec, sizeof(cp->hostspec));
  syi_BootDisk(sts, cp->bootdisk, sizeof(cp->bootdisk));

  {
    char *s;

    if ((s = getenv(dbs_cNameBaseDirectory)) != NULL)
      sprintf(cp->bdir, "%s/", s);
    else
      errh_LogError(&cp->log, "Environment variable '%s' is not defined", dbs_cNameBaseDirectory);

    if ((s = getenv(dbs_cNameDirectory)) != NULL)
      sprintf(cp->dir, "%s/", s);
    else
      errh_LogError(&cp->log, "Environment variable '%s' is not defined", dbs_cNameDirectory);

    if (!cp->flags.b.busid) {
      s = getenv(pwr_dEnvBusId);
      if (s != NULL)

	cp->busid = atoi(s);
    }
  }

  return cp->dir;
}
Пример #11
0
int Op::sup_init()
{
  pwr_tOid node_oid;
  pwr_tOid sup_oid;
  pwr_tAName aname;
  pwr_tStatus sts;
  

  // Index 0 is current node
  sts = gdh_GetNodeObject( 0, &node_oid);
  if ( EVEN(sts)) return sts;

  OpSup sup;
  sup.node_oid = node_oid;
  sts = gdh_ObjidToName( node_oid, sup.object_name, sizeof(sup.object_name), cdh_mName_volumeStrict);
  if ( EVEN(sts)) return sts;

  strcpy( aname, sup.object_name);
  strcat( aname, ".SystemStatus");
  sts = gdh_RefObjectInfo( aname, (void **)&sup.p, &sup.refid, sizeof(pwr_tStatus));
  if ( EVEN(sts)) return sts;

  syi_NodeName( &sts, sup.node_name, sizeof(sup.node_name));

  sup_vect.push_back(sup);			 

  // Add nodes in NodeLinkSup objects
  for ( sts = gdh_GetClassList( pwr_cClass_NodeLinkSup, &sup_oid);
	ODD(sts);
	sts = gdh_GetNextObject( sup_oid, &sup_oid)) {
    pwr_sClass_NodeLinkSup *sup_p;
    qcom_sNode 		qnode;
    pwr_tNid		nid;

    sts = gdh_ObjidToPointer( sup_oid, (void **)&sup_p);

    OpSup nsup;

    nsup.node_oid = sup_p->Node;

    sts = gdh_ObjidToName( nsup.node_oid, nsup.object_name, sizeof(nsup.object_name), 
			   cdh_mName_volumeStrict);
    if ( EVEN(sts)) strcpy( nsup.object_name, "");
    
    sts = gdh_ObjidToName( sup_oid, aname, sizeof(aname), cdh_mName_volumeStrict);
    if ( EVEN(sts)) return sts;
    
    strcat( aname, ".SystemStatus");
    sts = gdh_RefObjectInfo( aname, (void **)&nsup.p, &sup.refid, sizeof(pwr_tStatus));
    if ( EVEN(sts)) return sts;

    int found = 0;
    for (nid = qcom_cNNid; qcom_NextNode(&sts, &qnode, nid); nid = qnode.nid) {
      if ( qnode.nid == nsup.node_oid.vid) {
	strcpy( nsup.node_name, qnode.name);
	found = 1;
	break;
      }
    }
    if ( !found)
      strcpy( nsup.node_name, "Unknown");

    sup_vect.push_back(nsup);			 
  }
  return 1;
}
Пример #12
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;
}
Пример #13
0
XttMotif::XttMotif( int argc, char *argv[], int *return_sts) :
  Xtt( &argc, &argv, return_sts),
  cmd_current_recall(0), value_current_recall(0) 
{
  char		uid_filename[120] = {"xtt.uid"};
  char		*uid_filename_p = uid_filename;
  Arg 		args[20];
  pwr_tStatus	sts;
  int		i;
  XtAppContext  app_ctx;
  MrmHierarchy s_DRMh;
  MrmType dclass;
  Widget	xtt_widget;
  char		title[120] = "Xtt ";
  char		nodename[80];

  static char translations[] =
    "<FocusIn>: xtt_inputfocus()\n";
  static XtTranslations compiled_translations = NULL;

  static XtActionsRec actions[] =
  {
    {(char*) "xtt_inputfocus",      (XtActionProc) action_inputfocus}
  };

  static MrmRegisterArg	reglist[] = {
        {(char*) "xtt_ctx", 0 },
	{(char*) "xtt_activate_exit",(caddr_t)activate_exit },
	{(char*) "xtt_activate_print",(caddr_t)activate_print },
	{(char*) "xtt_activate_find",(caddr_t)activate_find },
	{(char*) "xtt_activate_findregex",(caddr_t)activate_findregex },
	{(char*) "xtt_activate_findnext",(caddr_t)activate_findnext },
	{(char*) "xtt_activate_collapse",(caddr_t)activate_collapse },
	{(char*) "xtt_activate_openobject",(caddr_t)activate_openobject },
	{(char*) "xtt_activate_openplc",(caddr_t)activate_openplc },
	{(char*) "xtt_activate_opengraph",(caddr_t)activate_opengraph },
	{(char*) "xtt_activate_showcrossref",(caddr_t)activate_showcrossref },
	{(char*) "xtt_activate_change_value",(caddr_t)activate_change_value },
	{(char*) "xtt_activate_command",(caddr_t)activate_command },
	{(char*) "xtt_activate_collect_insert",(caddr_t)activate_collect_insert },
	{(char*) "xtt_activate_collect_show",(caddr_t)activate_collect_show },
	{(char*) "xtt_activate_collect_remove",(caddr_t)activate_collect_remove },
	{(char*) "xtt_activate_collect_clear",(caddr_t)activate_collect_clear },
	{(char*) "xtt_activate_advanceduser",(caddr_t)activate_advanceduser },
	{(char*) "xtt_activate_zoom_in",(caddr_t)activate_zoom_in },
	{(char*) "xtt_activate_zoom_out",(caddr_t)activate_zoom_out },
	{(char*) "xtt_activate_zoom_reset",(caddr_t)activate_zoom_reset },
	{(char*) "xtt_activate_help",(caddr_t)activate_help },
	{(char*) "xtt_activate_help_project",(caddr_t)activate_help_project },
	{(char*) "xtt_activate_help_proview",(caddr_t)activate_help_proview },
	{(char*) "xtt_create_msg_label",(caddr_t)create_msg_label },
	{(char*) "xtt_create_cmd_prompt",(caddr_t)create_cmd_prompt },
	{(char*) "xtt_create_cmd_input",(caddr_t)create_cmd_input },
	{(char*) "xtt_create_xnav_form",(caddr_t)create_xnav_form },
	{(char*) "xtt_activate_india_ok",(caddr_t)activate_india_ok },
	{(char*) "xtt_activate_india_cancel",(caddr_t)activate_india_cancel },
	{(char*) "xtt_create_india_label",(caddr_t)create_india_label },
	{(char*) "xtt_create_india_text",(caddr_t)create_india_text }
	};

  static int	reglist_num = (sizeof reglist / sizeof reglist[0]);

  syi_NodeName( &sts, nodename, sizeof(nodename));
  if ( ODD(sts))
    strcat( title, nodename);

  // Motif
  Lng::get_uid( uid_filename, uid_filename);
  MrmInitialize();

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

  reglist[0].value = (caddr_t) this;

  if (compiled_translations == NULL) 
    XtAppAddActions( XtWidgetToApplicationContext(toplevel), 
						actions, XtNumber(actions));
 
  // Save the context structure in the widget
  i = 0;
  XtSetArg( args[i], XmNuserData, (XtPointer) this);i++;

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

  MrmRegisterNames(reglist, reglist_num);

  sts = MrmFetchWidgetOverride( s_DRMh, (char*) "xtt_window", toplevel,
			title, args, i, &xtt_widget, &dclass);
  if (sts != MrmSUCCESS)  printf("can't fetch xtt_window\n");

  sts = MrmFetchWidget(s_DRMh, (char*) "input_dialog", toplevel,
  		&india_widget, &dclass);
  if (sts != MrmSUCCESS)  printf("can't fetch input dialog\n");

  MrmCloseHierarchy(s_DRMh);


  if (compiled_translations == NULL) 
    compiled_translations = XtParseTranslationTable(translations);
  XtOverrideTranslations( xtt_widget, compiled_translations);

  i = 0;
  XtSetArg(args[i],XmNwidth,350);i++;
  XtSetArg(args[i],XmNheight,600);i++;
  XtSetArg(args[i], XmNdeleteResponse, XmDO_NOTHING);i++;
  XtSetValues( toplevel ,args,i);
    
  XtManageChild( xtt_widget);
  XtUnmanageChild( cmd_input);

  xnav = new XNavMotif( this, xnav_form, "Plant",
		&brow_widget, (xnav_sStartMenu *)root_menu, 
		opplace_str, op_close_button, &sts);
  xnav->message_cb = &xtt_message_cb;
  xnav->close_cb = &close;
  xnav->map_cb = &map;
  xnav->change_value_cb = &change_value;
  xnav->set_dimension_cb = &set_dimension;
  xnav->attach_audio = attach_audio;

  // Create help window
  CoXHelp *xhelp = new CoXHelpMotif( toplevel, this, xhelp_eUtility_Xtt, &sts);
  xhelp->open_URL_cb = open_URL_cb;
  CoXHelp::set_default( xhelp);

  XtRealizeWidget( toplevel);

  if ( !xnav->is_authorized( pwr_mAccess_AllRt, 0))
    xnav->open_login();

  wow = new CoWowMotif( toplevel);
  if ( !quiet)
    wow->DisplayWarranty();

//  XmProcessTraversal( xnav->brow_widget, XmTRAVERSE_CURRENT);
//  xnav->set_inputfocus();

  init_hotkey( app_ctx, toplevel);

  // Connect the window manager close-button to exit
  flow_AddCloseVMProtocolCb( toplevel, 
	(XtCallbackProc)activate_exit, this);

  if ( xnav->op)
    close( this, 0);

  timerid = wow->timer_new();

  // Start timer to check for qcom events
  timerid->add( 1000, qcom_events, this);

  xtt_mainloop( app_ctx);  
}