| 50 | |
| 51 | |
| 52 | module_dependency_t *_alloc_module_dep(enum module_type mod_type, char *mod_name, |
| 53 | unsigned int dep_type, ... /* , MOD_TYPE_NULL */) |
| 54 | { |
| 55 | va_list ap; |
| 56 | module_dependency_t *md; |
| 57 | int ndeps = 1; |
| 58 | |
| 59 | /* always keep a zeroed entry at the end */ |
| 60 | md = pkg_malloc(2 * sizeof *md); |
| 61 | if (!md) { |
| 62 | LM_ERR("oom\n"); |
| 63 | return NULL; |
| 64 | } |
| 65 | |
| 66 | memset(md, 0, 2 * sizeof *md); |
| 67 | md->mod_type = mod_type; |
| 68 | md->mod_name = mod_name; |
| 69 | md->type = dep_type; |
| 70 | |
| 71 | va_start(ap, dep_type); |
| 72 | |
| 73 | for (;;) { |
| 74 | mod_type = va_arg(ap, enum module_type); |
| 75 | if (mod_type == MOD_TYPE_NULL) |
| 76 | break; |
| 77 | |
| 78 | ndeps++; |
| 79 | |
| 80 | md = pkg_realloc(md, (ndeps + 1) * sizeof *md); |
| 81 | if (!md) { |
| 82 | LM_ERR("oom\n"); |
| 83 | va_end(ap); |
| 84 | return NULL; |
| 85 | } |
| 86 | memset(&md[ndeps], 0, sizeof *md); |
| 87 | |
| 88 | md[ndeps - 1].mod_type = mod_type; |
| 89 | md[ndeps - 1].mod_name = va_arg(ap, char *); |
| 90 | md[ndeps - 1].type = va_arg(ap, unsigned int); |
| 91 | } |
| 92 | |
| 93 | va_end(ap); |
| 94 | return md; |
| 95 | } |
| 96 | |
| 97 | |
| 98 | module_dependency_t *get_deps_sqldb_url(const param_export_t *param) |
no outgoing calls
no test coverage detected