Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 3daf1979 in mainline


Ignore:
Timestamp:
2014-06-30T20:30:24Z (6 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
master
Children:
23ce2d9
Parents:
1bdf307d (diff), ee3f6f6 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge str_tok().

Location:
uspace
Files:
5 edited

Legend:

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

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

    r1bdf307d r3daf1979  
    13601360}
    13611361
    1362 char *strtok(char *s, const char *delim)
    1363 {
    1364         static char *next;
    1365 
    1366         return strtok_r(s, delim, &next);
    1367 }
    1368 
    1369 char *strtok_r(char *s, const char *delim, char **next)
     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 */
     1374char *str_tok(char *s, const char *delim, char **next)
    13701375{
    13711376        char *start, *end;
    13721377
    1373         if (s == NULL)
    1374                 s = *next;
     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;
    13751385
    13761386        /* Skip over leading delimiters. */
    1377         while (*s && (str_chr(delim, *s) != NULL)) ++s;
    1378         start = s;
     1387        for (tmp = cur = 0;
     1388            (ch = str_decode(s, &tmp, len)) && str_chr(delim, ch); /**/)
     1389                cur = tmp;
     1390        start = &s[cur];
    13791391
    13801392        /* Skip over token characters. */
    1381         while (*s && (str_chr(delim, *s) == NULL)) ++s;
    1382         end = s;
    1383         *next = (*s ? s + 1 : s);
    1384 
    1385         if (start == end) {
     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)
    13861401                return NULL;    /* No more tokens. */
    1387         }
    13881402
    13891403        /* Overwrite delimiter with NULL terminator. */
  • uspace/lib/c/include/str.h

    r1bdf307d r3daf1979  
    109109extern char *str_ndup(const char *, size_t max_size);
    110110
     111extern char *str_tok(char *, const char *, char **);
     112
    111113extern int str_uint8_t(const char *, const char **, unsigned int, bool,
    112114    uint8_t *);
     
    132134extern unsigned long strtoul(const char *, char **, int);
    133135
    134 extern char * strtok_r(char *, const char *, char **);
    135 extern char * strtok(char *, const char *);
    136 
    137136#endif
    138137
  • uspace/srv/fs/fat/fat_ops.c

    r1bdf307d r3daf1979  
    930930        /* Parse mount options. */
    931931        char *mntopts = (char *) opts;
    932         char *saveptr;
    933932        char *opt;
    934         while ((opt = strtok_r(mntopts, " ,", &saveptr)) != NULL) {
     933        while ((opt = str_tok(mntopts, " ,", &mntopts)) != NULL) {
    935934                if (str_cmp(opt, "wtcache") == 0)
    936935                        cmode = CACHE_MODE_WT;
    937936                else if (str_cmp(opt, "nolfn") == 0)
    938937                        instance->lfn_enabled = false;
    939                 mntopts = NULL;
    940938        }
    941939
  • uspace/srv/logger/initlvl.c

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