Coverage Report

Created: 2023-03-26 06:28

/src/httpd/srclib/apr/strings/apr_strtok.c
Line
Count
Source (jump to first uncovered line)
1
/* Licensed to the Apache Software Foundation (ASF) under one or more
2
 * contributor license agreements.  See the NOTICE file distributed with
3
 * this work for additional information regarding copyright ownership.
4
 * The ASF licenses this file to You under the Apache License, Version 2.0
5
 * (the "License"); you may not use this file except in compliance with
6
 * the License.  You may obtain a copy of the License at
7
 *
8
 *     http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
17
#ifdef HAVE_STDDEF_H
18
#include <stddef.h>        /* for NULL */
19
#endif
20
21
#include "apr.h"
22
#include "apr_strings.h"
23
24
#define APR_WANT_STRFUNC   /* for strchr() */
25
#include "apr_want.h"
26
27
APR_DECLARE(char *) apr_strtok(char *str, const char *sep, char **last)
28
0
{
29
0
    char *token;
30
31
0
    if (!str)           /* subsequent call */
32
0
        str = *last;    /* start where we left off */
33
34
    /* skip characters in sep (will terminate at '\0') */
35
0
    while (*str && strchr(sep, *str))
36
0
        ++str;
37
38
0
    if (!*str)          /* no more tokens */
39
0
        return NULL;
40
41
0
    token = str;
42
43
    /* skip valid token characters to terminate token and
44
     * prepare for the next call (will terminate at '\0)
45
     */
46
0
    *last = token + 1;
47
0
    while (**last && !strchr(sep, **last))
48
0
        ++*last;
49
50
0
    if (**last) {
51
0
        **last = '\0';
52
0
        ++*last;
53
0
    }
54
55
0
    return token;
56
0
}