home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / os2 / pmsw2.zip / CSOURCE / PMSW2 / MSKCHK.LST < prev    next >
File List  |  1993-04-20  |  51KB  |  487 lines

  1. PMSW2 Compilation                                                                              04/20/93 21:57:14     Page     1
  2.                                       * * * * *   P R O L O G   * * * * *
  3.  
  4.  Compiler . . . . . . . . . . . . : 10G2996/10G3293 IBM C Set/2 V1.0
  5.  Command options:
  6.     Program name. . . . . . . . . : E:\CSOURCE\PMSW2\MSKCHK.C
  7.     Object name . . . . . . . . . : MSKCHK.obj
  8.     Listing name. . . . . . . . . : MSKCHK.lst
  9.     Compiler options. . . . . . . : /C+  /Fa- /Fc- /Fd- /Fl+ /Fm- /Fo+ /Gd- /Ge- /Gf- /Gh- /Gm+ /Gn- /Gp- /Gr- /Gs- /Gt- /Gw- 
  10.                                   : /J+  /Ka- /Kb- /Kc- /Ke- /Kf- /Kg- /Ki- /Ko- /Kp- /Kr- /Kt- /Kx- /L+  /La+ /Le- /Lf- /Li- 
  11.                                   : /Lj- /Ls+ /Lx+ /O-  /P-  /Pc- /Pd- /Q-  /Sd- /Sh- /Sn- /Sr- /Ss- /Ti- /Ts- /Xi- 
  12.                                   : /Mp  /Re  /Se  /Sp4  /G3  /W3  /H255  /Lp60  /Sg-  /Sq-  /N  
  13.                                   : /I  
  14.                                   : /Lt PMSW2 Compilation
  15.                                   : /Lu 
  16.                                   : /B  
  17.                                   : /V  
  18. PMSW2 Compilation                                                                              04/20/93 21:57:14     Page     2
  19.                                           * * * * *   S O U R C E   * * * * *
  20.  
  21.  LINE  STMT                                                                                                       SEQNBR INCNO
  22.              *...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9.......*
  23.     1       |/*============================================================================                    |      1           
  24.     2       |  ┌──────────────────────────────────────────────────────────────────────┐                        |      2           
  25.     3       |  │ MSKCHK.C   (C) Copyright 1992 Bruce E. Högman.  All Rights Reserved. │                        |      3           
  26.     4       |  └──────────────────────────────────────────────────────────────────────┘                        |      4           
  27.     5       |  MSKCHK - Function to scan a given area for a match against a mask string                        |      5           
  28.     6       |  containing wild cards and constant characters.                                                  |      6           
  29.     7       |  This is an extension of the usual DOS wild-card filespec matching, as it                        |      7           
  30.     8       |  permits imbedded '*' and '?' and the mask is an arbitrary length.                               |      8           
  31.     9       |                                                                                                  |      9           
  32.    10       |  Input:  mask, mask_len, area, area_len, qmark, asterisk                                         |     10           
  33.    11       |          'qmark' is single-wild-card char, 'asterisk' is 0 to n wild chars.                      |     11           
  34.    12       |============================================================================*/                    |     12           
  35.    13       |#include <stddef.h>                                                                               |     13           
  36.    14       |#include <stdio.h>                                                                                |     14           
  37.    15       |#define ERROR  -1                                                                                 |     15           
  38.    16       |#define WARNING 4                                                                                 |     16           
  39.    17       |#define DONE   0x20 /* Whole mask is complete */                                                  |     17           
  40.    18       |#define MATCH  0x10 /* Whole mask is found/matched */                                             |     18           
  41.    19       |#define FAIL   0x08 /* Whole mask is not found */                                                 |     19           
  42.    20       |#define FLTFND 0x04 /* Mask float substr found */                                                 |     20           
  43.    21       |#ifndef FALSE                                                                                     |     21           
  44.    22       |#define FALSE  0                                                                                  |     22           
  45.    23       |#endif                                                                                            |     23           
  46.    24       |#ifndef TRUE                                                                                      |     24           
  47.    25       |#define TRUE  ~FALSE                                                                              |     25           
  48.    26       |#endif                                                                                            |     26           
  49.    27       |  unsigned long irc;                                                                              |     27           
  50.    28       |  unsigned long iflg;                                                                             |     28           
  51.    29       |  unsigned long iMaskOffset;                                                                      |     29           
  52.    30       |  unsigned long iAreaOffset;                                                                      |     30           
  53.    31       |  char *cMask;                                                                                    |     31           
  54.    32       |  unsigned long iMaskLen;                                                                         |     32           
  55.    33       |  char *cArea;                                                                                    |     33           
  56.    34       |  unsigned long iAreaLen;                                                                         |     34           
  57.    35       |  char *cQ;                                                                                       |     35           
  58.    36       |  char *cA;                                                                                       |     36           
  59.    37       |                                                                                                  |     37           
  60.    38       |/*=============                                                                                   |     38           
  61.    39       |  AString                                                                                         |     39           
  62.    40       |  Current mask character is "*" wild card.                                                        |     40           
  63.    41       |  (For "?" that appear after initial "*", process these.)                                         |     41           
  64.    42       |  We must scan mask string for its terminator.                                                    |     42           
  65.    43       |=============*/                                                                                   |     43           
  66.    44       |  static void AString (void)                                                                      |     44           
  67.    45       |{ unsigned long ixMaskOffset,      /* ptr '*' 2 in      *XXX* */                                  |     45           
  68.    46       |      iyMaskOffset;                                                                               |     46           
  69.    47       |  unsigned long ixAreaOffset, iyAreaOffset;                                                       |     47           
  70.    48       |  unsigned long iMatchCount, iwMaskLen;                                                           |     48           
  71.    49     1 |  while (TRUE)                     /* Process '*' and '?' at start */                             |     49           
  72.    50     2 |  { if (iflg & DONE) break;                                                                       |     50           
  73.    51       |                                                                                                  |     51           
  74.    52       |    if ((*cA != *(cMask+iMaskOffset))                                                             |     52           
  75.    53     4 |    &&  (*cQ != *(cMask+iMaskOffset))) break;                                                     |     53           
  76.    54       |                                                                                                  |     54           
  77.    55     6 |    while (*cA == *(cMask+iMaskOffset))                                                           |     55           
  78. PMSW2 Compilation                                                                              04/20/93 21:57:14     Page     3
  79.                                           * * * * *   S O U R C E   * * * * *
  80.  
  81.  LINE  STMT                                                                                                       SEQNBR INCNO
  82.              *...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9.......*
  83.    56     7 |    { iMaskOffset++;                                                                              |     56           
  84.    57     8 |      if (iMaskOffset >= iMaskLen) { iflg |= DONE+MATCH; break;}                                  |     57           
  85.    58       |    }                                                                                             |     58           
  86.    59    11 |    while (*cQ == *(cMask+iMaskOffset))                                                           |     59           
  87.    60    12 |    { if (iAreaOffset >= iAreaLen) { iflg |= DONE+FAIL; break;}                                   |     60           
  88.    61    15 |      else iAreaOffset++;                                                                         |     61           
  89.    62    16 |      if ((++iMaskOffset >= iMaskLen) && (iAreaOffset >= iAreaLen))                               |     62           
  90.    63    17 |      { iflg |= DONE+MATCH; break;}                                                               |     63           
  91.    64       |    }                                                                                             |     64           
  92.    65       |  }                                                                                               |     65           
  93.    66    19 |  if (iflg & DONE) return;                                                                        |     66           
  94.    67       |                                                                                                  |     67           
  95.    68       |    /* Look for mask string terminator. */                                                        |     68           
  96.    69       |    /* if no  terminator:  mask ends:    '*' marks suffix */                                      |     69           
  97.    70       |    /* if '*' terminator:  mask float:   process floating mask */                                 |     70           
  98.    71       |                                                                                                  |     71           
  99.    72    21 |  ixMaskOffset=iMaskOffset;                                                                       |     72           
  100.    73    22 |  while (++ixMaskOffset < iMaskLen)                                                               |     73           
  101.    74    23 |  { if (*cA == *(cMask+ixMaskOffset)) break;}                                                     |     74           
  102.    75    25 |  if (ixMaskOffset >= iMaskLen)         /* Mask is suffix */                                      |     75           
  103.    76    26 |  { iyMaskOffset = ixMaskOffset-1;      /* ptr last char in mask */                               |     76           
  104.    77    27 |    iyAreaOffset = iAreaLen - 1;        /* ptr last char in area */                               |     77           
  105.    78    28 |    while (TRUE)                                                                                  |     78           
  106.    79    29 |    { if (iflg & DONE) break;                                                                     |     79           
  107.    80    31 |      if (iyMaskOffset < iMaskOffset) iflg |= DONE+MATCH;                                         |     80           
  108.    81       |      else                                                                                        |     81           
  109.    82    33 |      { if (iyAreaOffset < iAreaOffset) iflg |= DONE+FAIL;                                        |     82           
  110.    83       |        else                                                                                      |     83           
  111.    84    35 |        { if (*(cMask+iyMaskOffset) != *(cArea+iyAreaOffset))                                     |     84           
  112.    85    36 |          { if (*(cMask+iyMaskOffset) == *cQ)                                                     |     85           
  113.    86    37 |            {iyMaskOffset--; iyAreaOffset--;}                                                     |     86           
  114.    87    39 |            else iflg |= DONE+FAIL;                                                               |     87           
  115.    88       |          }                                                                                       |     88           
  116.    89       |        }                                                                                         |     89           
  117.    90       |      }                                                                                           |     90           
  118.    91    40 |      iyMaskOffset--; iyAreaOffset--;                                                             |     91           
  119.    92       |    }                                                                                             |     92           
  120.    93    42 |    goto AStringReturn;                 /* return from AString */                                 |     93           
  121.    94       |  }                                                                                               |     94           
  122.    95       |                                                                                                  |     95           
  123.    96       |  /* We have case of imbedded *xxx* mask string */                                                |     96           
  124.    97       |                                                                                                  |     97           
  125.    98    43 |  iwMaskLen=ixMaskOffset-iMaskOffset;   /* length of *xxx* string or zero */                      |     98           
  126.    99    44 |  ixAreaOffset=iAreaOffset;             /* save ptr area */                                       |     99           
  127.   100    45 |  iMatchCount=0;                        /* count of matched chars */                              |    100           
  128.   101    46 |  while (ixAreaOffset < iAreaLen)       /* stop at end of area if not sooner */                   |    101           
  129.   102    47 |  { if (iwMaskLen <= 0) break;          /* no-op loop if length is zero */                        |    102           
  130.   103    49 |    if (iMatchCount > 0) break;         /* stop loop if here and not zero */                      |    103           
  131.   104    51 |    iyAreaOffset = ixAreaOffset;                                                                  |    104           
  132.   105    52 |    iyMaskOffset = iMaskOffset;                                                                   |    105           
  133.   106    53 |    while (iyMaskOffset < ixMaskOffset)                                                           |    106           
  134.   107    54 |    { if (iMatchCount >= iwMaskLen) break; /* stop if matches >= mask length */                   |    107           
  135.   108    56 |      if (*(cMask+iyMaskOffset) == *(cArea+iyAreaOffset))                                         |    108           
  136.   109    57 |      { iyMaskOffset++; iyAreaOffset++; iMatchCount++; }                                          |    109           
  137.   110       |      else                                                                                        |    110           
  138. PMSW2 Compilation                                                                              04/20/93 21:57:14     Page     4
  139.                                           * * * * *   S O U R C E   * * * * *
  140.  
  141.  LINE  STMT                                                                                                       SEQNBR INCNO
  142.              *...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9.......*
  143.   111    60 |      { if (*(cMask+iyMaskOffset) == *cQ)                                                         |    111           
  144.   112    61 |        { iMatchCount++; iyAreaOffset++; iyMaskOffset++; }                                        |    112           
  145.   113    64 |        else { iMatchCount = 0; break; }                                                          |    113           
  146.   114       |      }                                                                                           |    114           
  147.   115       |    }                                                                                             |    115           
  148.   116    66 |    if (iMatchCount < iwMaskLen) iMatchCount = 0;                                                 |    116           
  149.   117    68 |    ixAreaOffset++;                                                                               |    117           
  150.   118       |  }                                                                                               |    118           
  151.   119    69 |  if ((iMatchCount >= iwMaskLen) && (iwMaskLen > 0))                                              |    119           
  152.   120    70 |  { iflg |= FLTFND;                                                                               |    120           
  153.   121    71 |    iMaskOffset = ixMaskOffset; iAreaOffset = iyAreaOffset;                                       |    121           
  154.   122    73 |    if (iMaskOffset >= iMaskLen) iflg |= DONE+MATCH;                                              |    122           
  155.   123       |  }                                                                                               |    123           
  156.   124       |AStringReturn:                                                                                    |    124           
  157.   125    75 |  return;                                                                                         |    125           
  158.   126       |}                                                                                                 |    126           
  159.   127       |/*=============                                                                                   |    127           
  160.   128       |  PrefixString                                                                                    |    128           
  161.   129       |=============*/                                                                                   |    129           
  162.   130       |  static void PrefixString (void)                                                                 |    130           
  163.   131       |{ unsigned long ipMaskOffset;                                                                     |    131           
  164.   132    76 |  ipMaskOffset = iMaskOffset;                                                                     |    132           
  165.   133    77 |  while (++ipMaskOffset < iMaskLen)                                                               |    133           
  166.   134    78 |  { if (*cA == *(cMask+ipMaskOffset)) break;}                                                     |    134           
  167.   135    80 |  if (ipMaskOffset > iAreaLen) { iflg |= DONE+FAIL; return;}                                      |    135           
  168.   136    83 |  while (TRUE)                                                                                    |    136           
  169.   137    84 |  { if (iflg & DONE) break;                                                                       |    137           
  170.   138    86 |    if (*cA == *(cMask+iMaskOffset)) break;                                                       |    138           
  171.   139    88 |    if (iAreaOffset >= iAreaLen)                                                                  |    139           
  172.   140    89 |    { if (iMaskOffset >= iMaskLen) iflg |= DONE+MATCH; break;}                                    |    140           
  173.   141    92 |    if (iMaskOffset >= iMaskLen)                                                                  |    141           
  174.   142    93 |    { if (iAreaOffset >= iAreaLen) iflg |= DONE+MATCH;                                            |    142           
  175.   143    95 |      else iflg |= DONE+FAIL; break;                                                              |    143           
  176.   144       |    }                                                                                             |    144           
  177.   145    97 |    if (*(cMask+iMaskOffset) != *(cArea+iAreaOffset))                                             |    145           
  178.   146    98 |    { if (*cA != *(cMask+iMaskOffset))                                                            |    146           
  179.   147    99 |      { iflg |= DONE+FAIL; break;}                                                                |    147           
  180.   148       |    }                                                                                             |    148           
  181.   149   101 |    iMaskOffset++; iAreaOffset++;                                                                 |    149           
  182.   150       |  }                                                                                               |    150           
  183.   151   103 |  return;                                                                                         |    151           
  184.   152       |}                                                                                                 |    152           
  185.   153       |                                                                                                  |    153           
  186.   154       |                                                                                                  |    154           
  187.   155       |/*=============                                                                                   |    155           
  188.   156       |  mskchk                                                                                          |    156           
  189.   157       |=============*/                                                                                   |    157           
  190.   158       |                                                                                                  |    158           
  191.   159       |  unsigned long mskchk ( char *msk,     /* ptr mask string   */                                   |    159           
  192.   160       |                unsigned long msklen,   /* length of mask    */                                   |    160           
  193.   161       |               char *achk,              /* ptr area string   */                                   |    161           
  194.   162       |               unsigned long alen,      /* length of area    */                                   |    162           
  195.   163       |               char *q,                 /* ptr qmark char    */                                   |    163           
  196.   164       |               char *a )                /* ptr asterisk char */                                   |    164           
  197.   165       |                                                                                                  |    165           
  198. PMSW2 Compilation                                                                              04/20/93 21:57:14     Page     5
  199.                                           * * * * *   S O U R C E   * * * * *
  200.  
  201.  LINE  STMT                                                                                                       SEQNBR INCNO
  202.              *...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9.......*
  203.   166   104 |{ cMask=msk; iMaskLen=msklen; cArea=achk; iAreaLen=alen; cQ=q; cA=a;                              |    166           
  204.   167   110 |  irc=0; iflg=0; iMaskOffset=0; iAreaOffset = 0;                                                  |    167           
  205.   168   114 |  if (msk==NULL||achk==NULL||q==NULL||a==NULL||msklen<=0||alen<=0)                                |    168           
  206.   169   115 |  { return ERROR;}                      /* Error if null argument(s) */                           |    169           
  207.   170       |                                                                                                  |    170           
  208.   171   116 |  while (*(cArea+iAreaOffset) == ' ')   /* Scan for 1st non-blank */                              |    171           
  209.   172   117 |  { iAreaOffset++; if (iAreaOffset >= iAreaLen) return WARNING;}                                  |    172           
  210.   173       |    /* Scan for last non-blank and non-null */                                                    |    173           
  211.   174   120 |  while (*(cArea+iAreaLen-1) == ' ' || *(cArea+iAreaLen-1) == '\0')                               |    174           
  212.   175   121 |  { iAreaLen--; if (iAreaLen <= iAreaOffset) return ERROR;}                                       |    175           
  213.   176       |                                                                                                  |    176           
  214.   177   124 |  while (!(iflg & DONE))                                                                          |    177           
  215.   178   125 |  { if (iMaskOffset >= iMaskLen) break;                                                           |    178           
  216.   179   127 |    while (*cQ == *(cMask+iMaskOffset)) /* while '?' in mask */                                   |    179           
  217.   180   128 |    { if (iflg & DONE) break;                                                                     |    180           
  218.   181   130 |      iMaskOffset++; iAreaOffset++;                                                               |    181           
  219.   182   132 |      if (iAreaOffset >= iAreaLen)          /* if area is exhausted */                            |    182           
  220.   183   133 |      { if (iMaskOffset >= iMaskLen)        /* and mask is exhausted */                           |    183           
  221.   184   134 |        { iflg |= DONE+MATCH;}               /* we're done and matched */                         |    184           
  222.   185       |        else                                                                                      |    185           
  223.   186   135 |        { if ((iMaskOffset+1>=iMaskLen) && (*cA == *(cMask+iMaskOffset+1)))                       |    186           
  224.   187   136 |          { iflg |= DONE+MATCH;}            /* if the last mask char is ast */                    |    187           
  225.   188       |          else                              /* we're matched */                                   |    188           
  226.   189   137 |          { iflg |= DONE+FAIL;}             /* otherwise failed */                                |    189           
  227.   190   138 |        } break;                                                                                  |    190           
  228.   191       |      }                                                                                           |    191           
  229.   192   139 |      if (iMaskOffset >= iMaskLen)                                                                |    192           
  230.   193   140 |      { iflg |= DONE;                                                                             |    193           
  231.   194   141 |        if (iAreaOffset < iAreaLen)                                                               |    194           
  232.   195   142 |        { if (*cQ == *(cMask+iMaskOffset-1)) iflg |= FAIL; }                                      |    195           
  233.   196   144 |        break;                                                                                    |    196           
  234.   197       |      }                                                                                           |    197           
  235.   198       |    }                                                                                             |    198           
  236.   199   145 |    if (iflg & DONE) break;                                                                       |    199           
  237.   200   147 |    if (*cA == *(cMask+iMaskOffset))    /* start of float str */                                  |    200           
  238.   201   148 |    { iMaskOffset++;                                                                              |    201           
  239.   202   149 |      if (iMaskOffset >= iMaskLen)          /* if mask is exhausted */                            |    202           
  240.   203   150 |      { iflg |= DONE;                                                                             |    203           
  241.   204   151 |        if (iAreaOffset < iAreaLen)         /* but area is not      */                            |    204           
  242.   205   152 |        { if (*cA==*(cMask+iMaskOffset-1))  /* but last mask char is asterisk */                  |    205           
  243.   206   153 |          { iflg |= MATCH;}                                                                       |    206           
  244.   207       |        }                                                                                         |    207           
  245.   208   154 |        else  iflg |= MATCH;           /* area is complete */                                     |    208           
  246.   209   155 |        break;                                                                                    |    209           
  247.   210       |      }                                                                                           |    210           
  248.   211   156 |      AString();                                                                                  |    211           
  249.   212       |    }                                                                                             |    212           
  250.   213   157 |    else PrefixString();                                                                          |    213           
  251.   214       |  }                                                                                               |    214           
  252.   215   158 |  if (iflg & FAIL) irc = 8;                                                                       |    215           
  253.   216   160 |  else irc = 0;                                                                                   |    216           
  254.   217       |  /* printf("MSKCHKRC=%i\n",irc); */                                                              |    217           
  255.   218   161 |  return irc;                                                                                     |    218           
  256.   219       |}                                                                                                 |    219           
  257.                                     * * * * *   E N D   O F   S O U R C E   * * * * *
  258. PMSW2 Compilation                                                                              04/20/93 21:57:14     Page     6
  259.                         * * * * *   I N C L U D E S   * * * * *
  260.  
  261. INCLUDE FILES  ---  FILE#   NAME
  262.                       1       G:\IBMC\INCLUDE\STDDEF.H
  263.                       2       G:\IBMC\INCLUDE\STDIO.H
  264.  
  265.                         * * * * *   E N D   O F   I N C L U D E S   * * * * *
  266. PMSW2 Compilation                                                                              04/20/93 21:57:14     Page     7
  267.                                 * * * * *   C R O S S   R E F E R E N C E   L I S T I N G   * * * * *
  268.  
  269. IDENTIFIER          DEFINITION      ATTRIBUTES
  270.                                     <SEQNBR>-<FILE NO>:<FILE LINE NO>
  271.  
  272. AString             44-0:44         Class = static,                                                                               
  273.                                     Type =  _Optlink function returning void 
  274.                                     211-0:211 
  275.  
  276. AStringReturn       93-0:93         label                                                                                         
  277.  
  278. FILE                14-2:47         typedef                                                                                       
  279.                                     Type =  structure __file
  280.  
  281. PrefixString        130-0:130       Class = static,                                                                               
  282.                                     Type =  _Optlink function returning void 
  283.                                     213-0:213 
  284.  
  285. _OPERATIONS         14-2:30         Class = tag, Length = 1,                                                                      
  286.                                     Type =  enum 
  287.                                     14-2:45 
  288.  
  289. __file              14-2:36         Class = tag, Type = structure                                                                 
  290.  
  291. __fpos_t            14-2:50         Class = tag, Type = structure                                                                 
  292.  
  293. __va_list           14-2:79         typedef                                                                                       
  294.                                     Type =  pointer to unsigned character 
  295.  
  296. a                   164-0:164       Class = parameter, Length = 4,                                                                
  297.                                     Type =  pointer to unsigned character 
  298.                                     166-0:166, 168-0:168 
  299.  
  300. achk                161-0:161       Class = parameter, Length = 4,                                                                
  301.                                     Type =  pointer to unsigned character 
  302.                                     166-0:166, 168-0:168 
  303.  
  304. alen                162-0:162       Class = parameter, Length = 4,                                                                
  305.                                     Type =  unsigned long integer 
  306.                                     166-0:166, 168-0:168 
  307.  
  308. cA                  36-0:36         Class = external definition, Length = 4,                                                      
  309.                                     Type =  pointer to unsigned character 
  310.  
  311. cArea               33-0:33         Class = external definition, Length = 4,                                                      
  312.                                     Type =  pointer to unsigned character 
  313.  
  314. cMask               31-0:31         Class = external definition, Length = 4,                                                      
  315.                                     Type =  pointer to unsigned character 
  316.  
  317. cQ                  35-0:35         Class = external definition, Length = 4,                                                      
  318.                                     Type =  pointer to unsigned character 
  319.  
  320. fpos_t              14-2:53         typedef                                                                                       
  321.                                     Type =  structure __fpos_t
  322.  
  323. iAreaLen            34-0:34         Class = external definition, Length = 4,                                                      
  324.                                     Type =  unsigned long integer 
  325.                                     60-0:60, 62-0:62, 77-0:77, 101-0:101, 135-0:135, 139-0:139, 142-0:142, 166-0:166,
  326. PMSW2 Compilation                                                                              04/20/93 21:57:14     Page     8
  327.                                 * * * * *   C R O S S   R E F E R E N C E   L I S T I N G   * * * * *
  328.  
  329. IDENTIFIER          DEFINITION      ATTRIBUTES
  330.                                     <SEQNBR>-<FILE NO>:<FILE LINE NO>
  331.                                     172-0:172, 174-0:174, 174-0:174, 175-0:175, 175-0:175, 182-0:182, 194-0:194, 204-0:204 
  332.  
  333. iAreaOffset         30-0:30         Class = external definition, Length = 4,                                                      
  334.                                     Type =  unsigned long integer 
  335.                                     60-0:60, 61-0:61, 62-0:62, 82-0:82, 99-0:99, 121-0:121, 139-0:139, 142-0:142, 145-0:145,
  336.                                     149-0:149, 167-0:167, 171-0:171, 172-0:172, 172-0:172, 175-0:175, 181-0:181, 182-0:182,
  337.                                     194-0:194, 204-0:204 
  338.  
  339. iMaskLen            32-0:32         Class = external definition, Length = 4,                                                      
  340.                                     Type =  unsigned long integer 
  341.                                     57-0:57, 62-0:62, 73-0:73, 75-0:75, 122-0:122, 133-0:133, 140-0:140, 141-0:141, 166-0:166,
  342.                                     178-0:178, 183-0:183, 186-0:186, 192-0:192, 202-0:202 
  343.  
  344. iMaskOffset         29-0:29         Class = external definition, Length = 4,                                                      
  345.                                     Type =  unsigned long integer 
  346.                                     52-0:52, 53-0:53, 55-0:55, 56-0:56, 57-0:57, 59-0:59, 62-0:62, 72-0:72, 80-0:80,
  347.                                     98-0:98, 105-0:105, 121-0:121, 122-0:122, 132-0:132, 138-0:138, 140-0:140, 141-0:141,
  348.                                     145-0:145, 146-0:146, 149-0:149, 167-0:167, 178-0:178, 179-0:179, 181-0:181, 183-0:183,
  349.                                     186-0:186, 186-0:186, 192-0:192, 195-0:195, 200-0:200, 201-0:201, 202-0:202, 205-0:205 
  350.  
  351. iMatchCount         48-0:48         Class = automatic, Length = 4,                                                                
  352.                                     Type =  unsigned long integer 
  353.                                     100-0:100, 103-0:103, 107-0:107, 109-0:109, 112-0:112, 113-0:113, 116-0:116, 116-0:116,
  354.                                     119-0:119 
  355.  
  356. iflg                28-0:28         Class = external definition, Length = 4,                                                      
  357.                                     Type =  unsigned long integer 
  358.                                     50-0:50, 57-0:57, 60-0:60, 63-0:63, 66-0:66, 79-0:79, 80-0:80, 82-0:82, 87-0:87,
  359.                                     120-0:120, 122-0:122, 135-0:135, 137-0:137, 140-0:140, 142-0:142, 143-0:143, 147-0:147,
  360.                                     167-0:167, 177-0:177, 180-0:180, 184-0:184, 187-0:187, 189-0:189, 193-0:193, 195-0:195,
  361.                                     199-0:199, 203-0:203, 206-0:206, 208-0:208, 215-0:215 
  362.  
  363. ipMaskOffset        131-0:131       Class = automatic, Length = 4,                                                                
  364.                                     Type =  unsigned long integer 
  365.                                     132-0:132, 133-0:133, 134-0:134, 135-0:135 
  366.  
  367. irc                 27-0:27         Class = external definition, Length = 4,                                                      
  368.                                     Type =  unsigned long integer 
  369.                                     167-0:167, 215-0:215, 216-0:216, 218-0:218 
  370.  
  371. iwMaskLen           48-0:48         Class = automatic, Length = 4,                                                                
  372.                                     Type =  unsigned long integer 
  373.                                     98-0:98, 102-0:102, 107-0:107, 116-0:116, 119-0:119, 119-0:119 
  374.  
  375. ixAreaOffset        47-0:47         Class = automatic, Length = 4,                                                                
  376.                                     Type =  unsigned long integer 
  377.                                     99-0:99, 101-0:101, 104-0:104, 117-0:117 
  378.  
  379. ixMaskOffset        45-0:45         Class = automatic, Length = 4,                                                                
  380.                                     Type =  unsigned long integer 
  381.                                     72-0:72, 73-0:73, 74-0:74, 75-0:75, 76-0:76, 98-0:98, 106-0:106, 121-0:121 
  382.  
  383. iyAreaOffset        47-0:47         Class = automatic, Length = 4,                                                                
  384.                                     Type =  unsigned long integer 
  385.                                     77-0:77, 82-0:82, 84-0:84, 86-0:86, 91-0:91, 104-0:104, 108-0:108, 109-0:109, 112-0:112,
  386. PMSW2 Compilation                                                                              04/20/93 21:57:14     Page     9
  387.                                 * * * * *   C R O S S   R E F E R E N C E   L I S T I N G   * * * * *
  388.  
  389. IDENTIFIER          DEFINITION      ATTRIBUTES
  390.                                     <SEQNBR>-<FILE NO>:<FILE LINE NO>
  391.                                     121-0:121 
  392.  
  393. iyMaskOffset        46-0:46         Class = automatic, Length = 4,                                                                
  394.                                     Type =  unsigned long integer 
  395.                                     76-0:76, 80-0:80, 84-0:84, 85-0:85, 86-0:86, 91-0:91, 105-0:105, 106-0:106, 108-0:108,
  396.                                     109-0:109, 111-0:111, 112-0:112 
  397.  
  398. msk                 159-0:159       Class = parameter, Length = 4,                                                                
  399.                                     Type =  pointer to unsigned character 
  400.                                     166-0:166, 168-0:168 
  401.  
  402. mskchk              159-0:159       Class = external definition,                                                                  
  403.                                     Type =  _Optlink function returning unsigned long integer 
  404.  
  405. msklen              160-0:160       Class = parameter, Length = 4,                                                                
  406.                                     Type =  unsigned long integer 
  407.                                     166-0:166, 168-0:168 
  408.  
  409. ptrdiff_t           13-1:25         typedef                                                                                       
  410.                                     Type =  signed integer 
  411.  
  412. q                   163-0:163       Class = parameter, Length = 4,                                                                
  413.                                     Type =  pointer to unsigned character 
  414.                                     166-0:166, 168-0:168 
  415.  
  416. size_t              13-1:29         typedef                                                                                       
  417.                                     Type =  unsigned integer 
  418.  
  419. wchar_t             13-1:34         typedef                                                                                       
  420.                                     Type =  unsigned short integer 
  421.  
  422.                          * * * * *   E N D   O F   C R O S S   R E F E R E N C E   L I S T I N G   * * * * *
  423. PMSW2 Compilation                                                                              04/20/93 21:57:14     Page    10
  424.                                   * * * * *   S T R U C T U R E   M A P S   * * * * *
  425.  
  426. ===================================================================================================================================
  427. | Aggregate map for: structure __file                                                           Total Size: 28 bytes              |
  428. |=================================================================================================================================|
  429. |      Offset       |      Length       | Member Name                                                                             |
  430. |    Bytes(Bits)    |    Bytes(Bits)    |                                                                                         |
  431. |===================|===================|=========================================================================================|
  432. |       0           |       4           |  bufPtr                                                                                 |
  433. |       4           |       4           |  count                                                                                  |
  434. |       8           |       4           |  userFlags                                                                              |
  435. |      12           |       4           |  bufLen                                                                                 |
  436. |      16           |       4           |  ungetCount                                                                             |
  437. |      20           |       4           |  tempStore                                                                              |
  438. |      24           |       2           |  ungetBuf[2]                                                                            |
  439. |      26           |       1           |  lastOp                                                                                 |
  440. |      27           |       1           |  filler                                                                                 |
  441. ===================================================================================================================================
  442.  
  443. ===================================================================================================================================
  444. | Aggregate map for: _Packed structure __file                                                   Total Size: 28 bytes              |
  445. |=================================================================================================================================|
  446. |      Offset       |      Length       | Member Name                                                                             |
  447. |    Bytes(Bits)    |    Bytes(Bits)    |                                                                                         |
  448. |===================|===================|=========================================================================================|
  449. |       0           |       4           |  bufPtr                                                                                 |
  450. |       4           |       4           |  count                                                                                  |
  451. |       8           |       4           |  userFlags                                                                              |
  452. |      12           |       4           |  bufLen                                                                                 |
  453. |      16           |       4           |  ungetCount                                                                             |
  454. |      20           |       4           |  tempStore                                                                              |
  455. |      24           |       2           |  ungetBuf[2]                                                                            |
  456. |      26           |       1           |  lastOp                                                                                 |
  457. |      27           |       1           |  filler                                                                                 |
  458. ===================================================================================================================================
  459.  
  460. ===================================================================================================================================
  461. | Aggregate map for: structure __fpos_t                                                         Total Size: 8 bytes               |
  462. |=================================================================================================================================|
  463. |      Offset       |      Length       | Member Name                                                                             |
  464. |    Bytes(Bits)    |    Bytes(Bits)    |                                                                                         |
  465. |===================|===================|=========================================================================================|
  466. |       0           |       8           |  __fpos_elem[2]                                                                         |
  467. ===================================================================================================================================
  468.  
  469. ===================================================================================================================================
  470. | Aggregate map for: _Packed structure __fpos_t                                                 Total Size: 8 bytes               |
  471. |=================================================================================================================================|
  472. |      Offset       |      Length       | Member Name                                                                             |
  473. |    Bytes(Bits)    |    Bytes(Bits)    |                                                                                         |
  474. |===================|===================|=========================================================================================|
  475. |       0           |       8           |  __fpos_elem[2]                                                                         |
  476. ===================================================================================================================================
  477.  
  478.                            * * * * *   E N D   O F   S T R U C T U R E   M A P S   * * * * *
  479. PMSW2 Compilation                                                                              04/20/93 21:57:14     Page    11
  480.                              * * * * *   M E S S A G E   S U M M A R Y   * * * * *
  481.  
  482.         Total            Informational(00)          Warning(10)          Error(30)            Severe Error(40)
  483.  
  484.           0                    0                        0                   0                        0
  485.  
  486.                         * * * * *   E N D   O F   M E S S A G E   S U M M A R Y   * * * * *
  487.