home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume18 / mcqueer-lib / strtok.c < prev   
Encoding:
C/C++ Source or Header  |  1989-11-09  |  894 b   |  61 lines

  1. #include <stdio.h>
  2.  
  3. /*
  4. ** strtok() is a routine present in SYSV and some BSD runtime libraries.
  5. ** Use this if it isn't in yours.
  6. */
  7.  
  8. static char *Save=NULL;
  9.  
  10. char *index ();
  11. static char *first_ch (), *last_ch();
  12.  
  13. char *
  14. strtok(str,delim)
  15. char *str, *delim;
  16. {
  17.     register char *tokstart, *tokend;
  18.  
  19.     if (str != NULL)
  20.         Save = str;
  21.  
  22.     if (Save == NULL)
  23.         return (NULL);
  24.  
  25.     tokstart = first_ch (Save, delim);
  26.     tokend = last_ch (tokstart, delim);
  27.     Save = first_ch (tokend, delim);
  28.     *tokend = '\0';
  29.  
  30.     if (*tokstart == '\0')
  31.         return (NULL);
  32.  
  33.     return (tokstart);
  34. }
  35.  
  36. static char *
  37. first_ch (str,delim)
  38. char *str;
  39. register char *delim;
  40. {
  41.     register char *f;
  42.  
  43.     for (f = str; *f != '\0' && index(delim,*f) != NULL; ++f)
  44.         ;
  45.  
  46.     return (f);
  47. }
  48.  
  49. static char *
  50. last_ch (str,delim)
  51. char *str;
  52. register char *delim;
  53. {
  54.     register char *f;
  55.  
  56.     for (f = str; *f != '\0' && index(delim,*f) == NULL; ++f)
  57.         ;
  58.  
  59.     return (f);
  60. }
  61.