Changes in / [3daf1979:1bdf307d] in mainline


Ignore:
Location:
uspace
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/isa/isa.c

    r3daf1979 r1bdf307d  
    355355
    356356        /* Get the name part of the rest of the line. */
    357         str_tok(line, ":", NULL);
     357        strtok(line, ":");
    358358        return line;
    359359}
  • uspace/lib/c/generic/str.c

    r3daf1979 r1bdf307d  
    13601360}
    13611361
    1362 /** Split string by delimiters.
    1363  *
    1364  * @param s             String to be tokenized. May not be NULL.
    1365  * @param delim         String with the delimiters.
    1366  * @param next          Variable which will receive the pointer to the
    1367  *                      continuation of the string following the first
    1368  *                      occurrence of any of the delimiter characters.
    1369  *                      May be NULL.
    1370  * @return              Pointer to the prefix of @a s before the first
    1371  *                      delimiter character. NULL if no such prefix
    1372  *                      exists.
    1373  */
    1374 char *str_tok(char *s, const char *delim, char **next)
     1362char *strtok(char *s, const char *delim)
     1363{
     1364        static char *next;
     1365
     1366        return strtok_r(s, delim, &next);
     1367}
     1368
     1369char *strtok_r(char *s, const char *delim, char **next)
    13751370{
    13761371        char *start, *end;
    13771372
    1378         if (!s)
    1379                 return NULL;
    1380        
    1381         size_t len = str_size(s);
    1382         size_t cur;
    1383         size_t tmp;
    1384         wchar_t ch;
     1373        if (s == NULL)
     1374                s = *next;
    13851375
    13861376        /* Skip over leading delimiters. */
    1387         for (tmp = cur = 0;
    1388             (ch = str_decode(s, &tmp, len)) && str_chr(delim, ch); /**/)
    1389                 cur = tmp;
    1390         start = &s[cur];
     1377        while (*s && (str_chr(delim, *s) != NULL)) ++s;
     1378        start = s;
    13911379
    13921380        /* Skip over token characters. */
    1393         for (tmp = cur;
    1394             (ch = str_decode(s, &tmp, len)) && !str_chr(delim, ch); /**/)
    1395                 cur = tmp;
    1396         end = &s[cur];
    1397         if (next)
    1398                 *next = (ch ? &s[tmp] : &s[cur]);
    1399 
    1400         if (start == end)
     1381        while (*s && (str_chr(delim, *s) == NULL)) ++s;
     1382        end = s;
     1383        *next = (*s ? s + 1 : s);
     1384
     1385        if (start == end) {
    14011386                return NULL;    /* No more tokens. */
     1387        }
    14021388
    14031389        /* Overwrite delimiter with NULL terminator. */
  • uspace/lib/c/include/str.h

    r3daf1979 r1bdf307d  
    109109extern char *str_ndup(const char *, size_t max_size);
    110110
    111 extern char *str_tok(char *, const char *, char **);
    112 
    113111extern int str_uint8_t(const char *, const char **, unsigned int, bool,
    114112    uint8_t *);
     
    134132extern unsigned long strtoul(const char *, char **, int);
    135133
     134extern char * strtok_r(char *, const char *, char **);
     135extern char * strtok(char *, const char *);
     136
    136137#endif
    137138
  • uspace/srv/fs/fat/fat_ops.c

    r3daf1979 r1bdf307d  
    930930        /* Parse mount options. */
    931931        char *mntopts = (char *) opts;
     932        char *saveptr;
    932933        char *opt;
    933         while ((opt = str_tok(mntopts, " ,", &mntopts)) != NULL) {
     934        while ((opt = strtok_r(mntopts, " ,", &saveptr)) != NULL) {
    934935                if (str_cmp(opt, "wtcache") == 0)
    935936                        cmode = CACHE_MODE_WT;
    936937                else if (str_cmp(opt, "nolfn") == 0)
    937938                        instance->lfn_enabled = false;
     939                mntopts = NULL;
    938940        }
    939941
  • uspace/srv/logger/initlvl.c

    r3daf1979 r1bdf307d  
    4444{
    4545        char *tmp;
    46         char *key = str_tok(setting, "=", &tmp);
    47         char *value = str_tok(tmp, "=", &tmp);
     46        char *key = strtok_r(setting, "=", &tmp);
     47        char *value = strtok_r(NULL, "=", &tmp);
    4848        if (key == NULL)
    4949                return;
     
    7676{
    7777        char *tmp;
    78         char *single_setting = str_tok(settings, " ", &tmp);
     78        char *single_setting = strtok_r(settings, " ", &tmp);
    7979        while (single_setting != NULL) {
    8080                parse_single_level_setting(single_setting);
    81                 single_setting = str_tok(tmp, " ", &tmp);
     81                single_setting = strtok_r(NULL, " ", &tmp);
    8282        }
    8383}
Note: See TracChangeset for help on using the changeset viewer.