| 2182 | |
| 2183 | |
| 2184 | void tmrec_expr_free(tmrec_expr *_trx) |
| 2185 | { |
| 2186 | struct list_head *el, *next; |
| 2187 | tmrec_expr_t *exp, *trx = (tmrec_expr_t *)_trx; |
| 2188 | osips_free_t free_f; |
| 2189 | |
| 2190 | if (!trx) |
| 2191 | return; |
| 2192 | |
| 2193 | free_f = (trx->flags & PKG_ALLOC ? |
| 2194 | osips_pkg_free : osips_shm_free); |
| 2195 | |
| 2196 | list_for_each_safe (el, next, &trx->operands) { |
| 2197 | exp = list_entry(el, tmrec_expr_t, list); |
| 2198 | tmrec_expr_free(exp); |
| 2199 | } |
| 2200 | |
| 2201 | free_f(trx->tr.tz); |
| 2202 | free_f(trx); |
| 2203 | } |
| 2204 | |
| 2205 | |
| 2206 | int _tz_offset(const char *tz, time_t t) |