home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / hpfsut02.zip / source.zip / SupportFunctions.c < prev    next >
C/C++ Source or Header  |  1999-11-22  |  5KB  |  216 lines

  1. #include <os2.h>
  2. #include <string.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. #include "Defines.h"
  7. #include "Structures.h"
  8. #include "SupportFunctions.h"
  9.  
  10. PFUNCRETURN ParseSectValues(PUCHAR range, PULONG begin, PULONG end)
  11. {
  12.     static FUNCRETURN fr;
  13.     PFUNCRETURN pfr;
  14.     UCHAR currFunc[]="ParseSectValues";
  15.  
  16.     memset(&fr, 0, sizeof(fr));
  17.  
  18.     if (strchr(range, '-')==NULL)
  19.         {
  20.         pfr=GetValue(range, begin);
  21.         if (!pfr->success)
  22.             {
  23.             fr.success=FALSE;
  24.             strcpy(fr.errorFunc, pfr->errorFunc);
  25.             strcpy(fr.errorHome, pfr->errorHome);
  26.             fr.errorCode=0;
  27.             return &fr;
  28.             }
  29.         *end=*begin;
  30.         }
  31.     else
  32.         {
  33.         UCHAR sbuf[256];
  34.         strcpy(sbuf, strchr(range, '-'));
  35.         RightJustify(sbuf, strlen(sbuf)-1);
  36.         pfr=GetValue(sbuf, end);
  37.         if (!pfr->success)
  38.             {
  39.             fr.success=FALSE;
  40.             strcpy(fr.errorFunc, pfr->errorFunc);
  41.             strcpy(fr.errorHome, pfr->errorHome);
  42.             fr.errorCode=0;
  43.             return &fr;
  44.             }
  45.         strrev(range);
  46.         sbuf[0]=0x00;
  47.         strcpy(sbuf, strchr(range, '-'));
  48.         RightJustify(sbuf, strlen(sbuf)-1);
  49.         strrev(sbuf);
  50.         pfr=GetValue(sbuf, begin);
  51.         if (!pfr->success)
  52.             {
  53.             fr.success=FALSE;
  54.             strcpy(fr.errorFunc, pfr->errorFunc);
  55.             strcpy(fr.errorHome, pfr->errorHome);
  56.             fr.errorCode=0;
  57.             return &fr;
  58.             }
  59.         if (*begin>*end)
  60.             {
  61.             fr.success=FALSE;
  62.             strcpy(fr.errorFunc, "endbeforebegin");
  63.             strcpy(fr.errorHome, currFunc);
  64.             fr.errorCode=0;
  65.             return &fr;
  66.             }
  67.         }
  68.  
  69.     fr.success=TRUE;
  70.     return &fr;
  71. }
  72.  
  73. PFUNCRETURN GetValue(PUCHAR vstring, PULONG num)
  74. {
  75.     static FUNCRETURN fr;
  76.     UCHAR currFunc[]="GetValue";
  77.  
  78.     memset(&fr, 0, sizeof(fr));
  79.  
  80.     if (!strcmp(vstring, "0"))
  81.         {
  82.         *num=0;
  83.         }
  84.     else if (!stricmp(vstring, "SUPER"))
  85.         {
  86.         *num=SUPERLOC;
  87.         }
  88.     else if (!stricmp(vstring, "SPARE"))
  89.         {
  90.         *num=SPARELOC;
  91.         }
  92.     else if (!stricmp(vstring, "BOOT"))
  93.         {
  94.         *num=0;
  95.         }
  96.     else
  97.         {
  98.         *num=(ULONG)atol(vstring);
  99.         if (num==0)
  100.             {
  101.             fr.success=FALSE;
  102.             strcpy(fr.errorFunc, vstring);
  103.             strcpy(fr.errorHome, currFunc);
  104.             fr.errorCode=0;
  105.             return &fr;
  106.             }
  107.         }
  108.  
  109.     fr.success=TRUE;
  110.     return &fr;
  111. }
  112.  
  113. PUCHAR fCodel(double number)
  114. {
  115.     UCHAR numString[33], scrap[10];
  116.     static UCHAR rString[30];
  117.  
  118.     memset(numString, 0, sizeof(numString));
  119.  
  120.     sprintf(numString, "%.0f", number);
  121.     strrev(numString);
  122.  
  123.     memset(rString, 0, sizeof(rString));
  124.  
  125.     while (strlen(numString)>3)
  126.         {
  127.         strcat(rString, StrLeft(numString, 3, scrap));
  128.         strcat(rString, ",");
  129.         RightJustify(numString, strlen(numString)-3);
  130.         }
  131.  
  132.     strcat(rString, numString);
  133.     strrev(rString);
  134.  
  135.     return rString;
  136. }
  137.  
  138. PUCHAR iCodel(ULONG number)
  139. {
  140.     UCHAR numString[33], scrap[10];
  141.     static UCHAR rString[13];
  142.  
  143.     memset(numString, 0, sizeof(numString));
  144.  
  145.     sprintf(numString, "%u", number);
  146.     strrev(numString);
  147.  
  148.     memset(rString, 0, sizeof(rString));
  149.  
  150.     while (strlen(numString)>3)
  151.         {
  152.         strcat(rString, StrLeft(numString, 3, scrap));
  153.         strcat(rString, ",");
  154.         RightJustify(numString, strlen(numString)-3);
  155.         }
  156.  
  157.     strcat(rString, numString);
  158.     strrev(rString);
  159.  
  160.     return rString;
  161. }
  162.  
  163. PUCHAR StrLeft(PUCHAR theString, ULONG length, PUCHAR rString)
  164. {
  165.     memset(rString, 0, length+1);
  166.  
  167.     strncpy(rString, theString, length);
  168.  
  169.     return rString;
  170. }
  171.  
  172. PUCHAR RightJustify(PUCHAR theString, ULONG newLength)
  173. {
  174.     ULONG i, slen, begin;
  175.  
  176.     slen=strlen(theString);
  177.     begin=slen-newLength;
  178.  
  179.     for (i=begin; i<slen; i++)
  180.         {
  181.         theString[i-begin]=theString[i];
  182.         }
  183.     theString[newLength]=0x00;
  184.  
  185.     return theString;
  186. }
  187.  
  188. PUCHAR BitString(UCHAR bstring)
  189. {
  190.     BYTEBITFIELD bf;
  191.     static UCHAR rstring[17];
  192.     LONG i;
  193.  
  194.     memcpy(&bf, &bstring, 1);
  195.     memset(rstring, 0, sizeof(rstring));
  196.  
  197.     rstring[0]='0'+bf.bit7;
  198.     rstring[1]=' ';
  199.     rstring[2]='0'+bf.bit6;
  200.     rstring[3]=' ';
  201.     rstring[4]='0'+bf.bit5;
  202.     rstring[5]=' ';
  203.     rstring[6]='0'+bf.bit4;
  204.     rstring[7]=' ';
  205.     rstring[8]='0'+bf.bit3;
  206.     rstring[9]=' ';
  207.     rstring[10]='0'+bf.bit2;
  208.     rstring[11]=' ';
  209.     rstring[12]='0'+bf.bit1;
  210.     rstring[13]=' ';
  211.     rstring[14]='0'+bf.bit0;
  212.     rstring[15]=' ';
  213.  
  214.     return rstring;
  215. }
  216.