char* MYRTLEXP HDBValue2Str( PHDBValue p,char *Buff, int bSz ) { DWORD n; int len; Buff[0] = 0; switch( p->Type ) { case HDB_TP_DATETIME: SNprintf( Buff, bSz, "%02d-%02d-%04d %02d:%02d:%02d", p->Value.vDateTime->mon, p->Value.vDateTime->mday, p->Value.vDateTime->year, p->Value.vDateTime->hour, p->Value.vDateTime->min, p->Value.vDateTime->sec ); break; case HDB_TP_DATE: SNprintf( Buff, bSz, "%02d-%02d-%04d", p->Value.vDate->mon, p->Value.vDate->mday, p->Value.vDate->year ); break; case HDB_TP_TIME: SNprintf( Buff, bSz, "%02d:%02d:%02d", p->Value.vTime->hour, p->Value.vTime->min, p->Value.vTime->sec ); break; case HDB_TP_STRING: SNprintf( Buff, bSz, "\"%s\"", p->Value.vString ); break; case HDB_TP_WORD: SNprintf( Buff, bSz, "%5d", *p->Value.vWord ); break; case HDB_TP_DWORD: SNprintf( Buff, bSz, "%08X", *p->Value.vDword ); break; case HDB_TP_DOUBLE: SNprintf( Buff, bSz, "%3.3lf", *p->Value.vDouble ); break; case HDB_TP_BINARY: len = SNprintf( Buff, bSz, "%d:", p->Size ); for( bSz -= 2,n = 0; len < bSz && n < p->Size; len += 2, n++ ) Sprintf( Buff+len, "%02X", ((LPBYTE)p->Value.Data)[n] ); break; } return Buff; }
CONSTSTR UnassembeInfo::HexDigit( DWORD Value,char Sign,BOOL Compress ) { static char str[ 20 ]; char ch,*m; if ( Sign == ' ' ) if ( ((signed)Value) < 0 ) { Value = (DWORD)( -((signed)Value) ); Sign = '-'; } else Sign = '+'; m = str + 2 + SNprintf( str+2,sizeof(str)-2, (Sign || Compress) ? "%X" : "%08X", Value ); if ( IS_FLAG(Flags,DISASM_HEXOUT) && Value > 9 ) *m++ = 'h'; *m = 0; ch = (char)toupper(str[2]); if ( ch >= 'A' && ch <= 'Z' ) { str[1] = '0'; if ( Sign ) { str[0] = Sign; return str; } else return str+1; } else if ( Sign ) { str[1] = Sign; return str+1; } else return str+2; }
void INProc::Say( CONSTSTR s,... ) { va_list ap; char str[500]; DWORD err = FIO_ERRORN; va_start( ap,s ); SNprintf( str,sizeof(str), "%*c%s", Counter*2,' ', MessageV(s,ap) ); va_end(ap); FILELog( str ); FIO_SETERRORN( err ); }
INProc::INProc( CONSTSTR nm,CONSTSTR s,... ) : Name(nm) { va_list ap; char str[500]; DWORD err = FIO_ERRORN; SNprintf( str,sizeof(str), "%*c%s(", Counter*2,' ',nm ); if ( s ) { va_start( ap,s ); StrCat( str,MessageV(s,ap),sizeof(str) ); va_end(ap); } StrCat( str,") {",sizeof(str) ); FILELog( str ); Counter++; FIO_SETERRORN( err ); }
void MYRTLEXP QueryHotPaths( PHotPathArray arr ) { arr->DeleteAll(); #if defined(__QNX__) int num_nids; char node_name[22]; char buffer[ 500 ]; char str[100]; struct _osinfo osi; if ( (num_nids=qnx_net_alive(buffer,sizeof(buffer))) == -1) return; for( int n = 1; n < num_nids+1; n++) { if ( !buffer[n] || qnx_osinfo( n,&osi ) == -1 ) continue; qnx_nidtostr( n, node_name, sizeof(node_name)); SNprintf( str, sizeof(str), "//%ld/ ~%-6s~ CPU:~%3u~-~%3d~/~%3d~ Ver:~%2d.%02d%c~ Mem:~%d~/~%d~", osi.nodename, osi.machine, osi.cpu, osi.fpu, osi.cpu_speed, osi.version/100, osi.version%100, osi.release, osi.freememk, osi.totmemk ); PHotPathEntry pe = arr->Add( new HotPathEntry ); pe->Path.printf( "//%s/", node_name ); pe->Label.printf( " ~%c~ ³",'A'+n-1 ); pe->Description = str; } #else #if defined(__HDOS__) int count,c,old; char astr[] = "X:\\", str[] = "X"; count = setdisk( old = getdisk() ); for ( c = 0; c < count; c++ ) { if ( _chdrive(c+1) != 0 ) continue; astr[0] = (char)('A'+c); astr[0] = (char)('A'+c); CONSTSTR d; switch( GetDiskType( c+1 ) ) { case DRIVE_CDROM: d = "CD-ROM drive"; break; case DRIVE_RAMDISK: d = "RAM drive"; break; case DRIVE_REMOTE: d = "Remote drive"; break; case DRIVE_FIXED: d = "Hard drive"; break; case DRIVE_REMOVABLE: d = "Removable drive"; break; case DRIVE_SUBST: d = "Subst drive"; break; case DRIVE_DBLSPACE: d = "DblSpace drive"; break; default: d = NULL; } if ( d ) { MyString s; s.printf( " ~%s~ ¦", str ); arr->Add( new HotPathEntry( astr, s, d ) ); } } setdisk( old ); #else #if defined(__HWIN32__) DWORD dw = GetLogicalDrives(); UINT type; char astr[] = "X:\\", str[] = "X"; for ( int n = 0; n < 32; n++ ) { astr[0] = (char)('A'+n); str[0] = (char)('A'+n); if ( (dw & (1UL<<n)) == 0 || (type=GetDriveType(astr)) <= 1 ) continue; CONSTSTR d; switch( type ) { case DRIVE_CDROM: d = "CD-ROM drive"; break; case DRIVE_RAMDISK: d = "RAM drive"; break; case DRIVE_REMOTE: d = "Remote drive"; break; case DRIVE_FIXED: d = "Hard drive"; break; case DRIVE_REMOVABLE: d = "Removable drive"; break; default: d = NULL; } if ( d ) { MyString s; s.printf( " ~%s~ ¦", str ); arr->Add( new HotPathEntry( astr, s, d ) ); } } #else #if defined(__HWIN16__) UINT type; char astr[] = "X:\\", str[] = "X"; for ( int n = 0; n < 26; n++ ) { if ( (type=GetDriveType(n)) == 1 ) continue; astr[0] = (char)('A'+n); str[0] = (char)('A'+n); CONSTSTR d; switch( type ) { case DRIVE_REMOTE: d = "Remote (network) drive"; break; case DRIVE_FIXED: d = "Hard drive"; break; case DRIVE_REMOVABLE: d = "Removable drive"; break; case 0: d = "Undefined drive"; break; default: d = NULL; } if ( d ) { MyString s; s.printf( " ~%s~ ¦", str ); arr->Add( new HotPathEntry( astr, s, d ) ); } } #else #error ERR_PLATFORM #endif #endif #endif #endif }