// // Syntax check method // static pwr_tStatus SyntaxCheck ( ldh_tSesContext Session, pwr_tAttrRef Object, /* current object */ int *ErrorCount, /* accumulated error count */ int *WarningCount /* accumulated waring count */ ) { wb_session *sp = (wb_session *)Session; pwr_tString80 str; wb_object o = sp->object( Object.Objid); wb_object p = o.parent(); if ( !p || !(p.cid() == pwr_cClass_BusConfig || p.cid() == pwr_cClass_NodeConfig || p.cid() == pwr_cClass_SevNodeConfig)) wsx_error_msg_str( Session, "Bad parent", Object, 'E', ErrorCount, WarningCount); if ( Object.Objid.vid != ldh_cDirectoryVolume) wsx_error_msg_str( Session, "Not a DirectoryVolume", Object, 'E', ErrorCount, WarningCount); // Check NodeName wb_attribute a = sp->attribute( Object.Objid, "RtBody", "NodeName"); if (!a) return a.sts(); a.value( &str); if ( !a) return a.sts(); dcli_trim( str, str); if ( strcmp( str, "") == 0) wsx_error_msg_str( Session, "NodeName is missing", Object, 'E', ErrorCount, WarningCount); // Check Address a = sp->attribute( Object.Objid, "RtBody", "Address"); if (!a) return a.sts(); a.value( &str); if ( !a) return a.sts(); unsigned char adr1, adr2, adr3, adr4; int num; num = sscanf( str, "%hhu.%hhu.%hhu.%hhu", &adr1, &adr2, &adr3, &adr4); if ( num != 4) wsx_error_msg_str( Session, "Syntax error in Address", Object, 'E', ErrorCount, WarningCount); else if ( adr1 == 0 && adr2 == 0 && adr3 == 0 && adr4 == 0) wsx_error_msg_str( Session, "Address is zero", Object, 'E', ErrorCount, WarningCount); // Check Volume a = sp->attribute( Object.Objid, "RtBody", "Volume"); if (!a) return a.sts(); a.value( &str); if ( !a) return a.sts(); dcli_trim( str, str); if ( strcmp( str, "") == 0) wsx_error_msg_str( Session, "Volume is missing", Object, 'E', ErrorCount, WarningCount); return PWRB__SUCCESS; }
void rt_post::replace_symbol( char *outstr, char *instr) { char *s, *t, *u; int symbolmode = 0; char symbol[80]; char csymbol[80]; int size; int found; s = instr; t = outstr; while ( 1) { if ( symbolmode) { if ( *s == ',' || *s == ' ' || *s == ' ' || *s == 0) { // End of symbol size = (long int) s - (long int)(u+1); strncpy( symbol, u + 1, size); symbol[size] = 0; // Find the symbol found = 0; for ( unsigned int j = 0; j < sizeof(conf->Symbols)/sizeof(conf->Symbols[0]); j++) { dcli_trim( csymbol, conf->Symbols[j].Name); if ( strcmp( symbol, csymbol) == 0) { // Found, insert the value strcpy( t, conf->Symbols[j].Value); t += strlen( conf->Symbols[j].Value); found = 1; break; } } if ( !found) { // Not found strcpy( t, "$"); t++; strcat( t, symbol); t += strlen(symbol); } symbolmode = 0; *t = *s; t++; } } else { if ( *s == '$') { symbolmode = 1; u = s; } else { *t = *s; t++; } } if ( *s == 0) break; s++; } }
void Lng::read_include( ifstream& fp1, ifstream& fp2, bool global, pwr_tStatus *sts) { char line1[200]; char line2[200]; streampos pos1; pwr_tFileName fname1, fname2; for(;;) { pos1 = fp1.tellg(); for (;;) { if ( !fp1.getline( line1, sizeof( line1))) { *sts = LNG__EOF; return; } if ( line1[0] != '#') break; } if ( strncmp( line1, "Include:", 8) == 0) { for (;;) { if ( !fp2.getline( line2, sizeof( line2))) { *sts = LNG__EOF; return; } if ( line2[0] != '#') break; } if ( strncmp( line2, "Include:", 8) != 0) { *sts = LNG__INCLUDEMISMATCH; return; } dcli_trim( fname1, &line1[8]); dcli_trim( fname2, &line2[8]); if ( !read_files( fname1, fname2, global, sts)) return; } else { fp1.seekg( pos1); break; } } *sts = LNG__SUCCESS; }
static pwr_tStatus SyntaxCheck ( ldh_tSesContext Session, pwr_tAttrRef Object, /* current object */ int *ErrorCount, /* accumulated error count */ int *WarningCount /* accumulated waring count */ ) { wb_session *sp = (wb_session *)Session; pwr_tString80 str; wb_object o = sp->object( Object.Objid); wb_object p = o.parent(); if ( !(!p || p.oid().oix == 0)) wsx_error_msg_str( Session, "Not on top level", Object, 'E', ErrorCount, WarningCount); if ( Object.Objid.vid != ldh_cDirectoryVolume) wsx_error_msg_str( Session, "Not a DirectoryVolume", Object, 'E', ErrorCount, WarningCount); // Check SystemName wb_attribute a = sp->attribute( Object.Objid, "SysBody", "SystemName"); if (!a) return a.sts(); a.value( &str); if ( !a) return a.sts(); dcli_trim( str, str); if ( strcmp( str, "") == 0) wsx_error_msg_str( Session, "SystemName is missing", Object, 'E', ErrorCount, WarningCount); // Check SystemGroup a = sp->attribute( Object.Objid, "SysBody", "SystemGroup"); if (!a) return a.sts(); a.value( &str); if ( !a) return a.sts(); dcli_trim( str, str); if ( strcmp( str, "") == 0) wsx_error_msg_str( Session, "SystemGroup is missing", Object, 'E', ErrorCount, WarningCount); return PWRB__SUCCESS; }
static void get_config( char *name, unsigned int *lk_max_locks, unsigned int *lk_max_objects) { pwr_tFileName fname; FILE *fp; char line[200]; char line_elem[2][100]; unsigned int max_locks; unsigned int max_objects; int nr; *lk_max_locks = 50000; *lk_max_objects = 20000; strcpy( fname, name); strcat( fname, ".cnf"); dcli_translate_filename( fname, fname); fp = fopen( fname, "r"); if ( !fp) return; while ( dcli_read_line( line, sizeof(line), fp)) { dcli_trim( line, line); if ( line[0] == '#') continue; if ( strcmp( line, "") == 0) continue; nr = dcli_parse( line, " ", "", (char *) line_elem, sizeof( line_elem)/sizeof( line_elem[0]), sizeof( line_elem[0]), 1); if ( nr != 2) continue; if ( cdh_NoCaseStrcmp( line_elem[0], "lk_max_locks") == 0) { nr = sscanf( line_elem[1], "%d", &max_locks); if ( nr == 1) { *lk_max_locks = max_locks; printf( "lk_max_locks.........%d\n", max_locks); } } else if ( cdh_NoCaseStrcmp( line_elem[0], "lk_max_objects") == 0) { nr = sscanf( line_elem[1], "%d", &max_objects); if ( nr == 1) { *lk_max_objects = max_objects; printf( "lk_max_objects.......%d\n", max_objects); } } } fclose( fp); }
static pwr_tStatus configure_attrmask( ldh_sMenuCall *ip, pwr_tAttrRef *parent, char *str1) { char vect[10][80]; int vect_cnt; char *s; char str2[80]; int i; pwr_tStatus sts; vect_cnt = 0; s = strchr( str1, '('); if ( s) { strncpy( str2, s+1, sizeof(str2)); if ( str2[strlen(str2)-1] != ')') return LDH__COMPSYNTAX; str2[strlen(str2)-1] = 0; // Get items int len; int parlevel = 0; char *start = str2; for ( s = str2; *s; s++) { if ( *s == '(') parlevel++; else if ( *s == ')') parlevel--; if ( parlevel == 0 && *s == ',') { len = s - start; strncpy( vect[vect_cnt], start, len); vect[vect_cnt][len] = 0; vect_cnt++; start = s+1; } } len = s - start; strncpy( vect[vect_cnt], start, len); vect[vect_cnt][len] = 0; vect_cnt++; } for ( i = 0; i < vect_cnt; i++) { dcli_trim( vect[i], vect[i]); sts = configure_parse_attr( ip, parent, vect[i]); if ( EVEN(sts)) return sts; } return LDH__SUCCESS; }
static int check_os( char *str, char *os) { char os_vect[10][20]; int nr; int i; char os_element[20]; nr = dcli_parse( str, "||", "", (char *)os_vect, sizeof( os_vect) / sizeof( os_vect[0]), sizeof( os_vect[0]), 0); for ( i = 0; i < nr; i++) { dcli_trim( os_element, os_vect[i]); if ( cdh_NoCaseStrcmp( os, os_element) == 0) return 1; } return 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; } }
void wb_pkg::readConfig() { char fname[200]; char line[200]; char line_item[7][80]; int num; int sts; dcli_translate_filename( fname, load_cNameDistribute); ifstream is( fname); while ( is.getline( line, sizeof(line))) { dcli_trim( line, line); if ( line[0] == '#' || line[0] == '!') continue; num = dcli_parse( line, " ", "", (char *)line_item, sizeof(line_item)/sizeof(line_item[0]), sizeof(line_item[0]), 0); if ( !num) continue; if ( strcmp( cdh_Low(line_item[0]), "node") == 0) { pwr_mOpSys opsys; int bus; pwr_tMask dstatus; char bootnode[80]; pwr_tString80 custom_platform; if ( num != 7) throw wb_error_str("File corrupt " load_cNameDistribute); sts = sscanf( line_item[2], "%d", (int *)&opsys); if ( sts != 1) throw wb_error_str("File corrupt " load_cNameDistribute); sts = sscanf( line_item[3], "%d", &bus); if ( sts != 1) throw wb_error_str("File corrupt " load_cNameDistribute); sts = sscanf( line_item[4], "%d", (int *)&dstatus); if ( sts != 1) throw wb_error_str("File corrupt " load_cNameDistribute); strcpy( bootnode, line_item[5]); strcpy( custom_platform, line_item[6]); if ( m_allnodes) { pkg_node node( line_item[1], opsys, bus, dstatus, bootnode, custom_platform); m_nodelist.push_back( node); } else { bool found = false; for ( int i = 0; i < (int) m_nodelist.size(); i++) { if ( strcmp( m_nodelist[i].name(), cdh_Low(line_item[1])) == 0) { found = true; m_nodelist[i].setOpsys( opsys); m_nodelist[i].setBus( bus); m_nodelist[i].setDStatus( dstatus); m_nodelist[i].setBootnode( bootnode); m_nodelist[i].setCustomPlatform( custom_platform); m_nodelist[i].setValid(); break; } } } } else if ( strcmp( cdh_Low(line_item[0]), "appl") == 0) { if ( !(num == 4 || num == 5)) throw wb_error_str("File corrupt " load_cNameDistribute); char severity = line_item[2][0]; try { pkg_node& n = getNode( line_item[1]); if ( num == 4) { pkg_pattern p( line_item[3], "", severity); n.push_back( p); } else { pkg_pattern p( line_item[3], line_item[4], severity); n.push_back( p); } } catch ( wb_error &e) { continue; } } else if ( strcmp( cdh_Low(line_item[0]), "load") == 0) { pwr_tVolumeId *vollist; pwr_tString40 *volnamelist; int volcount; pwr_tString80 *plclist; int plccount; char systemname[80]; char systemgroup[80]; pwr_tTime date; if ( !(num == 2)) throw wb_error_str("File corrupt " load_cNameDistribute); try { pkg_node &n = getNode( line_item[1]); // Add ld_node file sprintf( fname, load_cNameNode, load_cDirectory, n.name(), n.bus()); pkg_pattern pnode( fname, "", 'E'); n.push_back( pnode); // Add bootfile sprintf( fname, load_cNameBoot, load_cDirectory, n.name(), n.bus()); pkg_pattern pboot( fname, "", 'E'); n.push_back( pboot); // Read bootfile, get plc and volumes sts = lfu_ReadBootFile( fname, &date, systemname, systemgroup, &vollist, &volnamelist, &volcount, &plclist, &plccount); if ( EVEN(sts)) throw wb_error_str("Bootfile is corrupt"); // Add plc for ( int j = 0; j < plccount; j++) { pwr_tFileName dir; if ( n.opsys() == pwr_mOpSys_CustomBuild && strcmp( n.customPlatform(), "-") != 0) sprintf( dir, "$pwrp_root/bld/%s/exe/", n.customPlatform()); else sprintf( dir, "$pwrp_root/bld/%s/exe/", cdh_OpSysToStr( n.opsys())); sprintf( fname, "%s%s", dir, plclist[j]); sprintf( dir, "$pwrp_exe/"); pkg_pattern pplc( fname, dir, 'W'); n.push_back( pplc); } // Add volumes for ( int j = 0; j < volcount; j++) { char dir[80]; if ( (vollist[j] >= cdh_cManufactClassVolMin && vollist[j] <= cdh_cManufactClassVolMax) || (vollist[j] >= cdh_cSystemClassVolMin && vollist[j] <= cdh_cSystemClassVolMax)) { // Base volume, skip continue; } strcpy( dir, "$pwrp_load/"); sprintf( fname, "%s%s.dbs", dir, cdh_Low( (char *)(volnamelist + j))); n.checkVolume( fname); // Check if there are any rtt-files for Root or Sub Volumes if ( vollist[j] >= cdh_cUserVolMin && vollist[j] <= cdh_cUserVolMax) { cdh_uVolumeId vid; vid.pwr = vollist[j]; // RttCrr-file strcpy( dir, "$pwrp_load/"); sprintf( fname, "%s" load_cNameRttCrr, dir, vid.v.vid_3, vid.v.vid_2, vid.v.vid_1, vid.v.vid_0); pkg_pattern rttcrr( fname); n.push_back( rttcrr); // RttCrrObj-file strcpy( dir, "$pwrp_load/"); sprintf( fname, "%s" load_cNameRttCrrObj, dir, vid.v.vid_3, vid.v.vid_2, vid.v.vid_1, vid.v.vid_0); pkg_pattern rttcrrobj( fname); n.push_back( rttcrrobj); // RttCrrCode-file strcpy( dir, "$pwrp_load/"); sprintf( fname, "%s" load_cNameRttCrrCode, dir, vid.v.vid_3, vid.v.vid_2, vid.v.vid_1, vid.v.vid_0); pkg_pattern rttcrrcode( fname); n.push_back( rttcrrcode); // RttSignals strcpy( dir, "$pwrp_load/"); sprintf( fname, "%s" load_cNameRttSignals, dir, vid.v.vid_3, vid.v.vid_2, vid.v.vid_1, vid.v.vid_0); pkg_pattern rttsignals( fname); n.push_back( rttsignals); } } free( volnamelist); free( vollist); } catch ( wb_error &e) { if ( e.what() == string("No such node")) continue; throw wb_error_str(e.what()); } } else if ( strcmp( cdh_Low(line_item[0]), "boot") == 0) { // A Sev node, only node and bootfile try { if ( !(num == 2)) throw wb_error_str("File corrupt " load_cNameDistribute); pkg_node &n = getNode( line_item[1]); // Add ld_node file sprintf( fname, load_cNameNode, load_cDirectory, n.name(), n.bus()); pkg_pattern pnode( fname, "", 'E'); n.push_back( pnode); // Add bootfile sprintf( fname, load_cNameBoot, load_cDirectory, n.name(), n.bus()); pkg_pattern pboot( fname, "", 'E'); n.push_back( pboot); } catch ( wb_error &e) { if ( e.what() == string("No such node")) continue; throw wb_error_str(e.what()); } } } is.close(); // Check that all nodes are valid for ( int i = 0; i < (int) m_nodelist.size(); i++) { if ( !m_nodelist[i].valid()) throw wb_error_str( "Unknown node name"); } }
pwr_tStatus rt_post::mh_alarm_bc( mh_sMessage *MsgP) { ala_uEvent *event = (ala_uEvent *) MsgP; int sts; char str[256]; char user[80]; char group[80]; char *s; pwr_tTime etime, current; pwr_tDeltaTime diff; int rcvnum; char rcv_array[10][80]; char text[400]; if ( !post || post->conf->Disable) return 1; if ( !event->Info.EventFlags & pwr_mEventFlagsMask_Email || !event->Info.EventFlags & pwr_mEventFlagsMask_SMS) return 1; // Skip events older than 10 minutes etime = net_NetTimeToTime( &event->Info.EventTime); time_GetTime( ¤t); time_Adiff( &diff, ¤t, &etime); if ( time_DToFloat( 0, &diff) > 600) return 1; // Check if already handled if ( event->Info.EventFlags & pwr_mEventFlagsMask_Email) { if ( post->email_check( &event->Info.Id)) return 1; else post->email_register( &event->Info.Id); } if ( event->Info.EventFlags & pwr_mEventFlagsMask_SMS) { if ( post->sms_check( &event->Info.Id)) return 1; else post->sms_register( &event->Info.Id); } post->replace_symbol( str, event->Msg.Receiver); rcvnum = dcli_parse( str, ",", "", (char *) rcv_array, sizeof( rcv_array)/sizeof( rcv_array[0]), sizeof( rcv_array[0]), 0); for ( int i = 0; i < rcvnum; i++) { dcli_trim( str, rcv_array[i]); s = strrchr( str, '.'); if ( s) { *s = 0; strncpy( group, post->systemgroup, sizeof(group)); strncat( group, ".", sizeof(group)); strncat( group, str, sizeof(group)); strncpy( user, s+1, sizeof(user)); } else { strncpy( group, post->systemgroup, sizeof(group)); strncpy( user, str, sizeof(user)); } SystemName *sn = new SystemName( group); sts = sn->parse(); if ( EVEN(sts)) { delete sn; errh_Error( "Post systemgroup parse error, %m", sts); continue; } SystemList *sl = post->udb->find_system( sn); delete sn; if ( !sl) { errh_Error( "No such system group, %s", group); continue; } UserList *ul = (UserList *) sl->find_user( user); if ( !ul) { errh_Error( "No such user, %s", user); continue; } if ( event->Info.EventFlags & pwr_mEventFlagsMask_Email && strcmp( post->conf->EmailCmd, "") != 0) { char address[40]; pwr_tCmd cmd; ul->get_email( address, sizeof(address)); post->format_email_text( MsgP, text, sizeof(text)); post->format_cmd( cmd, post->conf->EmailCmd, address, text); if ( post->conf->Options & pwr_mPostOptionsMask_Log) errh_Info( "Email: %s", cmd); system( cmd); post->conf->SentEmail++; } if ( event->Info.EventFlags & pwr_mEventFlagsMask_SMS && strcmp( post->conf->SMS_Cmd, "") != 0) { char sms[40]; pwr_tCmd cmd; ul->get_sms( sms, sizeof(sms)); post->format_sms_text( MsgP, text, sizeof(text)); post->format_cmd( cmd, post->conf->SMS_Cmd, sms, text); if ( post->conf->Options & pwr_mPostOptionsMask_Log) errh_Info( "SMS: %s", cmd); system( cmd); post->conf->SentSMS++; } } return 1; }
void CLogNav::read( int *pos_list, int pos_cnt) { char line[400]; errh_eSeverity severity; pwr_tTime time; pwr_tTime ztime = {0,0}; char time_str[40]; char logger[40]; int pid; int sts; FILE *fp; char filename[200]; CLogMsg *msg; char tmpfile[200] = "/tmp/clog.tmp"; int found; msg_list.clear(); current_pos_low = file_list.size(); current_pos_high = 0; for ( int i = file_list.size() - 1; i >= 0; i--) { found = 0; for ( int j = 0; j < pos_cnt; j++) { if ( pos_list[j] -1 == i) { found = 1; break; } } if ( !found) continue; if ( i + 1 > current_pos_high) current_pos_high = i + 1; if ( i + 1 < current_pos_low) current_pos_low = i + 1; if ( i == 0) { strcpy( filename, file_list[0].name); if ( strcmp( filename, "") == 0) continue; } else { // Unzip the file char cmd[300]; sprintf( cmd, "zcat %s > %s", file_list[i].name, tmpfile); system( cmd); strcpy( filename, tmpfile); } fp = fopen( filename, "r"); if ( !fp) return; while( 1) { sts = dcli_read_line( line, sizeof(line), fp); if ( !sts) break; if ( line[1] == ' ' && line[27] == ' ' && (line[0] == 'S' || line[0] == 'I' || line[0] == 'W' || line[0] == 'E' || line[0] == 'F')) { switch ( line[0]) { case 'S': severity = errh_eSeverity_Success; break; case 'I': severity = errh_eSeverity_Info; break; case 'W': severity = errh_eSeverity_Warning; break; case 'E': severity = errh_eSeverity_Error; break; case 'F': severity = errh_eSeverity_Fatal; break; default: ; } strncpy( logger, &line[2], 18); logger[18] = 0; sts = sscanf( &line[22], "%d", &pid); if ( sts != 1) pid = 0; strncpy( &time_str[2], &line[28], 20); time_str[0] = '2'; time_str[1] = '0'; time_str[22] = 0; time_FormAsciiToA( time_str, HUNDRED, GB, &time); msg = new CLogMsg( severity, logger, pid, time, &line[49]); msg_list.push_back(*msg); delete msg; } else { dcli_trim( line, line); msg = new CLogMsg( errh_eSeverity_Null, "", 0, ztime, line); msg_list.push_back(*msg); delete msg; } } fclose( fp); if ( i != 0) unlink( filename); } draw(); }
int main( int argc, char *argv[]) { pwr_tFileName filespec; pwr_tFileName outfile; pwr_tFileName found_file; merge_eMtype mtype; FILE *fp; FILE *outfp; char line[200]; int sts; char mtab[1000][32]; int mtabcnt = 0; int i; int idx; pwr_tCmd cmd; pwr_tFileName incdir; pwr_tFileName cfile; pwr_tFileName ofile; char pwre_cc[250]; char pwre_cxx[250]; char pwre_ar[250]; char *s; int arg_keep = 0; int arg_verbose = 0; int in_if = 0; #if defined OS_LINUX char os[] = "OS_LINUX"; char dos[] = "-DOS_LINUX -DOS_POSIX"; char cflags[] = ""; #elif defined OS_MACOS char os[] = "OS_MACOS"; char dos[] = "-DOS_MACOS -DOS_POSIX"; char cflags[] = ""; #elif defined OS_FREEBSD char os[] = "OS_FREEBSD"; char dos[] = "-DOS_FREEBSD -DOS_POSIX"; char cflags[] = ""; #elif defined OS_OPENBSD char os[] = "OS_OPENBSD"; char dos[] = "-DOS_OPENBSD -DOS_POSIX"; char cflags[] = ""; #elif defined OS_CYGWIN char os[] = "OS_CYGWIN"; char dos[] = "-DOS_CYGWIN -DOS_POSIX"; char cflags[] = "-I/usr/include/tirpc"; #endif if ( argc < 4) { usage(); exit(1); } if ( (s = getenv( "pwre_cc"))) strncpy( pwre_cc, s, sizeof(pwre_cc)); else strncpy( pwre_cc, "gcc", sizeof(pwre_cc)); if ( (s = getenv( "pwre_cxx"))) strncpy( pwre_cxx, s, sizeof(pwre_cxx)); else strncpy( pwre_cxx, "g++", sizeof(pwre_cxx)); if ( (s = getenv( "pwre_ar"))) strncpy( pwre_ar, s, sizeof(pwre_ar)); else strncpy( pwre_ar, "ar", sizeof(pwre_ar)); idx = 0; for ( i = 1; i < argc; i++) { if ( strcmp( argv[i], "-k") == 0) arg_keep = 1; else if ( strcmp( argv[i], "-v") == 0) arg_verbose = 1; else { switch ( idx) { case 0: if ( strcmp( argv[i], "io_base") == 0) mtype = merge_eMtype_IoBase; else if ( strcmp( argv[i], "wb_base") == 0) mtype = merge_eMtype_WbBase; else if ( strcmp( argv[i], "xtt_base") == 0) mtype = merge_eMtype_XttBase; else { usage(); exit(1); } idx++; break; case 1: strncpy( filespec, argv[i], sizeof(filespec)); idx++; break; case 2: strncpy( outfile, argv[i], sizeof(filespec)); idx++; break; } } } sts = dcli_search_file( filespec, found_file, DCLI_DIR_SEARCH_INIT); while ( ODD(sts)) { fp = fopen( found_file, "r"); if ( !fp) { printf( "Unable to open file %s\n", found_file); exit(1); } while( dcli_read_line( line, sizeof(line), fp)) { dcli_trim( line, line); if ( strncmp( line, "#if" , 3) == 0) { in_if = ! check_os( &line[4], os); continue; } else if ( in_if) { if ( strncmp( line, "#endif", 6) == 0) { if ( in_if) in_if = 0; continue; } continue; } else if ( line[0] == 0 || line[0] == '#') continue; strncpy( mtab[mtabcnt++], line, sizeof(mtab[0])); if ( mtabcnt > (int) sizeof(mtab)/sizeof(mtab[0]) - 1) break; } fclose( fp); sts = dcli_search_file( filespec, found_file, DCLI_DIR_SEARCH_NEXT); } dcli_search_file( filespec, found_file, DCLI_DIR_SEARCH_END); switch ( mtype) { case merge_eMtype_IoBase: { strncpy( cfile, "/tmp/rt_io_base_methods.c", sizeof(cfile)); strncpy( ofile, "/tmp/rt_io_base_methods.o", sizeof(cfile)); outfp = fopen( cfile, "w"); if ( !outfp) { printf( "Unable to open file %s\n", outfile); exit(1); } fprintf( outfp, "#include \"rt_io_base.h\"\n"); for ( i = 0; i < mtabcnt; i++) { fprintf( outfp, "pwr_dImport pwr_BindIoMethods(%s);\n", mtab[i]); } fprintf( outfp, "pwr_BindIoClasses(Base) = {\n"); for ( i = 0; i < mtabcnt; i++) { fprintf( outfp, " pwr_BindIoClass(%s),\n", mtab[i]); } fprintf( outfp, " pwr_NullClass};\n"); fclose( outfp); break; } case merge_eMtype_WbBase: { strncpy( cfile, "/tmp/wb_i_base_methods.cpp", sizeof(cfile)); strncpy( ofile, "/tmp/wb_i_base_methods.o", sizeof(cfile)); outfp = fopen( cfile, "w"); if ( !outfp) { printf( "Unable to open file %s\n", outfile); exit(1); } fprintf( outfp, "#include \"wb_pwrs.h\"\n"); for ( i = 0; i < mtabcnt; i++) { fprintf( outfp, "pwr_dImport pwr_BindMethods(%s);\n", mtab[i]); } fprintf( outfp, "pwr_BindClasses(Base) = {\n"); for ( i = 0; i < mtabcnt; i++) { fprintf( outfp, " pwr_BindClass(%s),\n", mtab[i]); } fprintf( outfp, " pwr_NullClass};\n"); fclose( outfp); break; } case merge_eMtype_XttBase: { strncpy( cfile, "/tmp/xtt_i_methods.c", sizeof(cfile)); strncpy( ofile, "/tmp/xtt_i_methods.o", sizeof(cfile)); outfp = fopen( cfile, "w"); if ( !outfp) { printf( "Unable to open file %s\n", outfile); exit(1); } fprintf( outfp, "#include \"xtt_menu.h\"\n"); for ( i = 0; i < mtabcnt; i++) { fprintf( outfp, "pwr_dImport pwr_BindXttMethods(%s);\n", mtab[i]); } fprintf( outfp, "pwr_BindXttClasses(Base) = {\n"); for ( i = 0; i < mtabcnt; i++) { fprintf( outfp, " pwr_BindXttClass(%s),\n", mtab[i]); } fprintf( outfp, " pwr_NullClass};\n"); fclose( outfp); break; } } dcli_translate_filename( incdir, "$pwr_einc"); switch ( mtype) { case merge_eMtype_WbBase: snprintf( cmd, sizeof(cmd), "%s -c %s -I%s %s -o %s %s", pwre_cxx, cflags, incdir, dos, ofile, cfile); break; default: snprintf( cmd, sizeof(cmd), "%s -c %s -I%s %s -o %s %s", pwre_cc, cflags, incdir, dos, ofile, cfile); } if ( arg_verbose) printf( "co_merge: %s\n", cmd); system( cmd); snprintf( cmd, sizeof(cmd), "%s r %s %s", pwre_ar, outfile, ofile); if ( arg_verbose) printf( "co_merge: %s\n", cmd); system(cmd); snprintf( cmd, sizeof(cmd), "rm %s", ofile); system(cmd); if ( !arg_keep) { snprintf( cmd, sizeof(cmd), "rm %s", cfile); system(cmd); } return 1; }
void wb_pvd_gvl::load( pwr_tStatus *rsts) { char line[200]; char line_item[6][80]; int num; ifstream is; pwr_tFileName fname; int line_cnt = 0; pwr_tStatus sts; int menu_stack[100]; int menu_cnt = 0; char description[80]; *rsts = LDH__SUCCESS; // Create Root object procom_obj rootitem; strcpy( rootitem.name, "GlobalVolumeList"); rootitem.cid = pwr_eClass_Hier; rootitem.oix = 0; m_list.push_back(rootitem); menu_stack[menu_cnt] = rootitem.oix; menu_cnt++; dcli_translate_filename( fname, "$pwra_db/pwr_volumelist.dat"); is.open( fname); if ( !is) { *rsts = LDH__NEWFILE; return; } while ( is.getline( line, sizeof(line))) { line_cnt++; if ( line[0] == '!') { if ( strncmp( line, "!**Menu", 7) == 0) { // Add Hier char *s = strstr( line, "// "); if ( s) { strncpy( description, s+3, sizeof(description)); description[sizeof(description)-1] = 0; } else strcpy( description, ""); num = dcli_parse( line, " ", "", (char *)line_item, sizeof(line_item)/sizeof(line_item[0]), sizeof(line_item[0]), 0); if ( num < 3) { cout << "Syntax error " << fname << " row " << line_cnt << endl; continue; } procom_obj plantitem; strcpy( plantitem.name, line_item[1]); plantitem.cid = pwr_eClass_Hier; plantitem.oix = next_oix++; plantitem.fthoix = menu_stack[menu_cnt - 1]; plantitem.bwsoix = m_list[plantitem.fthoix].lchoix; plantitem.fwsoix = 0; plantitem.body_size = sizeof(pwr_sHier); pwr_sHier *plantbody = (pwr_sHier *) calloc( 1, plantitem.body_size); plantitem.body = plantbody; strcpy( plantbody->Description, description); m_list.push_back(plantitem); if ( plantitem.bwsoix != 0) m_list[plantitem.bwsoix].fwsoix = plantitem.oix; m_list[plantitem.fthoix].lchoix = plantitem.oix; if ( m_list[plantitem.fthoix].fchoix == 0) m_list[plantitem.fthoix].fchoix = plantitem.oix; menu_stack[menu_cnt] = plantitem.oix; menu_cnt++; } else if ( strncmp( line, "!**}", 4) == 0) { if ( menu_cnt == 0) { cout << "Syntax error " << fname << " row " << line_cnt << endl; continue; } menu_cnt--; } continue; } dcli_trim( line, line); num = dcli_parse( line, " ", "", (char *)line_item, sizeof(line_item)/sizeof(line_item[0]), sizeof(line_item[0]), 0); if ( num != 3) { cout << "Syntax error " << fname << " row " << line_cnt << endl; continue; } procom_obj volitem; strcpy( volitem.name, line_item[0]); volitem.body_size = sizeof(pwr_sClass_VolumeReg); pwr_sClass_VolumeReg *volbody = (pwr_sClass_VolumeReg *) calloc( 1, volitem.body_size); volitem.body = volbody; strcpy( volbody->Project, line_item[2]); sts = cdh_StringToVolumeId( line_item[1], &volbody->VolumeId); if ( EVEN(sts)) { cout << "Syntax error " << fname << " row " << line_cnt << endl; continue; } volitem.cid = pwr_cClass_VolumeReg; volitem.oix = next_oix++; volitem.fthoix = menu_stack[menu_cnt - 1]; volitem.bwsoix = m_list[volitem.fthoix].lchoix; volitem.fwsoix = 0; strcpy( volbody->Description, line_item[1]); for ( int i = strlen(volbody->Description); i < 18; i++) strcat( volbody->Description, " "); strcat( volbody->Description, line_item[2]); m_list.push_back(volitem); if ( volitem.bwsoix != 0) m_list[volitem.bwsoix].fwsoix = volitem.oix; m_list[volitem.fthoix].lchoix = volitem.oix; if ( m_list[volitem.fthoix].fchoix == 0) m_list[volitem.fthoix].fchoix = volitem.oix; } }
static pwr_tStatus ConfigureComponent( ldh_sMenuCall *ip) { pwr_tStatus sts; unsigned int disable_mask; pwr_sMenuButton mb; pwr_tEnum graph_configuration; pwr_sAttrRef aaref; char vect[10][80]; char item[3][80]; int i; int nr; int vect_cnt; sts = ldh_ReadObjectBody(ip->PointedSession, ip->ItemList[ip->ChosenItem].MenuObject, "SysBody", &mb, sizeof(pwr_sMenuButton)); // Reset previoius disable configuration configure_object_reset( ip, &ip->Pointed, &mb); // Set disable attributes from argument 0 if ( mb.MethodArguments[0][0] != '(') { // Old syntax, eg '7, CircuitBreaker 4, Contactor 5' vect_cnt = dcli_parse( mb.MethodArguments[0], ",", "", (char *)vect, sizeof( vect) / sizeof( vect[0]), sizeof( vect[0]), 0); for ( i = 0; i < vect_cnt; i++) { nr = dcli_parse( vect[i], " ", "", (char *)item, sizeof( item) / sizeof( item[0]), sizeof( item[0]), 0); if ( nr == 1) { if ( sscanf( item[0], "%d", &disable_mask) != 1) graph_configuration = 0; sts = configure_object( ip, &ip->Pointed, disable_mask); if ( EVEN(sts)) return sts; } else if ( nr == 2) { pwr_tAName aname; if ( sscanf( item[1], "%d", &disable_mask) != 1) disable_mask = 0; strncpy( aname, item[0], sizeof(aname)); sts = ldh_ArefANameToAref( ip->PointedSession, &ip->Pointed, aname, &aaref); if ( ODD(sts)) { sts = configure_object( ip, &aaref, disable_mask); if ( EVEN(sts)) return sts; } } } } else { // New syntax, eg '(7 (CircuitBreaker 4, Contactor 5))' char str1[256]; char *s; strncpy( str1, &mb.MethodArguments[0][1], sizeof(str1)); s = strrchr( str1, ')'); if ( !s) return LDH__COMPSYNTAX; *s = 0; dcli_trim( str1, str1); nr = sscanf( str1, "%d", &disable_mask); if ( nr != 1) return LDH__COMPSYNTAX; sts = configure_object( ip, &ip->Pointed, disable_mask); if ( EVEN(sts)) return sts; sts = configure_attrmask( ip, &ip->Pointed, str1); if ( EVEN(sts)) return sts; } // Set GraphConfiguration from argument 1 vect_cnt = dcli_parse( mb.MethodArguments[1], ",", "", (char *)vect, sizeof( vect) / sizeof( vect[0]), sizeof( vect[0]), 0); for ( i = 0; i < vect_cnt; i++) { nr = dcli_parse( vect[i], " ", "", (char *)item, sizeof( item) / sizeof( item[0]), sizeof( item[0]), 0); if ( nr == 1) { if ( sscanf( item[0], "%d", &graph_configuration) != 1) graph_configuration = 0; sts = ldh_ArefANameToAref( ip->PointedSession, &ip->Pointed, "GraphConfiguration", &aaref); if ( ODD(sts)) { sts = ldh_WriteAttribute( ip->PointedSession, &aaref, (void *)&graph_configuration, sizeof(graph_configuration)); if ( EVEN(sts)) return sts; } } else if ( nr == 2) { pwr_tAName aname; if ( sscanf( item[1], "%d", &graph_configuration) != 1) graph_configuration = 0; strncpy( aname, item[0], sizeof(aname)); strncat( aname, ".GraphConfiguration", sizeof(aname)); sts = ldh_ArefANameToAref( ip->PointedSession, &ip->Pointed, aname, &aaref); if ( ODD(sts)) { sts = ldh_WriteAttribute( ip->PointedSession, &aaref, (void *)&graph_configuration, sizeof(graph_configuration)); if ( EVEN(sts)) return sts; } } } return 1; }
static pwr_tStatus configure_object_reset( ldh_sMenuCall *ip, pwr_sAttrRef *aref, pwr_sMenuButton *mb) { pwr_tStatus sts; pwr_tCid cid; ldh_sParDef *bodydef; int rows; int i, j; pwr_sAttrRef aaref, daref; pwr_tDisableAttr disable = 0; char vect[10][80]; int vect_cnt; int skip; char *s; // Attribute objects in argument 2 are not controlled by the configure method if ( mb) { vect_cnt = dcli_parse( mb->MethodArguments[2], ",", "", (char *)vect, sizeof( vect) / sizeof( vect[0]), sizeof( vect[0]), 0); for ( j = 0; j < vect_cnt; j++) dcli_trim( vect[j], vect[j]); } else vect_cnt = 0; sts = ldh_GetAttrRefTid( ip->PointedSession, aref, &cid); if ( EVEN(sts)) return sts; sts = ldh_GetObjectBodyDef( ip->PointedSession, cid, "RtBody", 1, &bodydef, &rows); if (EVEN(sts)) return sts; for ( i = 0; i < rows; i++) { // Check if attribute is controlled by this method skip = 0; if ( mb) { // Remove leading Super. s = bodydef[i].ParName; while ( strncmp( s, "Super.", 6) == 0) s += 6; for ( j = 0; j < vect_cnt; j++) { if ( cdh_NoCaseStrcmp( vect[j], s) == 0) { // This object should not be reset skip = 1; break; } } if ( skip) continue; } if ( bodydef[i].Par->Param.Info.Flags & PWR_MASK_DISABLEATTR) { // Enable all attributes sts = ldh_ArefANameToAref( ip->PointedSession, aref, bodydef[i].ParName, &aaref); if ( EVEN(sts)) return sts; daref = cdh_ArefToDisableAref( &aaref); sts = ldh_WriteAttribute( ip->PointedSession, &daref, (void *)&disable, sizeof(disable)); if ( EVEN(sts)) return sts; } if ( bodydef[i].Par->Param.Info.Flags & PWR_MASK_CLASS) { // Reset object attribute sts = ldh_ArefANameToAref( ip->PointedSession, aref, bodydef[i].ParName, &aaref); if ( EVEN(sts)) return sts; sts = configure_object_reset( ip, &aaref, 0); if ( EVEN(sts)) return sts; } } free( (char *)bodydef); return LDH__SUCCESS; }
int XttHotkey::read_file() { FILE *fp; char line[200]; int row = 0; char p1[2][200]; char p2[10][200]; int i, n; char *s; dcli_translate_filename( m_filename, m_filename); fp = fopen( m_filename, "r"); if ( !fp) return 0; while ( dcli_read_line( line, sizeof(line), fp)) { int mod = 0; int keysym; char keystr[20] = ""; char action_arg[200]; char action_name[200]; row++; dcli_trim( line, line); if ( line[0] == 0 || line[0] == '#') continue; n = dcli_parse( line, ":", "", (char *)p1, sizeof( p1) / sizeof( p1[0]), sizeof( p1[0]), 0); if ( n != 2) { printf( "Syntax error, %s, row %d\n", m_filename, row); continue; } dcli_trim( p1[0], p1[0]); dcli_trim( p1[1], p1[1]); n = dcli_parse( p1[0], " ", "", (char *)p2, sizeof( p2) / sizeof( p2[0]), sizeof( p2[0]), 0); if ( n < 1) { printf( "Syntax error, %s, row %d\n", m_filename, row); continue; } for ( i = 0; i < n; i++) { if ( cdh_NoCaseStrcmp( p2[i], "Control") == 0) mod |= ControlMask; else if ( cdh_NoCaseStrcmp( p2[i], "Shift") == 0) mod |= ShiftMask; else if ( cdh_NoCaseStrcmp( p2[i], "Alt") == 0) mod |= Mod1Mask; else if ( cdh_NoCaseStrncmp( p2[i], "<key>", 5) == 0) { strcpy( keystr, &p2[i][5]); dcli_trim( keystr, keystr); } else { printf( "Syntax error, %s, row %d\n", m_filename, row); break; } } n = dcli_parse( p1[1], "(", "", (char *)p2, sizeof( p2) / sizeof( p2[0]), sizeof( p2[0]), 0); if ( n < 2) { printf( "Syntax error, %s, row %d\n", m_filename, row); continue; } strcpy( action_name, p2[0]); dcli_trim( action_name, action_name); strcpy( action_arg, p2[1]); if ( (s = strrchr( action_arg, ')'))) *s = 0; else { printf( "Syntax error, %s, row %d\n", m_filename, row); continue; } keysym = XStringToKeysym( keystr); if ( !keysym) { printf( "Syntax error, %s, row %d\n", m_filename, row); continue; } HotkeyKey key( mod, keysym, action_name, action_arg); m_keys.push_back( key); } fclose( fp); for ( i = 0; i < (int)m_keys.size(); i++) { grab_key( m_keys[i].m_keysym, m_keys[i].m_mod); } return 1; }