All pastes #904152 Raw Edit

Mine

public c v1 · immutable
·published 2008-02-14 19:22 UTC
rendered paste body
--- apps/app_externalivr.c      (revision 103662)+++ apps/app_externalivr.c      (working copy)@@ -228,18 +228,18 @@  static void ast_eivr_getvariable(struct ast_channel *chan, char *data, char *outbuf, int outbuflen) {-       // original input data: "G,var1,var2,"-       // data passed as "data":  "var1,var2"+       /* original input data: "G,var1,var2," */+       /* data passed as "data":  "var1,var2" */+                char *inbuf, *variable;-        const char *value;-       char *saveptr;        int j;+       struct ast_str *newstring = ast_str_alloca(outbuflen);  -       outbuf[0] = 0;+       outbuf[0] = '\0'; -       for (j = 1, inbuf = data; ; j++, inbuf = NULL) {-               variable = strtok_r(inbuf, ",", &saveptr);+       for (j = 1, inbuf = data; ; j++) {+               variable = strsep(&inbuf, ",");                if (variable == NULL) {                        int outstrlen = strlen(outbuf);                        if(outstrlen && outbuf[outstrlen - 1] == ',') {@@ -251,10 +251,8 @@                value = pbx_builtin_getvar_helper(chan, variable);                if(!value)                        value = "";-               strncat(outbuf,variable,outbuflen);-               strncat(outbuf,"=",outbuflen);-               strncat(outbuf,value,outbuflen);-               strncat(outbuf,",",outbuflen);+               ast_str_append(&newstring, outbuflen, "%s=%s,", variable, value);+               ast_copy_string(outbuf, newstring->str, outbuflen);        } }; @@ -265,28 +263,24 @@         char *inbuf, *variable; -       char *saveptr;        int j; -       for(j=1, inbuf=data; ; j++, inbuf=NULL) {-               variable = strtok_r(inbuf, ",", &saveptr);+       for (j = 1, inbuf = data; ; j++, inbuf = NULL) {+               variable = strsep(&inbuf, ",");                ast_chan_log(LOG_DEBUG, chan, "Setting up a variable: %s\n", variable);                if(variable) {                        //variable contains "varname=value"-                       strncpy(buf, variable, sizeof(buf));+                       ast_copy_string(buf, variable, sizeof(buf));                        value = strchr(buf, '=');                        if(!value)                                 value="";-                       else {-                               value[0] = 0;-                               value++;-                       }+                       else+                               *value++ = '\0';                        pbx_builtin_setvar_helper(chan, buf, value);                }-               else break;-+               else+                       break;        }- };  static struct playlist_entry *make_entry(const char *filename)