home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / lpr32.zip / test2.c < prev    next >
C/C++ Source or Header  |  2001-05-28  |  1KB  |  64 lines

  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "string.h"
  4. #include "os2.h"
  5.  
  6. char * lprtok (char *string,char *control)
  7. {
  8.         unsigned char *str;
  9.         const unsigned char *ctrl = control;
  10.  
  11.         unsigned char map[32];
  12.         int count;
  13.  
  14.         static char *nextoken;
  15.  
  16.         for (count = 0; count < 32; count++)
  17.                 map[count] = 0;
  18.  
  19.         do {
  20.                 map[*ctrl >> 3] |= (1 << (*ctrl & 7));
  21.         } while (*ctrl++);
  22.  
  23.         if (string)
  24.                 str = string;
  25.         else
  26.                 str = nextoken;
  27.  
  28.         while ( (map[*str >> 3] & (1 << (*str & 7))) && *str )
  29.                 str++;
  30.  
  31.         string = str;
  32.  
  33.         for ( ; *str ; str++ )
  34.                 if ( map[*str >> 3] & (1 << (*str & 7)) ) {
  35.                         *str++ = '\0';
  36.                         break;
  37.                 }
  38.  
  39.         nextoken = str;
  40.  
  41.         /* Determine if a token has been found. */
  42.         if ( string == str )
  43.                 return NULL;
  44.         else
  45.                 return string;
  46. }
  47.  
  48.  
  49. int main(int argc,char **argv)
  50. {
  51.   PUCHAR token;
  52.   UCHAR szTemp[80];
  53.   USHORT i;
  54.  
  55.   strcpy(szTemp,"param1:param2:param3");
  56.   token = lprtok(szTemp,":");
  57.   while (token != NULL)
  58.     {
  59.       printf("%s\n\r",token);
  60.       token = lprtok(NULL,":");
  61.     }
  62.   return 0;
  63. }
  64.