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; |
