Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/nsprpub/lib/libc/src/strtok.c
Line
Count
Source
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* This Source Code Form is subject to the terms of the Mozilla Public
3
 * License, v. 2.0. If a copy of the MPL was not distributed with this
4
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6
#include "plstr.h"
7
8
PR_IMPLEMENT(char *)
9
PL_strtok_r(char *s1, const char *s2, char **lasts)
10
65.3k
{
11
65.3k
    const char *sepp;
12
65.3k
    int         c, sc;
13
65.3k
    char       *tok;
14
65.3k
15
65.3k
    if( s1 == NULL )
16
65.3k
    {
17
32.1k
        if( *lasts == NULL )
18
32.1k
            return NULL;
19
12.0k
20
12.0k
        s1 = *lasts;
21
12.0k
    }
22
65.3k
  
23
65.3k
    for( ; (c = *s1) != 0; s1++ )
24
45.9k
    {
25
87.9k
        for( sepp = s2 ; (sc = *sepp) != 0 ; sepp++ )
26
45.9k
        {
27
45.9k
            if( c == sc )
28
3.93k
                break;
29
45.9k
        }
30
45.9k
        if( sc == 0 )
31
42.0k
            break; 
32
45.9k
    }
33
45.2k
34
45.2k
    if( c == 0 )
35
3.24k
    {
36
3.24k
        *lasts = NULL;
37
3.24k
        return NULL;
38
3.24k
    }
39
42.0k
  
40
42.0k
    tok = s1++;
41
42.0k
42
231k
    for( ; (c = *s1) != 0; s1++ )
43
201k
    {
44
391k
        for( sepp = s2; (sc = *sepp) != 0; sepp++ )
45
201k
        {
46
201k
            if( c == sc )
47
12.9k
            {
48
12.9k
                *s1++ = '\0';
49
12.9k
                *lasts = s1;
50
12.9k
                return tok;
51
12.9k
            }
52
201k
        }
53
201k
    }
54
42.0k
    *lasts = NULL;
55
29.1k
    return tok;
56
42.0k
}