home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / CMDLIN.ZIP / C / DEVSTR.C < prev    next >
C/C++ Source or Header  |  1992-12-04  |  3KB  |  157 lines

  1. /*
  2.  *        devstr.c            Date=921204
  3.  *
  4.  *        device driver string functions
  5.  *
  6.  */
  7.  
  8. /*=====================================================================*/
  9.  
  10. #include <devsupp.h>
  11.  
  12. /*=====================================================================*/
  13.  
  14. BOOL  isanum( CHAR );
  15.  
  16. /*=====================================================================*/
  17.  
  18. USHORT hextoi( string )
  19. CHAR  FAR *string; {
  20.     USHORT  num;
  21.  
  22.     num = 0;
  23.     while ( *string ) {
  24.         num *= 16;
  25.  
  26.         if ( *string >= '0' && *string <= '9' )
  27.             num += ( *string-'0' );
  28.          else if ( *string >= 'a' && *string <= 'f' )
  29.             num += ( *string-'a'+10 );
  30.          else if ( *string >= 'A' && *string <= 'F' )
  31.             num += ( *string-'A'+10 );
  32.          else
  33.              break;
  34.  
  35.         string++;
  36.         }
  37.  
  38.     return( num );
  39.     }
  40.  
  41. /*=====================================================================*/
  42.  
  43. VOID itohex( num, buffer )
  44. USHORT  num;
  45. CHAR    FAR *buffer; {
  46.     CHAR    FAR *out;
  47.     USHORT  shift, temp, mask=0xf000;
  48.  
  49.     out = buffer;
  50.     shift = 12;
  51.     while ( mask ) {
  52.         temp = num & mask;
  53.         temp >>= shift;
  54.  
  55.         temp += '0';
  56.         if ( temp > '9' )
  57.             temp += ( 'A'-'9'-1 );
  58.  
  59.         *out = (CHAR)temp;
  60.         out++;
  61.         shift -= 4;
  62.         mask >>= 4;
  63.         }
  64.  
  65.     buffer[4] = '\0';
  66.     }
  67.  
  68. /*=====================================================================*/
  69.  
  70. ULONG hextol( string )
  71. CHAR  FAR *string; {
  72.     static ULONG  num;
  73.  
  74.     num = 0;
  75.     while ( *string ) {
  76.         num *= 16;
  77.  
  78.         if ( *string >= '0' && *string <= '9' )
  79.             num += ( *string-'0' );
  80.          else if ( *string >= 'a' && *string <= 'f' )
  81.             num += ( *string-'a'+10 );
  82.          else if ( *string >= 'A' && *string <= 'F' )
  83.             num += ( *string-'A'+10 );
  84.          else
  85.              break;
  86.  
  87.         string++;
  88.         }
  89.  
  90.     return( num );
  91.     }
  92.  
  93. /*=====================================================================*/
  94.  
  95. VOID ltohex( num, buffer )
  96. ULONG  num;
  97. CHAR   FAR *buffer; {
  98.     CHAR          FAR *out;
  99.     static ULONG  temp, mask=0xf0000000L;
  100.     USHORT        shift;
  101.  
  102.     out = buffer;
  103.     shift = 28;
  104.     while ( mask ) {
  105.         temp = num & mask;
  106.         temp >>= shift;
  107.  
  108.         temp += '0';
  109.         if ( temp > '9' )
  110.             temp += ( 'A'-'9'-1 );
  111.  
  112.         *out = (CHAR)temp;
  113.         out++;
  114.         shift -= 4;
  115.         mask >>= 4;
  116.         }
  117.  
  118.     buffer[8] = '\0';
  119.     }
  120.  
  121. /*=====================================================================*/
  122.  
  123. USHORT atoin( string )
  124. CHAR  FAR *string; {
  125.     USHORT  value=0, count=0;
  126.  
  127.     while ( isanum( *(string+count)))
  128.         value = ( value*10 )+ *(string+count++)-'0';
  129.  
  130.     return( value );
  131.     }
  132.  
  133. /*=====================================================================*/
  134.  
  135. ULONG atoln( string )
  136. CHAR  FAR *string; {
  137.     ULONG   value=0;
  138.     USHORT  count=0;
  139.  
  140.     while ( isanum( *(string+count)))
  141.         value = ( value*10 )+ *(string+count++)-'0';
  142.  
  143.     return( value );
  144.     }
  145.  
  146. /*=====================================================================*/
  147.  
  148. BOOL isanum( ch )
  149. CHAR  ch; {
  150.     
  151.     if ( ch < '0' || ch > '9' )
  152.         return( FALSE );
  153.      else
  154.          return( TRUE );
  155.     }
  156.  
  157. /*=====================================================================*/