rem: if (fw->ip.iniface_mask[strlen(fw->ip.iniface)] == 0) strcat(iface, "+");
context: print_firewall(const struct ipt_entry *fw,	       const char *targname,	       unsigned int num,	       unsigned int format,	       const iptc_handle_t handle){	struct iptables_target *target = NULL;	const struct ipt_entry_target *t;	u_int8_t flags;	char buf[BUFSIZ];	/* User creates a chain called "REJECT": this overrides the	   `REJECT' target module.  Keep feeding them rope until the	   revolution... Bwahahahahah */	if (!iptc_is_chain(targname, handle))		target = find_target(targname, TRY_LOAD);	else		target = find_target(IPT_STANDARD_TARGET, LOAD_MUST_SUCCEED);	t = ipt_get_target((struct ipt_entry *)fw);	flags = fw->ip.flags;	if (format & FMT_LINENUMBERS)		printf(FMT("%-4u ", "%u "), num+1);	if (!(format & FMT_NOCOUNTS)) {		print_num(fw->counters.pcnt, format);		print_num(fw->counters.bcnt, format);	}	if (!(format & FMT_NOTARGET))		printf(FMT("%-9s ", "%s "), targname);	fputc(fw->ip.invflags & IPT_INV_PROTO ? '!' : ' ', stdout);	{		char *pname = proto_to_name(fw->ip.proto, format&FMT_NUMERIC);		if (pname)			printf(FMT("%-5s", "%s "), pname);		else			printf(FMT("%-5hu", "%hu "), fw->ip.proto);	}	if (format & FMT_OPTIONS) {		if (format & FMT_NOTABLE)			fputs("opt ", stdout);		fputc(fw->ip.invflags & IPT_INV_FRAG ? '!' : '-', stdout);		fputc(flags & IPT_F_FRAG ? 'f' : '-', stdout);		fputc(' ', stdout);	}	if (format & FMT_VIA) {		char iface[IFNAMSIZ+2];		if (fw->ip.invflags & IPT_INV_VIA_IN) {			iface[0] = '!';			iface[1] = '\0';		}		else iface[0] = '\0';		if (fw->ip.iniface[0] != '\0') {			strcat(iface, fw->ip.iniface);			/* If it doesn't compare the nul-term, it's a			   wildcard. */			if (fw->ip.iniface_mask[strlen(fw->ip.iniface)] == 0)				strcat(iface, "+");		}		else if (format & FMT_NUMERIC) strcat(iface, "*");		else strcat(iface, "any");		printf(FMT(" %-6s ","in %s "), iface);		if (fw->ip.invflags & IPT_INV_VIA_OUT) {			iface[0] = '!';			iface[1] = '\0';		}		else iface[0] = '\0';		if (fw->ip.outiface[0] != '\0') {			strcat(iface, fw->ip.outiface);			/* If it doesn't compare the nul-term, it's a			   wildcard. */			if (fw->ip.outiface_mask[strlen(fw->ip.outiface)] == 0)				strcat(iface, "+");		}		else if (format & FMT_NUMERIC) strcat(iface, "*");		else strcat(iface, "any");		printf(FMT("%-6s ","out %s "), iface);	}	fputc(fw->ip.invflags & IPT_INV_SRCIP ? '!' : ' ', stdout);	if (fw->ip.smsk.s_addr == 0L && !(format & FMT_NUMERIC))		printf(FMT("%-19s ","%s "), "anywhere");	else {		if (format & FMT_NUMERIC)			sprintf(buf, "%s", addr_to_dotted(&(fw->ip.src)));		else			sprintf(buf, "%s", addr_to_anyname(&(fw->ip.src)));		strcat(buf, mask_to_dotted(&(fw->ip.smsk)));		printf(FMT("%-19s ","%s "), buf);	}	fputc(fw->ip.invflags & IPT_INV_DSTIP ? '!' : ' ', stdout);	if (fw->ip.dmsk.s_addr == 0L && !(format & FMT_NUMERIC))		printf(FMT("%-19s","-> %s"), "anywhere");	else {		if (format & FMT_NUMERIC)			sprintf(buf, "%s", addr_to_dotted(&(fw->ip.dst)));		else			sprintf(buf, "%s", addr_to_anyname(&(fw->ip.dst)));		strcat(buf, mask_to_dotted(&(fw->ip.dmsk)));		printf(FMT("%-19s","-> %s"), buf);	}	if (format & FMT_NOTABLE)		fputs("  ", stdout);	IPT_MATCH_ITERATE(fw, print_match, &fw->ip, format & FMT_NUMERIC);	if (target) {		if (target->print)			/* Print the target information. */			target->print(&fw->ip, t, format & FMT_NUMERIC);	} else if (t->u.target_size != sizeof(*t))		printf("[%u bytes of unknown target data] ",		       t->u.target_size - sizeof(*t));	if (!(format & FMT_NONEWLINE))		fputc('\n', stdout);}