void wb_pvd_gvl::save_item( pwr_tOix oix, ofstream& of) { switch ( m_list[oix].cid) { case pwr_eClass_Hier: { pwr_sHier *body = (pwr_sHier *)m_list[oix].body; of << "!**Menu " << m_list[oix].name << " { // " << body->Description << endl; for ( int ix = m_list[oix].fchoix; ix; ix = m_list[ix].fwsoix) save_item( ix, of); of << "!**}" << endl; break; } case pwr_cClass_VolumeReg: { pwr_sClass_VolumeReg *body = (pwr_sClass_VolumeReg *)m_list[oix].body; of << " " << m_list[oix].name << " " << cdh_VolumeIdToString( 0, body->VolumeId, 0, 0) << " " << body->Project << endl; for ( int ix = m_list[oix].fchoix; ix; ix = m_list[ix].fwsoix) save_item( ix, of); break; } default: ; } }
static void attrvalue_to_string( int type_id, void *value_ptr, char *str, int size, int *len, char *format) { pwr_tObjid objid; pwr_sAttrRef *attrref; int sts; char timstr[64]; if ( value_ptr == 0) { strcpy( str, "UNDEFINED"); return; } switch ( type_id ) { case pwr_eType_Boolean: { if ( !format) *len = sprintf( str, "%d", *(pwr_tBoolean *)value_ptr); else *len = sprintf( str, format, *(pwr_tBoolean *)value_ptr); break; } case pwr_eType_Float32: { if ( !format) *len = sprintf( str, "%f", *(float *)value_ptr); else *len = sprintf( str, format, *(float *)value_ptr); break; } case pwr_eType_Float64: { if ( !format) *len = sprintf( str, "%f", *(double *)value_ptr); else *len = sprintf( str, format, *(double *)value_ptr); break; } case pwr_eType_Char: { if ( !format) *len = sprintf( str, "%c", *(char *)value_ptr); else *len = sprintf( str, format, *(char *)value_ptr); break; } case pwr_eType_Int8: { if ( !format) *len = sprintf( str, "%d", *(char *)value_ptr); else *len = sprintf( str, format, *(char *)value_ptr); break; } case pwr_eType_Int16: { if ( !format) *len = sprintf( str, "%hd", *(short *)value_ptr); else *len = sprintf( str, format, *(short *)value_ptr); break; } case pwr_eType_Int32: { if ( !format) *len = sprintf( str, "%d", *(int *)value_ptr); else *len = sprintf( str, format, *(int *)value_ptr); break; } case pwr_eType_Int64: { if ( !format) *len = sprintf( str, pwr_dFormatInt64, *(pwr_tInt64 *)value_ptr); else *len = sprintf( str, format, *(pwr_tInt64 *)value_ptr); break; } case pwr_eType_UInt8: { if ( !format) *len = sprintf( str, "%d", *(unsigned char *)value_ptr); else *len = sprintf( str, format, *(unsigned char *)value_ptr); break; } case pwr_eType_UInt16: { if ( !format) *len = sprintf( str, "%hd", *(unsigned short *)value_ptr); else *len = sprintf( str, format, *(unsigned short *)value_ptr); break; } case pwr_eType_UInt32: case pwr_eType_Mask: case pwr_eType_Enum: { if ( !format) *len = sprintf( str, "%d", *(unsigned int *)value_ptr); else *len = sprintf( str, format, *(unsigned int *)value_ptr); break; } case pwr_eType_UInt64: { if ( !format) *len = sprintf( str, pwr_dFormatUInt64, *(pwr_tUInt64 *)value_ptr); else *len = sprintf( str, format, *(pwr_tUInt64 *)value_ptr); break; } case pwr_eType_String: { strncpy( str, (char *)value_ptr, size); str[size-1] = 0; *len = strlen(str); break; } case pwr_eType_Objid: { pwr_tOName hiername; objid = *(pwr_tObjid *)value_ptr; if ( !objid.oix) sts = gdh_ObjidToName ( objid, hiername, sizeof(hiername), cdh_mName_volumeStrict); else sts = gdh_ObjidToName ( objid, hiername, sizeof(hiername), cdh_mNName); if (EVEN(sts)) { strcpy( str, ""); *len = 0; break; } *len = sprintf( str, "%s", hiername); break; } case pwr_eType_AttrRef: { pwr_tAName hiername; attrref = (pwr_sAttrRef *) value_ptr; sts = gdh_AttrrefToName ( attrref, hiername, sizeof(hiername), cdh_mNName); if (EVEN(sts)) { strcpy( str, ""); *len = 0; break; } *len = sprintf( str, "%s", hiername); break; } case pwr_eType_Time: { sts = time_AtoAscii( (pwr_tTime *) value_ptr, time_eFormat_DateAndTime, timstr, sizeof(timstr)); if ( EVEN(sts)) strcpy( timstr, "-"); *len = sprintf( str, "%s", timstr); break; } case pwr_eType_DeltaTime: { sts = time_DtoAscii( (pwr_tDeltaTime *) value_ptr, 1, timstr, sizeof(timstr)); if ( EVEN(sts)) strcpy( timstr, "Undefined time"); *len = sprintf( str, "%s", timstr); break; } case pwr_eType_ObjectIx: { *len = sprintf( str, "%s", cdh_ObjectIxToString( NULL, *(pwr_tObjectIx *) value_ptr, 1)); break; } case pwr_eType_ClassId: { pwr_tOName hiername; objid = cdh_ClassIdToObjid( *(pwr_tClassId *) value_ptr); sts = gdh_ObjidToName ( objid, hiername, sizeof(hiername), cdh_mNName); if (EVEN(sts)) { strcpy( str, ""); *len = 0; break; } *len = sprintf( str, "%s", hiername); break; } case pwr_eType_TypeId: { pwr_tOName hiername; objid = cdh_TypeIdToObjid( *(pwr_tTypeId *) value_ptr); sts = gdh_ObjidToName ( objid, hiername, sizeof(hiername), cdh_mNName); if (EVEN(sts)) { strcpy( str, ""); *len = 0; break; } *len = sprintf( str, "%s", hiername); break; } case pwr_eType_VolumeId: { *len = sprintf( str, "%s", cdh_VolumeIdToString( NULL, *(pwr_tVolumeId *) value_ptr, 1, 0)); break; } case pwr_eType_RefId: { *len = sprintf( str, "%s", cdh_SubidToString( NULL, *(pwr_tSubid *) value_ptr, 1)); break; } } }
// // printValue // bool wb_print_wbl::printValue (wb_volume& v, wb_adef& adef, void *val, int varSize, char **svalp) { unsigned long sts; char timbuf[24]; static char sval[512]; bool retval = true; pwr_tOid oid; wb_object o; sval[0] = '\0'; if (adef.flags() & PWR_MASK_POINTER) { sprintf(sval, "%u", *(unsigned int *) val); *svalp = sval; return TRUE; } switch (adef.type()) { case pwr_eType_Boolean: sprintf(sval, "%d", *(pwr_tBoolean *) val); break; case pwr_eType_Float32: if ( *(pwr_tFloat32 *)val == FLT_MIN) strcpy( sval, "FLT_MIN"); else if ( *(pwr_tFloat32 *)val == FLT_MAX) strcpy( sval, "FLT_MAX"); else sprintf(sval, "%.*e", FLT_DIG, *(pwr_tFloat32 *) val); break; case pwr_eType_Float64: sprintf(sval, "%.*e", DBL_DIG, *(pwr_tFloat64 *) val); break; case pwr_eType_Char: if (*(pwr_tChar *) val == 0) sprintf(sval, "\"\""); else sprintf(sval, "\"%c\"", *(pwr_tChar *) val); break; case pwr_eType_Int8: sprintf(sval, "%d", *(pwr_tInt8 *) val); break; case pwr_eType_Int16: sprintf(sval, "%d", *(pwr_tInt16 *) val); break; case pwr_eType_Int32: if ( *(pwr_tInt32 *)val == INT_MIN) strcpy( sval, "INT_MIN"); else if ( *(pwr_tInt32 *)val == INT_MAX) strcpy( sval, "INT_MAX"); else sprintf(sval, "%d", *(pwr_tInt32 *) val); break; case pwr_eType_Int64: sprintf(sval, pwr_dFormatInt64, *(pwr_tInt64 *) val); break; case pwr_eType_UInt8: sprintf(sval, "%u", *(pwr_tUInt8 *) val); break; case pwr_eType_UInt16: sprintf(sval, "%u", *(pwr_tUInt16 *) val); break; case pwr_eType_UInt32: case pwr_eType_DisableAttr: sprintf(sval, "%u", *(pwr_tUInt32 *) val); break; case pwr_eType_UInt64: sprintf(sval, pwr_dFormatUInt64, *(pwr_tUInt64 *) val); break; case pwr_eType_Mask: sprintf(sval, "%u", *(pwr_tUInt32 *) val); break; case pwr_eType_Enum: sprintf(sval, "%u", *(pwr_tUInt32 *) val); break; case pwr_eType_RefId: sprintf(sval, "0"); break; case pwr_eType_Objid: if (cdh_ObjidIsNull(*(pwr_tOid *) val)) sprintf(sval, "\"_O0.0.0.0:0\""); else { o = v.object(*(pwr_tOid *)val); if (o) { if ( o.oid().vid >= cdh_cUserVolMin && o.oid().vid != v.vid() && !m_keepName) // Other user volume. Loadfile might not be created yet at load time. sprintf(sval, "\"%s\"", cdh_ObjidToString(NULL, *(pwr_tObjid *)val, 1)); else sprintf(sval, "\"%s\"", o.longName().c_str()); } else sprintf(sval, "\"%s\"", cdh_ObjidToString(NULL, *(pwr_tObjid *)val, 1)); } break; case pwr_eType_ObjectIx: if ( *(pwr_tObjectIx *) val == 0) sprintf(sval, "0"); else sprintf(sval, "\"%s\"", cdh_ObjectIxToString(NULL, *(pwr_tObjectIx *) val,1)); break; case pwr_eType_VolumeId: if ( *(pwr_tVolumeId *) val == 0) sprintf(sval, "0"); else sprintf(sval, "\"%s\"", cdh_VolumeIdToString(NULL, *(pwr_tVolumeId *) val,1,0)); break; case pwr_eType_ClassId: if (*(pwr_tClassId *) val == 0) sprintf(sval, "0"); else { wb_cdef cdef = v.cdef(*(pwr_tCid *)val); if (cdef) sprintf(sval, "\"%s\"", cdef.longName().c_str()); else { sprintf(sval, "Unknown class, identity: %d", (*(pwr_tClassId *) val)); m_errCnt++; retval = false; } } break; case pwr_eType_TypeId: /** @todo Modify when wb_tdef is OK q*/ case pwr_eType_CastId: if (*(pwr_tTypeId *) val == 0) sprintf(sval, "0"); else { oid = cdh_TypeIdToObjid(*(pwr_tTid *)val); o = v.object(oid); if (o) sprintf(sval, "\"%s\"", o.longName().c_str()); else { sprintf(sval, "Unknown type, identity: %d", (*(pwr_tTypeId *) val)); m_errCnt++; retval = false; } } break; case pwr_eType_AttrRef: /** @todo */ if (cdh_ObjidIsNull(((pwr_sAttrRef*)val)->Objid)) sprintf(sval, "\"_O0.0.0.0:0\""); else { try { wb_attribute a = v.attribute((pwr_sAttrRef*)val); if (a) sprintf(sval, "\"%s\"", a.longName().c_str()); else { sprintf(sval, "\"%s\"", cdh_ArefToString(NULL, (pwr_sAttrRef*)val, 1)); } } catch ( wb_error &e) { if ( ldh_isSymbolicVid( ((pwr_sAttrRef *)val)->Objid.vid)) sprintf(sval, "\"%s\"", cdh_ArefToString(NULL, (pwr_sAttrRef*)val, 1)); else { sprintf(sval, "Unknown attribute reference"); m_errCnt++; retval = FALSE; } } } #if 0 } else {
gdb_sVolume * cvolcm_ConnectVolume ( pwr_tStatus *sts, gdb_sVolume *vp, net_sGvolume *gvp, gdb_sNode *np ) { gdb_sTouchQ *tqp; gdb_sVolume *ovp; gdb_AssumeLocked; if (vp->g.nid != pwr_cNNodeId && vp->g.nid != np->nid) { errh_Error("Volume %s (%s) is loaded from another node.\nCurrent: %s, new: %s", vp->g.name.orig, cdh_VolumeIdToString(NULL, vp->g.vid, 1, 0), cdh_NodeIdToString(NULL, vp->g.nid, 1, 0), cdh_NodeIdToString(NULL, np->nid, 1, 0)); return NULL; } vp->g = *gvp; pwr_Assert(vp->g.nid != pwr_cNNodeId); vp->l.nr = pool_Reference(NULL, gdbroot->pool, np); /* Add volume name to hash table. */ ovp = hash_Search(NULL, gdbroot->vn_ht, &vp->g.name); if (ovp != NULL) { if (ovp != vp) { errh_Warning("Volume name allready exist: %s, vid: %x\n", vp->g.name.orig, vp->g.vid); hash_Remove(NULL, gdbroot->vn_ht, ovp); ovp = hash_Insert(sts, gdbroot->vn_ht, vp); pwr_Assert(ovp == vp); } } else { ovp = hash_Insert(sts, gdbroot->vn_ht, vp); pwr_Assert(ovp == vp); } vp->l.flags.b.inVnTable = 1; pwr_Assert(!vp->l.flags.b.inOwnList); pool_QinsertPred(sts, gdbroot->pool, &vp->l.own_ll, &np->own_lh); vp->l.flags.b.inOwnList = 1; /* Initiate touch queues. */ tqp = &vp->u.c.cacheLock; pool_Qinit(NULL, gdbroot->pool, &tqp->lh); tqp->lc_max = 0; tqp->flags.b.cacheLock = 1; tqp->next = pool_cNRef; tqp = &vp->u.c.cacheVol; pool_Qinit(NULL, gdbroot->pool, &tqp->lh); #if defined OS_ELN tqp->lc_max = 100; #else tqp->lc_max = 200; #endif tqp->flags.b.cacheVol = 1; tqp->next = pool_Reference(NULL, gdbroot->pool, &np->cacheNode); vp->l.flags.b.isConnected = 1; vp->l.flags.b.isCached = 1; vp->l.flags.b.netCached = 1; vp->l.flags.b.remote = 1; return vp; }
pwr_tStatus WVsel::check_volumelist( int quiet, int *display_window ) { pwr_tVolumeId volume; pwr_tClassId classid; char name[80]; int size; pwr_tStatus sts; int i; lfu_t_volumelist *volumelist; lfu_t_volumelist *volumelist_ptr; int volumecount; int class_error; char volname_conf[80]; char volname_db[80]; int volume_found; int error_count; int errlen=0; int errlen_old = 0; char errstr[800]; error_count = 0; *display_window = 0; if ( !(CoLogin::privilege() & pwr_mPrv_DevConfig )) // No privileges for edit, don't check the volumes return 1; // Load the configured volume list sts = lfu_volumelist_load( pwr_cNameVolumeList, &volumelist, &volumecount); if (sts == FOE__NOFILE) { if ( !quiet) { printf( "** Error, project is not configured\n"); BEEP; *display_window = 1; } return 1; } else if (EVEN(sts)) return 1; sts = ldh_GetVolumeList( wbctx, &volume); while ( ODD(sts) ) { sts = ldh_GetVolumeClass( wbctx, volume, &classid); if (EVEN(sts)) return sts; sts = ldh_VolumeIdToName( wbctx, volume, name, sizeof(name), &size); if (EVEN(sts)) return sts; if ( classid == pwr_eClass_RootVolume || classid == pwr_eClass_SubVolume || (classid == pwr_eClass_SharedVolume && volume != ldh_cRtVolume) || (cdh_isClassVolumeClass(classid) && (cdh_cUserClassVolMin <= volume && volume <= cdh_cUserClassVolMax))) { // This volume should be configured volume_found = 0; volumelist_ptr = volumelist; for ( i = 0; i < volumecount; i++) { if ( volumelist_ptr->volume_id == volume) { // Mark that volume is found volume_found = 1; strcpy( volumelist_ptr->p3, "Found"); // Check volume name utl_toupper( volname_conf, volumelist_ptr->volume_name); utl_toupper( volname_db, name); if ( strcmp( volname_db, volname_conf)) { // Volume name differs if ( !quiet && errlen < (int)(sizeof(errstr)-100)) { errlen += sprintf( &errstr[errlen], "** Error, Volume %s is configured with another name '%s'\n", name, volumelist_ptr->volume_name); MsgWindow::message( 'E', &errstr[errlen_old], msgw_ePop_No); errlen_old = errlen; BEEP; } error_count++; } class_error = 0; switch( classid) { case pwr_eClass_RootVolume : if ( strcmp( volumelist_ptr->p1, "RootVolume")) class_error = 1; break; case pwr_eClass_SubVolume : if ( strcmp( volumelist_ptr->p1, "SubVolume")) class_error = 1; break; case pwr_eClass_ClassVolume : if ( strcmp( volumelist_ptr->p1, "ClassVolume")) class_error = 1; break; case pwr_eClass_DetachedClassVolume : if ( strcmp( volumelist_ptr->p1, "DetachedClassVolume")) class_error = 1; break; case pwr_eClass_SharedVolume : if ( strcmp( volumelist_ptr->p1, "SharedVolume")) class_error = 1; break; } if ( class_error) { if ( !quiet && errlen < (int)(sizeof(errstr)-100)) { errlen += sprintf( &errstr[errlen], "** Error, Volume %s is configured with another class '%s'\n", name, volumelist_ptr->p1); MsgWindow::message( 'E', &errstr[errlen_old], msgw_ePop_No); errlen_old = errlen; BEEP; } error_count++; } break; } volumelist_ptr++; } if ( !volume_found) { if ( !quiet && errlen < (int)(sizeof(errstr)-100)) { errlen += sprintf( &errstr[errlen], "** Error, Volume %s (%s) is not configured in the ProjectVolume\nCheck volume name and identity\n", name, cdh_VolumeIdToString( 0, volume, 1, 0)); MsgWindow::message( 'E', &errstr[errlen_old], msgw_ePop_No); errlen_old = errlen; BEEP; } error_count++; } } sts = ldh_GetNextVolume( wbctx, volume, &volume); } if ( error_count) { *display_window = 1; if ( !quiet) { errlen += sprintf( &errstr[errlen], "\n %d syntax error%s found\n", error_count, (error_count == 1) ? "" : "s"); MsgWindow::message( 'E', &errstr[errlen_old], msgw_ePop_No); errlen_old = errlen; wow->DisplayError( "Syntax control", errstr); } } return 1; }