summaryrefslogtreecommitdiff
path: root/src/regress/lib/libc/regex/split.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/regress/lib/libc/regex/split.c')
-rw-r--r--src/regress/lib/libc/regex/split.c17
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
7int 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 */
10int /* number of fields, including overflow */ 13int /* number of fields, including overflow */
11split(string, fields, nfields, sep) 14split(char *string, char *fields[], int nfields, char *sep)
12char *string;
13char *fields[]; /* list is not NULL-terminated */
14int nfields; /* number of entries available in fields[] */
15char *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;