home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / CMDS / file.lzh / strextra.c < prev    next >
Text File  |  1995-04-27  |  2KB  |  98 lines

  1. /**************************************************
  2.  * strextra.c                                     *
  3.  **************************************************
  4.  * extra str functions for the OS-9 3.2 compiler. *
  5.  *************************************************/
  6.  
  7. #if defined(_OSK) && defined(_BSD)
  8.  
  9. #include <stdio.h>        /* For NULL */
  10.  
  11. char *scanpoint = NULL;
  12.  
  13. /* NULL if no token left */
  14. char *
  15. strtok(s, delim)
  16. char *s;
  17. register char *delim;
  18. {
  19.     register char *scan;
  20.     char *tok;
  21.     register char *dscan;
  22.  
  23.     if ((s == NULL) && (scanpoint == NULL))
  24.         return(NULL);
  25.  
  26.     if (s != NULL)
  27.         scan = s;
  28.     else
  29.         scan = scanpoint;
  30.  
  31.     /* Scan leading delimiters. */
  32.     for (; *scan != '\0'; scan++) {
  33.         for (dscan = delim; *dscan != '\0'; dscan++) {
  34.             if (*scan == *dscan)
  35.                 break;
  36.         }
  37.         if (*dscan == '\0')
  38.             break;
  39.     }
  40.  
  41.     if (*scan == '\0') {
  42.         scanpoint = NULL;
  43.         return(NULL);
  44.     }
  45.  
  46.     tok = scan;
  47.  
  48.     /* Scan token. */
  49.     for (; *scan != '\0'; scan++) {
  50.         for (dscan = delim; *dscan != '\0';) {   /* ++ moved down. */
  51.             if (*scan == *dscan++) {
  52.                 scanpoint = scan+1;
  53.                 *scan = '\0';
  54.                 return(tok);
  55.             }
  56.         }
  57.     }
  58.  
  59.     /* Reached end of string. */
  60.     scanpoint = NULL;
  61.     return(tok);
  62.  
  63. } /* end of strtok */
  64.  
  65. /*
  66.  * strspn - find length of initial segment of s consisting entirely
  67.  * of characters from accept
  68.  */
  69.  
  70. int strspn(s, accept)
  71. char *s;
  72. char *accept;
  73. {
  74.     register char *sscan;
  75.     register char *ascan;
  76.     register int  count;
  77.  
  78.     count = 0;
  79.     for (sscan = s; *sscan ; sscan++)
  80.     {
  81.         for (ascan = accept; *ascan ; ascan++)
  82.         {
  83.             if (*sscan == *ascan)
  84.                 break;
  85.         }
  86.         if (*ascan == '\0')
  87.             return(count);
  88.         count++;
  89.     }
  90.  
  91.     return(count);
  92.  
  93. } /* end of strspn */
  94.  
  95.  
  96. #endif
  97.  
  98.