rem: if (!chain) { const char *i, *last = NULL; int ret = 1;   for (i = iptc_next_chain(NULL, handle); i && iptc_builtin(i, *handle); i = iptc_next_chain(i, handle)) last = i;   if (!i) return ret;    while ((i = iptc_next_chain(last, handle)) != NULL) {  if (!delete_chain(i, verbose, handle)) {  last = i; ret = 0; } } return ret; }
add: if (!chain) return for_each_chain(delete_chain, verbose, 0, handle);
context: delete_chain(const ipt_chainlabel chain, int verbose,	     iptc_handle_t *handle){	if (!chain) {		const char *i, *last = NULL;		int ret = 1;		/* Iterate over built-ins */		for (i = iptc_next_chain(NULL, handle);		     i && iptc_builtin(i, *handle);		     i = iptc_next_chain(i, handle))			last = i;		/* No user-defined chains? */		if (!i)			return ret;		/* Be careful iterating: it isn't safe during delete. */		/* Re-iterate after each delete successful */		while ((i = iptc_next_chain(last, handle)) != NULL) {			/* Skip over builtins. */			if (!delete_chain(i, verbose, handle)) {				/* Delete failed; start next				   iteration from here */				last = i;				ret = 0;			}		}		return ret;	}	if (verbose)	        fprintf(stdout, "Deleting chain `%s'\n", chain);	return iptc_delete_chain(chain, handle);}