rem: rprintf(FINFO, "[%s] add_filter_file(%s,%d)%s\n", who_am_i(), safe_fname(fname), xflags,
add: rprintf(FINFO, "[%s] add_filter_file(%s,%x,%x)%s\n", who_am_i(), safe_fname(fname), mflags, xflags,
context: void add_filter_file(struct filter_list_struct *listp, const char *fname,		     int xflags){	FILE *fp;	char line[MAXPATHLEN+MAX_RULE_PREFIX+1]; /* +1 for trailing slash. */	char *eob = line + sizeof line - 1;	int word_split = xflags & XFLG_WORD_SPLIT;	if (!fname || !*fname)		return;	if (*fname != '-' || fname[1] || am_server) {		if (server_filter_list.head) {			strlcpy(line, fname, sizeof line);			clean_fname(line, 1);			if (check_filter(&server_filter_list, line, 0) < 0)				fp = NULL;			else				fp = fopen(line, "rb");		} else			fp = fopen(fname, "rb");	} else		fp = stdin;	if (verbose > 2) {		rprintf(FINFO, "[%s] add_filter_file(%s,%d)%s\n",			who_am_i(), safe_fname(fname), xflags,			fp ? "" : " [not found]");	}	if (!fp) {		if (xflags & XFLG_FATAL_ERRORS) {			rsyserr(FERROR, errno,				"failed to open %sclude file %s",				xflags & XFLG_DEF_INCLUDE ? "in" : "ex",				safe_fname(fname));			exit_cleanup(RERR_FILEIO);		}		return;	}	dirbuf[dirbuf_len] = '\0';	while (1) {		char *s = line;		int ch, overflow = 0;		while (1) {			if ((ch = getc(fp)) == EOF) {				if (ferror(fp) && errno == EINTR)					continue;				break;			}			if (word_split && isspace(ch))				break;			if (eol_nulls? !ch : (ch == '\n' || ch == '\r'))				break;			if (s < eob)				*s++ = ch;			else				overflow = 1;		}		if (overflow) {			rprintf(FERROR, "discarding over-long filter: %s...\n", line);			s = line;		}		*s = '\0';		/* Skip an empty token and (when line parsing) comments. */		if (*line && (word_split || (*line != ';' && *line != '#')))			add_filter(listp, line, xflags);		if (ch == EOF)			break;	}	fclose(fp);}