projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mhl and mhbuild ignore to long lines
[mmh]
/
sbr
/
brkstring.c
diff --git
a/sbr/brkstring.c
b/sbr/brkstring.c
index
da42d61
..
a9446fe
100644
(file)
--- a/
sbr/brkstring.c
+++ b/
sbr/brkstring.c
@@
-7,6
+7,7
@@
** complete copyright information.
*/
** complete copyright information.
*/
+#include <sysexits.h>
#include <h/mh.h>
#include <h/utils.h>
#include <h/mh.h>
#include <h/utils.h>
@@
-29,7
+30,7
@@
brkstring(char *str, char *brksep, char *brkterm)
/* allocate initial space for pointers on first call */
if (!broken) {
len = NUMBROKEN;
/* allocate initial space for pointers on first call */
if (!broken) {
len = NUMBROKEN;
- broken = (char **)mh_xmalloc((size_t)(len * sizeof(*broken)));
+ broken = mh_xcalloc(len, sizeof(*broken));
}
/*
}
/*
@@
-41,12
+42,11
@@
brkstring(char *str, char *brksep, char *brkterm)
/* enlarge pointer array, if necessary */
if (i >= len) {
len += NUMBROKEN;
/* enlarge pointer array, if necessary */
if (i >= len) {
len += NUMBROKEN;
- broken = mh_xrealloc(broken,
- (size_t)(len * sizeof(*broken)));
+ broken = mh_xrealloc(broken, len * sizeof(*broken));
}
/* handle separators */
}
/* handle separators */
- while ((c=*s) && strchr(brksep, c)) {
+ while ((c=*s) && brksep && strchr(brksep, c)) {
*s++ = '\0';
}
*s++ = '\0';
}
@@
-54,7
+54,7
@@
brkstring(char *str, char *brksep, char *brkterm)
** we are either at the end of the string, or the
** terminator found has been found, so finish up.
*/
** we are either at the end of the string, or the
** terminator found has been found, so finish up.
*/
- if (!c || strchr(brkterm, c)) {
+ if (!c || (brkterm && strchr(brkterm, c))) {
*s = '\0';
broken[i] = NULL;
return broken;
*s = '\0';
broken[i] = NULL;
return broken;
@@
-62,9
+62,14
@@
brkstring(char *str, char *brksep, char *brkterm)
/* set next start addr and walk over word */
broken[i] = s;
/* set next start addr and walk over word */
broken[i] = s;
- while ((c=*++s) && !strchr(brksep, c) && !strchr(brkterm, c)) {
- continue;
+ while ((c = *++s)) {
+ if (brksep && strchr(brksep, c)) {
+ break;
+ }
+ if (brkterm && strchr(brkterm, c)) {
+ break;
+ }
}
}
}
}
- adios("brkstring()", "reached unreachable point");
+ adios(EX_SOFTWARE, "brkstring()", "reached unreachable point");
}
}