diff options
Diffstat (limited to 'src/regress/lib/libc/regex/split.c')
-rw-r--r-- | src/regress/lib/libc/regex/split.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/regress/lib/libc/regex/split.c b/src/regress/lib/libc/regex/split.c index dd1ca14480..fcd81a3503 100644 --- a/src/regress/lib/libc/regex/split.c +++ b/src/regress/lib/libc/regex/split.c | |||
@@ -1,18 +1,17 @@ | |||
1 | /* $OpenBSD: split.c,v 1.5 2007/09/09 23:25:12 chl Exp $ */ | ||
1 | /* $NetBSD: split.c,v 1.2 1995/04/20 22:39:57 cgd Exp $ */ | 2 | /* $NetBSD: split.c,v 1.2 1995/04/20 22:39:57 cgd Exp $ */ |
2 | 3 | ||
3 | #include <stdio.h> | 4 | #include <stdio.h> |
4 | #include <string.h> | 5 | #include <string.h> |
5 | 6 | ||
7 | int split(char *string, char *fields[], int nfields, char *sep); | ||
8 | |||
6 | /* | 9 | /* |
7 | - split - divide a string into fields, like awk split() | 10 | - split - divide a string into fields, like awk split() |
8 | = int split(char *string, char *fields[], int nfields, char *sep); | 11 | = int split(char *string, char *fields[], int nfields, char *sep); |
9 | */ | 12 | */ |
10 | int /* number of fields, including overflow */ | 13 | int /* number of fields, including overflow */ |
11 | split(string, fields, nfields, sep) | 14 | split(char *string, char *fields[], int nfields, char *sep) |
12 | char *string; | ||
13 | char *fields[]; /* list is not NULL-terminated */ | ||
14 | int nfields; /* number of entries available in fields[] */ | ||
15 | char *sep; /* "" white, "c" single char, "ab" [ab]+ */ | ||
16 | { | 15 | { |
17 | register char *p = string; | 16 | register char *p = string; |
18 | register char c; /* latest character */ | 17 | register char c; /* latest character */ |
@@ -161,18 +160,18 @@ char *argv[]; | |||
161 | 160 | ||
162 | if (argc > 4) | 161 | if (argc > 4) |
163 | for (n = atoi(argv[3]); n > 0; n--) { | 162 | for (n = atoi(argv[3]); n > 0; n--) { |
164 | (void) strcpy(buf, argv[1]); | 163 | (void) strlcpy(buf, argv[1], sizeof buf); |
165 | } | 164 | } |
166 | else if (argc > 3) | 165 | else if (argc > 3) |
167 | for (n = atoi(argv[3]); n > 0; n--) { | 166 | for (n = atoi(argv[3]); n > 0; n--) { |
168 | (void) strcpy(buf, argv[1]); | 167 | (void) strlcpy(buf, argv[1], sizeof buf); |
169 | (void) split(buf, fields, MNF, argv[2]); | 168 | (void) split(buf, fields, MNF, argv[2]); |
170 | } | 169 | } |
171 | else if (argc > 2) | 170 | else if (argc > 2) |
172 | dosplit(argv[1], argv[2]); | 171 | dosplit(argv[1], argv[2]); |
173 | else if (argc > 1) | 172 | else if (argc > 1) |
174 | while (fgets(buf, sizeof(buf), stdin) != NULL) { | 173 | while (fgets(buf, sizeof(buf), stdin) != NULL) { |
175 | buf[strlen(buf)-1] = '\0'; /* stomp newline */ | 174 | buf[strcspn(buf, "\n")] = '\0'; /* stomp newline */ |
176 | dosplit(buf, argv[1]); | 175 | dosplit(buf, argv[1]); |
177 | } | 176 | } |
178 | else | 177 | else |
@@ -287,7 +286,7 @@ regress() | |||
287 | register char *f; | 286 | register char *f; |
288 | 287 | ||
289 | for (n = 0; tests[n].str != NULL; n++) { | 288 | for (n = 0; tests[n].str != NULL; n++) { |
290 | (void) strcpy(buf, tests[n].str); | 289 | (void) strlcpy(buf, tests[n].str, sizeof buf); |
291 | fields[RNF] = NULL; | 290 | fields[RNF] = NULL; |
292 | nf = split(buf, fields, RNF, tests[n].seps); | 291 | nf = split(buf, fields, RNF, tests[n].seps); |
293 | printit = 0; | 292 | printit = 0; |