Changeset 5661:efd1ca5963ee in roaraudio for libroar/plugincontainer.c
- Timestamp:
- 09/22/12 22:30:52 (12 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/plugincontainer.c
r5504 r5661 87 87 } 88 88 89 static inline void _copy_str(char ** dst, const char * src) {90 for (; *src; src++, (*dst)++) **dst = *src;91 *((*dst)++) = 0;92 }93 94 static void * _copy_kv(struct roar_keyval ** copy, struct roar_keyval * src, size_t len) {95 size_t buflen = 0;96 size_t i;97 void * ret;98 char * p;99 struct roar_keyval * c;100 101 for (i = 0; i < len; i++) {102 if ( src[i].key != NULL )103 buflen += roar_mm_strlen(src[i].key) + 1;104 if ( src[i].value != NULL )105 buflen += roar_mm_strlen(src[i].value) + 1;106 }107 108 c = roar_mm_malloc(len * sizeof(struct roar_keyval));109 if ( c == NULL )110 return NULL;111 112 memset(c, 0, len * sizeof(struct roar_keyval));113 114 ret = roar_mm_malloc(buflen);115 if ( ret == NULL )116 return NULL;117 118 memset(ret, 0, buflen);119 120 p = ret;121 122 for (i = 0; i < len; i++) {123 if ( src[i].key == NULL ) {124 c[i].key = NULL;125 } else {126 c[i].key = p;127 _copy_str(&p, src[i].key);128 }129 130 if ( src[i].value == NULL ) {131 c[i].value = NULL;132 } else {133 c[i].value = p;134 _copy_str(&p, src[i].value);135 }136 }137 138 *copy = c;139 return ret;140 }141 142 89 static struct roar_dl_librarypara * _copy_para(struct roar_dl_librarypara * para, struct roar_plugincontainer * cont) { 143 90 struct roar_dl_librarypara * ret = NULL; … … 153 100 if ( para->argc && para->argv != NULL ) { 154 101 ret->argc = para->argc; 155 ret->args_store = _copy_kv(&(ret->argv), para->argv, para->argc);102 ret->args_store = roar_keyval_copy(&(ret->argv), para->argv, para->argc); 156 103 if ( ret->args_store == NULL ) { 157 104 err = roar_error;
Note: See TracChangeset
for help on using the changeset viewer.