]> git.hungrycats.org Git - linux/commitdiff
[PATCH] The last? strtok fixes.
authorDave Jones <davej@suse.de>
Wed, 3 Apr 2002 08:43:56 +0000 (00:43 -0800)
committerDave Jones <davej@suse.de>
Wed, 3 Apr 2002 08:43:56 +0000 (00:43 -0800)
Hopefully this is all of them..

arch/s390/kernel/s390_ksyms.c
arch/s390x/kernel/s390_ksyms.c
drivers/net/wan/sdla_ppp.c
drivers/scsi/aic7xxx/aic7xxx_linux.c
drivers/scsi/aic7xxx_old.c
drivers/scsi/tmscsim.c
drivers/video/amifb.c
drivers/video/atafb.c
drivers/video/aty/atyfb_base.c

index 617db282d55021e4371d62a7e132b11c6b94468c..e286bdd588b13c8aa2a3862eee8ea05eac96a9fa 100644 (file)
@@ -44,7 +44,7 @@ EXPORT_SYMBOL_NOVERS(strncpy);
 EXPORT_SYMBOL_NOVERS(strnlen);
 EXPORT_SYMBOL_NOVERS(strrchr);
 EXPORT_SYMBOL_NOVERS(strstr);
-EXPORT_SYMBOL_NOVERS(strtok);
+EXPORT_SYMBOL_NOVERS(strsep);
 EXPORT_SYMBOL_NOVERS(strpbrk);
 
 /*
index 5b9415126e79632b04150889d92f5c7c39eec346..edfb5f66663bd26b412e7cdc281d46b34f12d175 100644 (file)
@@ -47,7 +47,7 @@ EXPORT_SYMBOL_NOVERS(strncpy);
 EXPORT_SYMBOL_NOVERS(strnlen);
 EXPORT_SYMBOL_NOVERS(strrchr);
 EXPORT_SYMBOL_NOVERS(strstr);
-EXPORT_SYMBOL_NOVERS(strtok);
+EXPORT_SYMBOL_NOVERS(strsep);
 EXPORT_SYMBOL_NOVERS(strpbrk);
 
 /*
index 73a9d033e8c65283064401b39d41d1bad9b353a7..f3badbcdf3f687a7a6d35fb11efe773b31f693f0 100644 (file)
@@ -1463,11 +1463,11 @@ static int tokenize (char *str, char **tokens)
 {
         int cnt = 0;
 
-        tokens[0] = strtok(str, "/");
+        tokens[0] = strsep(&str, "/");
         while (tokens[cnt] && (cnt < 32 - 1))
         {
                 tokens[cnt] = strstrip(tokens[cnt], " \t");
-                tokens[++cnt] = strtok(NULL, "/");
+                tokens[++cnt] = strsep(&str, "/");
         }
        return cnt;
 }
index 5e0029feecc8d7484f591add9ab3dae3ded755ac..2edba37b5aa15a176611eb4a7843eaa2b3dcbd58 100644 (file)
@@ -906,7 +906,7 @@ ahc_softc_comp(struct ahc_softc *lahc, struct ahc_softc *rahc)
 }
 
 static void
-ahc_linux_setup_tag_info(char *p, char *end)
+ahc_linux_setup_tag_info(char *p, char *end, char *s)
 {
        char    *base;
        char    *tok;
@@ -986,7 +986,7 @@ ahc_linux_setup_tag_info(char *p, char *end)
                }
        }
        while ((p != base) && (p != NULL))
-               p = strtok(NULL, ",.");
+               p = strsep(&s, ",.");
 }
 
 /*
@@ -1018,7 +1018,8 @@ aic7xxx_setup(char *s)
 
        end = strchr(s, '\0');
 
-       for (p = strtok(s, ",."); p; p = strtok(NULL, ",.")) {
+       while ((p = strsep(&s, ",.")) != NULL) {
+               if (!*p) continue;
                for (i = 0; i < NUM_ELEMENTS(options); i++) {
                        n = strlen(options[i].name);
 
@@ -1026,7 +1027,7 @@ aic7xxx_setup(char *s)
                                continue;
 
                        if (strncmp(p, "tag_info", n) == 0) {
-                               ahc_linux_setup_tag_info(p + n, end);
+                               ahc_linux_setup_tag_info(p + n, end, s);
                        } else if (p[n] == ':') {
                                *(options[i].flag) =
                                    simple_strtoul(p + n + 1, NULL, 0);
index 0c64cd55f048c2253b662ed03db6905c97796f1b..86c41aae013f67b324c8297f02c2219a2f75d047 100644 (file)
@@ -1443,7 +1443,7 @@ aic7xxx_setup(char *s)
 
   end = strchr(s, '\0');
 
-  for (p = strtok(s, ",."); p; p = strtok(NULL, ",."))
+  while ((p = strsep(&s, ",.")) != NULL)
   {
     for (i = 0; i < NUMBER(options); i++)
     {
@@ -1525,7 +1525,7 @@ aic7xxx_setup(char *s)
               }
             }
             while((p != base) && (p != NULL))
-              p = strtok(NULL, ",.");
+              p = strsep(&s, ",.");
           }
         }
         else if (p[n] == ':')
index 24ab2201138880a846b27701a8186e234bf2a548..ea61de3cacb632485f90e0806bb818a826dfb13a 100644 (file)
@@ -2468,68 +2468,68 @@ void dc390_sendstart (PACB pACB, PDCB pDCB)
  * '-' means no change
  *******************************************************************/
 
-static int dc390_scanf (char** p1, char** p2, int* var)
+static int dc390_scanf (char** buffer, char** pos, char** p0, int* var)
 {
-   *p2 = *p1;
-   *var = simple_strtoul (*p2, p1, 10);
-   if (*p2 == *p1) return -1;
-   *p1 = strtok (0, " \t\n:=,;.");
+   *p0 = *pos;
+   *var = simple_strtoul (*p0, pos, 10);
+   if (*p0 == *pos) return -1;
+   *pos = strsep (buffer, " \t\n:=,;.");
    return 0;
 };
 
-#define SCANF(p1, p2, var, min, max)           \
-if (dc390_scanf (&p1, &p2, &var)) goto einv;   \
+#define SCANF(buffer, pos, p0, var, min, max)          \
+if (dc390_scanf (&buffer, &pos, &p0, &var)) goto einv; \
 else if (var<min || var>max) goto einv2
 
-static int dc390_yesno (char** p, char* var, char bmask)
+static int dc390_yesno (char** buffer, char** pos, char* var, char bmask)
 {
-   switch (**p)
+   switch (**pos)
      {
       case 'Y': *var |= bmask; break;
       case 'N': *var &= ~bmask; break;
       case '-': break;
       default: return -1;
      }
-   *p = strtok (0, " \t\n:=,;");
+   *pos = strsep (buffer, " \t\n:=,;");
    return 0;
 };
 
-#define YESNO(p, var, bmask)                   \
-if (dc390_yesno (&p, &var, bmask)) goto einv;  \
+#define YESNO(buffer, pos, var, bmask)                 \
+if (dc390_yesno (&buffer, &pos, &var, bmask)) goto einv;       \
 else dc390_updateDCB (pACB, pDCB);             \
 if (!p) goto ok
 
-static int dc390_search (char **p1, char **p2, char *var, char* txt, int max, int scale, char* ign)
+static int dc390_search (char** buffer, char** pos, char** p0, char* var, char* txt, int max, int scale, char* ign)
 {
    int dum;
-   if (! memcmp (*p1, txt, strlen(txt)))
+   if (! memcmp (*pos, txt, strlen(txt)))
      {
-       *p2 = strtok (0, " \t\n:=,;");
-       if (!*p2) return -1;
-       dum = simple_strtoul (*p2, p1, 10);
-       if (*p2 == *p1) return -1;
+       *p0 = strsep (buffer, " \t\n:=,;");
+       if (!*p0) return -1;
+       dum = simple_strtoul (*p0, pos, 10);
+       if (*p0 == *pos) return -1;
        if (dum >= 0 && dum <= max) 
          { *var = (dum * 100) / scale; }
        else return -2;
-       *p1 = strtok (0, " \t\n:=,;");
-       if (*ign && *p1 && strlen(*p1) >= strlen(ign) && 
-           !(memcmp (*p1, ign, strlen(ign)))) 
-               *p1 = strtok (0, " \t\n:=,;");
+       *pos = strsep (buffer, " \t\n:=,;");
+       if (*ign && *pos && strlen(*pos) >= strlen(ign) && 
+           !(memcmp (*pos, ign, strlen(ign)))) 
+               *pos = strsep (buffer, " \t\n:=,;");
 
      }
    return 0;
 };
 
-#define SEARCH(p1, p2, var, txt, max)                                          \
-if (dc390_search (&p1, &p2, (PUCHAR)(&var), txt, max, 100, "")) goto einv2;    \
+#define SEARCH(buffer, pos, p0, var, txt, max)                                         \
+if (dc390_search (&buffer, &pos, &p0, (PUCHAR)(&var), txt, max, 100, "")) goto einv2;  \
 else if (!p1) goto ok2
 
-#define SEARCH2(p1, p2, var, txt, max, scale)                                  \
-if (dc390_search (&p1, &p2, &var, txt, max, scale, "")) goto einv2;            \
+#define SEARCH2(buffer, pos, p0, var, txt, max, scale)                                 \
+if (dc390_search (&buffer, &pos, &p0, &var, txt, max, scale, "")) goto einv2;          \
 else if (!p1) goto ok2
 
-#define SEARCH3(p1, p2, var, txt, max, scale, ign)                             \
-if (dc390_search (&p1, &p2, &var, txt, max, scale, ign)) goto einv2;           \
+#define SEARCH3(buffer, pos, &p0, var, txt, max, scale, ign)                           \
+if (dc390_search (&buffer, &pos, p0, &var, txt, max, scale, ign)) goto einv2;          \
 else if (!p1) goto ok2
 
 
@@ -2565,12 +2565,9 @@ int dc390_set_info (char *buffer, int length, PACB pACB)
   while (*pos) 
     { if (*pos >='a' && *pos <= 'z') *pos = *pos + 'A' - 'a'; pos++; };
   
-  /* We should protect __strtok ! */
-  /* spin_lock (strtok_lock); */
-
   /* Remove WS */
-  pos = strtok (buffer, " \t:\n=,;");
-  if (!pos) goto ok;
+  pos = strsep (&buffer, " \t:\n=,;");
+  if (!*pos) goto ok;
    
  next:
   if (!memcmp (pos, "RESET", 5)) goto reset;
@@ -2586,10 +2583,10 @@ int dc390_set_info (char *buffer, int length, PACB pACB)
       int dev, id, lun; char* pdec;
       char olddevmode;
       
-      SCANF (pos, p0, dev, 0, pACB->DCBCnt-1);
-      if (pos) { SCANF (pos, p0, id, 0, 7); } else goto einv;
-      if (pos) { SCANF (pos, p0, lun, 0, 7); } else goto einv;
-      if (!pos) goto einv;
+      SCANF (buffer, pos, p0, dev, 0, pACB->DCBCnt-1);
+      if (*pos) { SCANF (buffer, pos, p0, id, 0, 7); } else goto einv;
+      if (*pos) { SCANF (buffer, pos, p0, lun, 0, 7); } else goto einv;
+      if (!*pos) goto einv;
       
       PARSEDEBUG(printk (KERN_INFO "DC390: config line %i %i %i:\"%s\"\n", dev, id, lun, prstr (pos, &buffer[length]));)
       pDCB = pACB->pLinkDCB;
@@ -2610,20 +2607,20 @@ int dc390_set_info (char *buffer, int length, PACB pACB)
       };
          
       olddevmode = pDCB->DevMode;
-      YESNO (pos, pDCB->DevMode, PARITY_CHK_);
+      YESNO (buffer, pos, pDCB->DevMode, PARITY_CHK_);
       needs_inquiry++;
-      YESNO (pos, pDCB->DevMode, SYNC_NEGO_);
+      YESNO (buffer, pos, pDCB->DevMode, SYNC_NEGO_);
       if ((olddevmode & SYNC_NEGO_) == (pDCB->DevMode & SYNC_NEGO_)) needs_inquiry--;
       needs_inquiry++;
-      YESNO (pos, pDCB->DevMode, EN_DISCONNECT_);
+      YESNO (buffer, pos, pDCB->DevMode, EN_DISCONNECT_);
       if ((olddevmode & EN_DISCONNECT_) == (pDCB->DevMode & EN_DISCONNECT_)) needs_inquiry--;
-      YESNO (pos, pDCB->DevMode, SEND_START_);
+      YESNO (buffer, pos, pDCB->DevMode, SEND_START_);
       needs_inquiry++;
-      YESNO (pos, pDCB->DevMode, TAG_QUEUEING_);
+      YESNO (buffer, pos, pDCB->DevMode, TAG_QUEUEING_);
       if ((olddevmode & TAG_QUEUEING_) == (pDCB->DevMode & TAG_QUEUEING_)) needs_inquiry--;
 
       dc390_updateDCB (pACB, pDCB);
-      if (!pos) goto ok;
+      if (!*pos) goto ok;
        
       olddevmode = pDCB->NegoPeriod;
       /* Look for decimal point (Speed) */
@@ -2632,22 +2629,22 @@ int dc390_set_info (char *buffer, int length, PACB pACB)
       /* NegoPeriod */
       if (*pos != '-')
        {
-         SCANF (pos, p0, dum, 72, 800); 
+         SCANF (buffer, pos, p0, dum, 72, 800); 
          pDCB->NegoPeriod = dum >> 2;
          if (pDCB->NegoPeriod != olddevmode) needs_inquiry++;
          if (!pos) goto ok;
-         if (memcmp (pos, "NS", 2) == 0) pos = strtok (0, " \t\n:=,;.");
+         if (memcmp (pos, "NS", 2) == 0) pos = strsep (*pos, " \t\n:=,;.");
        }
-      else pos = strtok (0, " \t\n:=,;.");
-      if (!pos) goto ok;
+      else pos = strsep (*pos, " \t\n:=,;.");
+      if (!*pos) goto ok;
       
       /* Sync Speed in MHz */
       if (*pos != '-')
        {
-         SCANF (pos, p0, dum, 1, 13); 
+         SCANF (buffer, pos, p0, dum, 1, 13); 
          pDCB->NegoPeriod = (1000/dum) >> 2;
          if (pDCB->NegoPeriod != olddevmode && !pos) needs_inquiry++;
-         if (!pos) goto ok;
+         if (!*pos) goto ok;
          /* decimal */
          if (pos-1 == pdec)
             {
@@ -2656,38 +2653,38 @@ int dc390_set_info (char *buffer, int length, PACB pACB)
                for (; p0-pos > 1; p0--) dum /= 10;
                pDCB->NegoPeriod = (100000/(100*dumold + dum)) >> 2;
                if (pDCB->NegoPeriod < 19) pDCB->NegoPeriod = 19;
-               pos = strtok (0, " \t\n:=,;");
-               if (!pos) goto ok;
+               pos = strsep (*pos, " \t\n:=,;");
+               if (!*pos) goto ok;
             };
-         if (*pos == 'M') pos = strtok (0, " \t\n:=,;");
+         if (*pos == 'M') pos = strsep (*pos, " \t\n:=,;");
          if (pDCB->NegoPeriod != olddevmode) needs_inquiry++;
        }
-      else pos = strtok (0, " \t\n:=,;");
+      else pos = strsep (*pos, " \t\n:=,;");
       /* dc390_updateDCB (pACB, pDCB); */
-      if (!pos) goto ok;
+      if (!*pos) goto ok;
 
       olddevmode = pDCB->SyncOffset;
       /* SyncOffs */
       if (*pos != '-')
        {
-         SCANF (pos, p0, dum, 0, 0x0f); 
+         SCANF (buffer, pos, p0, dum, 0, 0x0f); 
          pDCB->SyncOffset = dum;
          if (pDCB->SyncOffset > olddevmode) needs_inquiry++;
        }
-      else pos = strtok (0, " \t\n:=,;");
-      if (!pos) goto ok;
+      else pos = strsep (*pos, " \t\n:=,;");
+      if (!*pos) goto ok;
       dc390_updateDCB (pACB, pDCB);
 
       //olddevmode = pDCB->MaxCommand;
       /* MaxCommand (Tags) */
       if (*pos != '-')
        {
-         SCANF (pos, p0, dum, 1, 32 /*pACB->TagMaxNum*/);
+         SCANF (buffer, pos, p0, dum, 1, 32 /*pACB->TagMaxNum*/);
          if (pDCB->SyncMode & EN_TAG_QUEUEING)
                pDCB->MaxCommand = dum;
          else printk (KERN_INFO "DC390: Can't set MaxCmd larger than one without Tag Queueing!\n");
        }
-      else pos = strtok (0, " \t\n:=,;");
+      else pos = strsep (*pos, " \t\n:=,;");
 
     }
   else
@@ -2696,14 +2693,14 @@ int dc390_set_info (char *buffer, int length, PACB pACB)
       PARSEDEBUG(printk (KERN_INFO "DC390: chg adapt cfg \"%s\"\n", prstr (pos, &buffer[length]));)
       dum = GLITCH_TO_NS (pACB->glitch_cfg);
       /* Adapter setting */
-      SEARCH (pos, p0, pACB->pScsiHost->max_id, "MAXID", 8); 
-      SEARCH (pos, p0, pACB->pScsiHost->max_lun, "MAXLUN", 8); 
-      SEARCH (pos, p0, newadaptid, "ADAPTERID", 7);
-      SEARCH (pos, p0, pACB->TagMaxNum, "TAGMAXNUM", 32);
-      SEARCH (pos, p0, pACB->ACBFlag, "ACBFLAG", 255);
-      SEARCH3 (pos, p0, dum, "GLITCHEATER", 40, 1000, "NS");
-      SEARCH3 (pos, p0, pACB->sel_timeout, "SELTIMEOUT", 400, 163, "MS");
-      SEARCH3 (pos, p0, dc390_eepromBuf[pACB->AdapterIndex][EE_DELAY], "DELAYRESET", 180, 100, "S");
+      SEARCH (buffer, pos, p0, pACB->pScsiHost->max_id, "MAXID", 8); 
+      SEARCH (buffer, pos, p0, pACB->pScsiHost->max_lun, "MAXLUN", 8); 
+      SEARCH (buffer, pos, p0, newadaptid, "ADAPTERID", 7);
+      SEARCH (buffer, pos, p0, pACB->TagMaxNum, "TAGMAXNUM", 32);
+      SEARCH (buffer, pos, p0, pACB->ACBFlag, "ACBFLAG", 255);
+      SEARCH3 (buffer, pos, p0, dum, "GLITCHEATER", 40, 1000, "NS");
+      SEARCH3 (buffer, pos, p0, pACB->sel_timeout, "SELTIMEOUT", 400, 163, "MS");
+      SEARCH3 (buffer, pos, p0, dc390_eepromBuf[pACB->AdapterIndex][EE_DELAY], "DELAYRESET", 180, 100, "S");
     ok2:
       pACB->glitch_cfg = NS_TO_GLITCH (dum);
       if (pACB->sel_timeout < 60) pACB->sel_timeout = 60;
@@ -2719,10 +2716,9 @@ int dc390_set_info (char *buffer, int length, PACB pACB)
       // All devs should be INQUIRED now
       if (pos == p1) goto einv;
     }
-  if (pos) goto next;
+  if (*pos) goto next;
       
  ok:
-  /* spin_unlock (strtok_lock); */
   DC390_UNLOCK_ACB;
   if (needs_inquiry) 
      { dc390_updateDCB (pACB, pDCB); dc390_inquiry (pACB, pDCB); };
@@ -2732,7 +2728,6 @@ int dc390_set_info (char *buffer, int length, PACB pACB)
  einv2:
   pos = p0;
  einv:
-  /* spin_unlock (strtok_lock); */
   DC390_UNLOCK_ACB;
   DC390_UNLOCK_IO(pACB.pScsiHost);
   printk (KERN_WARNING "DC390: parse error near \"%s\"\n", (pos? pos: "NULL"));
@@ -2758,7 +2753,7 @@ int dc390_set_info (char *buffer, int length, PACB pACB)
        
  inquiry:
      {
-       pos = strtok (0, " \t\n.:;="); if (!pos) goto einv;
+       pos = strsep (*pos, " \t\n.:;="); if (!*pos) goto einv;
        dev = simple_strtoul (pos, &p0, 10);
        if (dev >= pACB->DCBCnt) goto einv_dev;
        for (dum = 0; dum < dev; dum++) pDCB = pDCB->pNextDCB;
@@ -2772,7 +2767,7 @@ int dc390_set_info (char *buffer, int length, PACB pACB)
 
  remove:
      {
-       pos = strtok (0, " \t\n.:;="); if (!pos) goto einv;
+       pos = strsep (*pos, " \t\n.:;="); if (!*pos) goto einv;
        dev = simple_strtoul (pos, &p0, 10);
        if (dev >= pACB->DCBCnt) goto einv_dev;
        for (dum = 0; dum < dev; dum++) pDCB = pDCB->pNextDCB;
@@ -2788,9 +2783,9 @@ int dc390_set_info (char *buffer, int length, PACB pACB)
  add:
      {
        int id, lun;
-       pos = strtok (0, " \t\n.:;=");
-       if (pos) { SCANF (pos, p0, id, 0, 7); } else goto einv;
-       if (pos) { SCANF (pos, p0, lun, 0, 7); } else goto einv;
+       pos = strsep (*pos, " \t\n.:;=");
+       if (*pos) { SCANF (buffer, pos, p0, id, 0, 7); } else goto einv;
+       if (*pos) { SCANF (buffer, pos, p0, lun, 0, 7); } else goto einv;
        pDCB = dc390_findDCB (pACB, id, lun);
        if (pDCB) { printk ("DC390: ADD: Device already existing\n"); goto einv; };
        dc390_initDCB (pACB, &pDCB, id, lun);
@@ -2803,9 +2798,9 @@ int dc390_set_info (char *buffer, int length, PACB pACB)
  start:
      {
        int id, lun;
-       pos = strtok (0, " \t\n.:;=");
-       if (pos) { SCANF (pos, p0, id, 0, 7); } else goto einv;
-       if (pos) { SCANF (pos, p0, lun, 0, 7); } else goto einv;
+       pos = strsep (*pos, " \t\n.:;=");
+       if (*pos) { SCANF (buffer, pos, p0, id, 0, 7); } else goto einv;
+       if (*pos) { SCANF (buffer, pos, p0, lun, 0, 7); } else goto einv;
        pDCB = dc390_findDCB (pACB, id, lun);
        if (pDCB) printk ("DC390: SendStart: Device already existing ...\n");
        else dc390_initDCB (pACB, &pDCB, id, lun);
index fadb7f0a8719d4fb60fca4a10e11f556a16256db..30de86c25712bc95e0ac2d38a21721de67a42f22 100644 (file)
@@ -1132,7 +1132,6 @@ static int flash_cursor(void);
 static void amifb_interrupt(int irq, void *dev_id, struct pt_regs *fp);
 static u_long chipalloc(u_long size);
 static void chipfree(void);
-static char *strtoke(char *s,const char *ct);
 
        /*
         * Hardware routines
@@ -1224,22 +1223,22 @@ int __init amifb_setup(char *options)
         * <H*> horizontal freq. in kHz
         */
 
-               if (!(p = strtoke(mcap_spec, ";")) || !*p)
+               if (!(p = strsep(&mcap_spec, ";")) || !*p)
                        goto cap_invalid;
                vmin = simple_strtoul(p, NULL, 10);
                if (vmin <= 0)
                        goto cap_invalid;
-               if (!(p = strtoke(NULL, ";")) || !*p)
+               if (!(p = strsep(&mcap_spec, ";")) || !*p)
                        goto cap_invalid;
                vmax = simple_strtoul(p, NULL, 10);
                if (vmax <= 0 || vmax <= vmin)
                        goto cap_invalid;
-               if (!(p = strtoke(NULL, ";")) || !*p)
+               if (!(p = strsep(&mcap_spec, ";")) || !*p)
                        goto cap_invalid;
                hmin = 1000 * simple_strtoul(p, NULL, 10);
                if (hmin <= 0)
                        goto cap_invalid;
-               if (!(p = strtoke(NULL, "")) || !*p)
+               if (!(p = strsep(&mcap_spec, "")) || !*p)
                        goto cap_invalid;
                hmax = 1000 * simple_strtoul(p, NULL, 10);
                if (hmax <= 0 || hmax <= hmin)
@@ -1915,29 +1914,6 @@ static void amifb_interrupt(int irq, void *dev_id, struct pt_regs *fp)
        }
 }
 
-       /*
-        * A strtok which returns empty strings, too
-        */
-
-static char __init *strtoke(char *s,const char *ct)
-{
-       char *sbegin, *send;
-       static char *ssave = NULL;
-
-       sbegin  = s ? s : ssave;
-       if (!sbegin)
-               return NULL;
-       if (*sbegin == '\0') {
-               ssave = NULL;
-               return NULL;
-       }
-       send = strpbrk(sbegin, ct);
-       if (send && *send != '\0')
-               *send++ = '\0';
-       ssave = send;
-       return sbegin;
-}
-
 /* --------------------------- Hardware routines --------------------------- */
 
        /*
index 73339ab4cba0dce1e2ebb93ba27716162b7d9a1e..64e8d4a239310aa9b342f507d372a5f7914255cf 100644 (file)
@@ -2860,28 +2860,6 @@ int __init atafb_init(void)
        return 0;
 }
 
-/* a strtok which returns empty strings, too */
-
-static char * strtoke(char * s,const char * ct)
-{
-  char *sbegin, *send;
-  static char *ssave = NULL;
-  
-  sbegin  = s ? s : ssave;
-  if (!sbegin) {
-         return NULL;
-  }
-  if (*sbegin == '\0') {
-    ssave = NULL;
-    return NULL;
-  }
-  send = strpbrk(sbegin, ct);
-  if (send && *send != '\0')
-    *send++ = '\0';
-  ssave = send;
-  return sbegin;
-}
-
 int __init atafb_setup( char *options )
 {
     char *this_opt;
@@ -2956,18 +2934,18 @@ int __init atafb_setup( char *options )
        int xres;
        char *p;
 
-       if (!(p = strtoke(int_str, ";")) ||!*p) goto int_invalid;
+       if (!(p = strsep(&int_str, ";")) || !*p) goto int_invalid;
        xres = simple_strtoul(p, NULL, 10);
-       if (!(p = strtoke(NULL, ";")) || !*p) goto int_invalid;
+       if (!(p = strsep(&int_str, ";")) || !*p) goto int_invalid;
        sttt_xres=xres;
        tt_yres=st_yres=simple_strtoul(p, NULL, 10);
-       if ((p=strtoke(NULL, ";")) && *p) {
+       if ((p=strsep(&int_str, ";")) && *p) {
                sttt_xres_virtual=simple_strtoul(p, NULL, 10);
        }
-       if ((p=strtoke(NULL, ";")) && *p) {
+       if ((p=strsep(&int_str, ";")) && *p) {
                sttt_yres_virtual=simple_strtoul(p, NULL, 0);
        }
-       if ((p=strtoke(NULL, ";")) && *p) {
+       if ((p=strsep(&int_str, ";")) && *p) {
                ovsc_offset=simple_strtoul(p, NULL, 0);
        }
 
@@ -2993,20 +2971,20 @@ int __init atafb_setup( char *options )
         *
         * Even xres_virtual is available, we neither support panning nor hw-scrolling!
         */
-       if (!(p = strtoke(ext_str, ";")) ||!*p) goto ext_invalid;
+       if (!(p = strsep(&ext_str, ";")) || !*p) goto ext_invalid;
        xres_virtual = xres = simple_strtoul(p, NULL, 10);
        if (xres <= 0) goto ext_invalid;
 
-       if (!(p = strtoke(NULL, ";")) ||!*p) goto ext_invalid;
+       if (!(p = strsep(&ext_str, ";")) || !*p) goto ext_invalid;
        yres = simple_strtoul(p, NULL, 10);
        if (yres <= 0) goto ext_invalid;
 
-       if (!(p = strtoke(NULL, ";")) ||!*p) goto ext_invalid;
+       if (!(p = strsep(&ext_str, ";")) || !*p) goto ext_invalid;
        depth = simple_strtoul(p, NULL, 10);
        if (depth != 1 && depth != 2 && depth != 4 && depth != 8 &&
                depth != 16 && depth != 24) goto ext_invalid;
 
-       if (!(p = strtoke(NULL, ";")) ||!*p) goto ext_invalid;
+       if (!(p = strsep(&ext_str, ";")) || !*p) goto ext_invalid;
        if (*p == 'i')
                planes = FB_TYPE_INTERLEAVED_PLANES;
        else if (*p == 'p')
@@ -3019,19 +2997,19 @@ int __init atafb_setup( char *options )
                goto ext_invalid;
 
 
-       if (!(p = strtoke(NULL, ";")) ||!*p) goto ext_invalid;
+       if (!(p = strsep(&ext_str, ";")) || !*p) goto ext_invalid;
        addr = simple_strtoul(p, NULL, 0);
 
-       if (!(p = strtoke(NULL, ";")) ||!*p)
+       if (!(p = strsep(&ext_str, ";")) || !*p)
                len = xres*yres*depth/8;
        else
                len = simple_strtoul(p, NULL, 0);
 
-       if ((p = strtoke(NULL, ";")) && *p) {
+       if ((p = strsep(&ext_str, ";")) && *p) {
                external_vgaiobase=simple_strtoul(p, NULL, 0);
        }
 
-       if ((p = strtoke(NULL, ";")) && *p) {
+       if ((p = strsep(&ext_str, ";")) && *p) {
                external_bitspercol = simple_strtoul(p, NULL, 0);
                if (external_bitspercol > 8)
                        external_bitspercol = 8;
@@ -3039,14 +3017,14 @@ int __init atafb_setup( char *options )
                        external_bitspercol = 1;
        }
        
-       if ((p = strtoke(NULL, ";")) && *p) {
+       if ((p = strsep(&ext_str, ";")) && *p) {
                if (!strcmp(p, "vga"))
                        external_card_type = IS_VGA;
                if (!strcmp(p, "mv300"))
                        external_card_type = IS_MV300;
        }
 
-       if ((p = strtoke(NULL, ";")) && *p) {
+       if ((p = strsep(&ext_str, ";")) && *p) {
                xres_virtual = simple_strtoul(p, NULL, 10);
                if (xres_virtual < xres)
                        xres_virtual = xres;
@@ -3089,16 +3067,16 @@ int __init atafb_setup( char *options )
         * <V*> vertical freq. in Hz
         * <H*> horizontal freq. in kHz
         */
-       if (!(p = strtoke(mcap_spec, ";")) || !*p) goto cap_invalid;
+       if (!(p = strsep(&mcap_spec, ";")) || !*p) goto cap_invalid;
        vmin = simple_strtoul(p, NULL, 10);
        if (vmin <= 0) goto cap_invalid;
-       if (!(p = strtoke(NULL, ";")) || !*p) goto cap_invalid;
+       if (!(p = strsep(&mcap_spec, ";")) || !*p) goto cap_invalid;
        vmax = simple_strtoul(p, NULL, 10);
        if (vmax <= 0 || vmax <= vmin) goto cap_invalid;
-       if (!(p = strtoke(NULL, ";")) || !*p) goto cap_invalid;
+       if (!(p = strsep(&mcap_spec, ";")) || !*p) goto cap_invalid;
        hmin = 1000 * simple_strtoul(p, NULL, 10);
        if (hmin <= 0) goto cap_invalid;
-       if (!(p = strtoke(NULL, "")) || !*p) goto cap_invalid;
+       if (!(p = strsep(&mcap_spec, "")) || !*p) goto cap_invalid;
        hmax = 1000 * simple_strtoul(p, NULL, 10);
        if (hmax <= 0 || hmax <= hmin) goto cap_invalid;
 
@@ -3117,11 +3095,11 @@ int __init atafb_setup( char *options )
                char *p;
                int xres, yres, depth, temp;
 
-               if (!(p = strtoke(user_mode, ";")) || !*p) goto user_invalid;
+               if (!(p = strsep(&user_mode, ";")) || !*p) goto user_invalid;
                xres = simple_strtoul(p, NULL, 10);
-               if (!(p = strtoke(NULL, ";")) || !*p) goto user_invalid;
+               if (!(p = strsep(&user_mode, ";")) || !*p) goto user_invalid;
                yres = simple_strtoul(p, NULL, 10);
-               if (!(p = strtoke(NULL, "")) || !*p) goto user_invalid;
+               if (!(p = strsep(&user_mode, "")) || !*p) goto user_invalid;
                depth = simple_strtoul(p, NULL, 10);
                if ((temp=get_video_mode("user0"))) {
                        default_par=temp;
index da3e1ea3cac9b603f97f328d8cc44b5f4acca5c6..f18527020c7b5cb45a4f03cf6450ea9c0a765f1d 100644 (file)
@@ -178,7 +178,6 @@ static void atyfbcon_blank(int blank, struct fb_info *fb);
 static int aty_init(struct fb_info_aty *info, const char *name);
 #ifdef CONFIG_ATARI
 static int store_video_par(char *videopar, unsigned char m64_num);
-static char *strtoke(char *s, const char *ct);
 #endif
 
 static void aty_set_crtc(const struct fb_info_aty *info,
@@ -2595,13 +2594,13 @@ static int __init store_video_par(char *video_str, unsigned char m64_num)
 
     printk("store_video_par() '%s' \n", video_str);
 
-    if (!(p = strtoke(video_str, ";")) || !*p)
+    if (!(p = strsep(&video_str, ";")) || !*p)
        goto mach64_invalid;
     vmembase = simple_strtoul(p, NULL, 0);
-    if (!(p = strtoke(NULL, ";")) || !*p)
+    if (!(p = strsep(&video_str, ";")) || !*p)
        goto mach64_invalid;
     size = simple_strtoul(p, NULL, 0);
-    if (!(p = strtoke(NULL, ";")) || !*p)
+    if (!(p = strsep(&video_str, ";")) || !*p)
        goto mach64_invalid;
     guiregbase = simple_strtoul(p, NULL, 0);
 
@@ -2616,25 +2615,6 @@ mach64_invalid:
     phys_vmembase[m64_num]   = 0;
     return -1;
 }
-
-static char __init *strtoke(char *s, const char *ct)
-{
-    static char *ssave = NULL;
-    char *sbegin, *send;
-
-    sbegin  = s ? s : ssave;
-    if (!sbegin)
-       return NULL;
-    if (*sbegin == '\0') {
-       ssave = NULL;
-       return NULL;
-    }
-    send = strpbrk(sbegin, ct);
-    if (send && *send != '\0')
-       *send++ = '\0';
-    ssave = send;
-    return sbegin;
-}
 #endif /* CONFIG_ATARI */
 
 static int atyfbcon_switch(int con, struct fb_info *fb)