Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
0
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 );
}
Пример #4
0
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 );
}
Пример #5
0
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
}