[Asterisk-cvs] asterisk app.c,1.58,1.59
kpfleming at lists.digium.com
kpfleming at lists.digium.com
Tue May 3 23:36:06 CDT 2005
Update of /usr/cvsroot/asterisk
In directory mongoose.digium.com:/tmp/cvs-serv11351
Modified Files:
app.c
Log Message:
re-implement ast_separate_app_args with clearer code and in a way that doesn't fail with certain combinations of array size and delimiter count
add doxygen docs for ast_separate_app_args
Index: app.c
===================================================================
RCS file: /usr/cvsroot/asterisk/app.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -d -r1.58 -r1.59
--- app.c 29 Apr 2005 17:00:33 -0000 1.58
+++ app.c 4 May 2005 03:43:10 -0000 1.59
@@ -1069,16 +1069,29 @@
int ast_separate_app_args(char *buf, char delim, char **array, int arraylen)
{
- int x = 0;
- memset(array, 0, arraylen * sizeof(char *));
- if (!buf)
+ int x;
+ char *scan;
+ char delims[2];
+
+ if (!buf || !array || !arraylen)
return 0;
- for (array[x] = buf ; x < arraylen && array[x]; x++) {
- if ((array[x+1] = strchr(array[x], delim))) {
- *array[x+1] = '\0';
- array[x+1]++;
- }
+
+ memset(array, 0, arraylen * sizeof(*array));
+
+ scan = buf;
+ delims[0] = delim;
+ delims[1] = '\0';
+ x = 0;
+
+ while (x < arraylen - 1) {
+ array[x] = strsep(&scan, delims);
+ x++;
+ if (!scan)
+ break;
}
+
+ array[x++] = scan;
+
return x;
}
More information about the svn-commits
mailing list