rem: case 'f': n = f_name(file); break;
add: case 'f': slprintf(buf2, sizeof(buf2)-1, "%s/%s", file->basedir?file->basedir:"", f_name(file)); clean_fname(buf2); n = buf2; break;
context: static void log_formatted(char *op, struct file_struct *file,			  struct stats *initial_stats){	extern int module_id;	extern char *auth_user;	char buf[1024];	char *p, *s, *n;	char buf2[100];	int l;	extern struct stats stats;			extern int am_sender;	int64 b;	strlcpy(buf, lp_log_format(module_id), sizeof(buf)-1);		for (s=&buf[0]; 	     s && (p=strchr(s,'%')); ) {		n = NULL;		s = p + 1;		switch (p[1]) {		case 'h': n = client_name(0); break;		case 'a': n = client_addr(0); break;		case 'l': 			slprintf(buf2,sizeof(buf2)-1,"%.0f", 				 (double)file->length); 			n = buf2;			break;		case 'p': 			slprintf(buf2,sizeof(buf2)-1,"%d", 				 (int)getpid()); 			n = buf2;			break;		case 'o': n = op; break;		case 'f': n = f_name(file); break;		case 'm': n = lp_name(module_id); break;		case 'P': n = lp_path(module_id); break;		case 'u': n = auth_user; break;		case 'b': 			if (am_sender) {				b = stats.total_written - 					initial_stats->total_written;			} else {				b = stats.total_read - 					initial_stats->total_read;			}			slprintf(buf2,sizeof(buf2)-1,"%.0f", (double)b); 			n = buf2;			break;		case 'c': 			if (!am_sender) {				b = stats.total_written - 					initial_stats->total_written;			} else {				b = stats.total_read - 					initial_stats->total_read;			}			slprintf(buf2,sizeof(buf2)-1,"%.0f", (double)b); 			n = buf2;			break;		}		if (!n) continue;		l = strlen(n);		if ((l-1) + ((int)(s - &buf[0])) > sizeof(buf)) {			rprintf(FERROR,"buffer overflow expanding %%%c - exiting\n",				p[0]);			exit_cleanup(1);		}		if (l != 2) {			memmove(s+(l-1), s+1, strlen(s+1)+1);		}		memcpy(p, n, l);		s = p+l;	}	rprintf(FLOG,"%s\n", buf);}