Skip to content

Commit 81d0731

Browse files
committed
adding own impl of strtok to fix warnings
1 parent a7cfb8c commit 81d0731

File tree

3 files changed

+83
-2
lines changed

3 files changed

+83
-2
lines changed

helpers/flipbip39_string.c

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*
2+
* Copyright (c) 1988 Regents of the University of California.
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
* 1. Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* 2. Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in the
12+
* documentation and/or other materials provided with the distribution.
13+
* 3. Neither the name of the University nor the names of its contributors
14+
* may be used to endorse or promote products derived from this software
15+
* without specific prior written permission.
16+
*
17+
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20+
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27+
* SUCH DAMAGE.
28+
*/
29+
#include "flipbip39_string.h"
30+
#include <string.h>
31+
char *
32+
flipbip39_strtok(char *s, const char *delim)
33+
{
34+
static char *last;
35+
return flipbip39_strtok_r(s, delim, &last);
36+
}
37+
char *
38+
flipbip39_strtok_r(char *s, const char *delim, char **last)
39+
{
40+
char *spanp;
41+
int c, sc;
42+
char *tok;
43+
if (s == NULL && (s = *last) == NULL)
44+
return (NULL);
45+
/*
46+
* Skip (span) leading delimiters (s += strspn(s, delim), sort of).
47+
*/
48+
cont:
49+
c = *s++;
50+
for (spanp = (char *)delim; (sc = *spanp++) != 0;) {
51+
if (c == sc)
52+
goto cont;
53+
}
54+
if (c == 0) { /* no non-delimiter characters */
55+
*last = NULL;
56+
return (NULL);
57+
}
58+
tok = s - 1;
59+
/*
60+
* Scan token (scan for delimiters: s += strcspn(s, delim), sort of).
61+
* Note that delim must have one NUL; we stop if we see that, too.
62+
*/
63+
for (;;) {
64+
c = *s++;
65+
spanp = (char *)delim;
66+
do {
67+
if ((sc = *spanp++) == c) {
68+
if (c == 0)
69+
s = NULL;
70+
else
71+
s[-1] = 0;
72+
*last = s;
73+
return (tok);
74+
}
75+
} while (sc != 0);
76+
}
77+
/* NOTREACHED */
78+
}

helpers/flipbip39_string.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
char * flipbip39_strtok(char *s, const char *delim);
2+
char * flipbip39_strtok_r(char *s, const char *delim, char **last);

views/flipbip39_scene_1.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "../helpers/flipbip39_haptic.h"
88
#include "../helpers/flipbip39_speaker.h"
99
#include "../helpers/flipbip39_led.h"
10+
#include "../helpers/flipbip39_string.h"
1011

1112
#include <string.h>
1213
// #include "../crypto/bip32.h"
@@ -86,7 +87,7 @@ static void flipbip39_scene_1_model_init(FlipBip39Scene1Model* const model, cons
8687
}
8788

8889
// Split the mnemonic into parts
89-
char *ptr = strtok(str, ",");
90+
char *ptr = flipbip39_strtok(str, ",");
9091
int partnum = 0;
9192
while(ptr != NULL)
9293
{
@@ -101,7 +102,7 @@ static void flipbip39_scene_1_model_init(FlipBip39Scene1Model* const model, cons
101102
if (partnum == 5) model->mnemonic5 = part;
102103
if (partnum == 6) model->mnemonic6 = part;
103104

104-
ptr = strtok(NULL, ",");
105+
ptr = flipbip39_strtok(NULL, ",");
105106
}
106107

107108

0 commit comments

Comments
 (0)