Changeset 69df837f in mainline


Ignore:
Timestamp:
2008-09-16T10:06:32Z (16 years ago)
Author:
Tim Post <echo@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
06a195bc
Parents:
eeb2bde2
Message:

Added strtok() and strtok_r() to userspace libc

Location:
uspace/lib/libc
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/libc/generic/string.c

    reeb2bde2 r69df837f  
    11/*
    22 * Copyright (c) 2005 Martin Decky
     3 * Copyright (C) 1998 by Wes Peters <wes@softweyr.com>
     4 * Copyright (c) 1988, 1993 The Regents of the University of California.
    35 * All rights reserved.
    46 *
     
    397399}
    398400
     401/* Ported from FBSD strtok.c 8.1 (Berkeley) 6/4/93 */
     402char * strtok_r(char *s, const char *delim, char **last)
     403{
     404        char *spanp, *tok;
     405        int c, sc;
     406
     407        if (s == NULL && (s = *last) == NULL)
     408                return (NULL);
     409
     410cont:
     411        c = *s++;
     412        for (spanp = (char *)delim; (sc = *spanp++) != 0;) {
     413                if (c == sc)
     414                        goto cont;
     415        }
     416
     417        if (c == 0) {           /* no non-delimiter characters */
     418                *last = NULL;
     419                return (NULL);
     420        }
     421
     422        tok = s - 1;
     423
     424        for (;;) {
     425                c = *s++;
     426                spanp = (char *)delim;
     427                do {
     428                        if ((sc = *spanp++) == c) {
     429                                if (c == 0)
     430                                        s = NULL;
     431                                else
     432                                        s[-1] = '\0';
     433                                *last = s;
     434                                return (tok);
     435                        }
     436                } while (sc != 0);
     437        }
     438}
     439
     440/* Ported from FBSD strtok.c 8.1 (Berkeley) 6/4/93 */
     441char * strtok(char *s, const char *delim)
     442{
     443        static char *last;
     444
     445        return (strtok_r(s, delim, &last));
     446}
     447
    399448/** @}
    400449 */
  • uspace/lib/libc/include/string.h

    reeb2bde2 r69df837f  
    6565extern unsigned long strtoul(const char *, char **, int);
    6666
     67extern char * strtok_r(char *, const char *, char **);
     68extern char * strtok(char *, const char *);
     69
    6770#endif
    6871
Note: See TracChangeset for help on using the changeset viewer.