- } \
- lst = action->multi_add[__index]->first; \
- while (lst) \
- { \
- result = strsav(result, "\n<br>+" __name "{"); \
- result = strsav(result, lst->str); \
- result = strsav(result, "}"); \
- lst = lst->next; \
+ string_append(&result, enc_str); \
+ free(enc_str); \
+ string_append(&result, "}"); \
+ }
+
+#define DEFINE_ACTION_MULTI(__name, __index) \
+ if (action->multi_remove_all[__index]) \
+ { \
+ string_append(&result, "\n<br>-" __name "{*}"); \
+ } \
+ else \
+ { \
+ lst = action->multi_remove[__index]->first; \
+ while (lst) \
+ { \
+ string_append(&result, "\n<br>-" __name "{");\
+ if (NULL == result) \
+ { \
+ return NULL; \
+ } \
+ enc_str = html_encode(lst->str); \
+ if (NULL == enc_str) \
+ { \
+ free(result); \
+ return NULL; \
+ } \
+ string_append(&result, enc_str); \
+ free(enc_str); \
+ string_append(&result, "}"); \
+ lst = lst->next; \
+ } \
+ } \
+ lst = action->multi_add[__index]->first; \
+ while (lst) \
+ { \
+ string_append(&result, "\n<br>+" __name "{"); \
+ if (NULL == result) \
+ { \
+ return NULL; \
+ } \
+ enc_str = html_encode(lst->str); \
+ if (NULL == enc_str) \
+ { \
+ free(result); \
+ return NULL; \
+ } \
+ string_append(&result, enc_str); \
+ free(enc_str); \
+ string_append(&result, "}"); \
+ lst = lst->next; \