while ((ch = rcs_getopt(argc, argv, "k:p::q::r:TV")) != -1) {
while ((ch = rcs_getopt(argc, argv, "k:p::q::r:TVx:")) != -1) {
rcsmerge_main(int argc, char **argv){	int i, ch;	char *fcont, fpath[MAXPATHLEN];	RCSFILE *file;	RCSNUM *baserev, *rev2, *frev;	BUF *bp;	baserev = rev2 = RCS_HEAD_REV;	while ((ch = rcs_getopt(argc, argv, "k:p::q::r:TV")) != -1) {		switch (ch) {		case 'k':			kflag = rcs_kflag_get(rcs_optarg);			if (RCS_KWEXP_INVAL(kflag)) {				cvs_log(LP_ERR,				    "invalid RCS keyword expansion mode");				(usage)();				exit(1);			}			break;		case 'p':			rcs_set_rev(rcs_optarg, &baserev);			pipeout = 1;			break;		case 'q':			rcs_set_rev(rcs_optarg, &baserev);			verbose = 0;			break;		case 'r':			if (baserev == RCS_HEAD_REV)				rcs_set_rev(rcs_optarg, &baserev);			else if (rev2 == RCS_HEAD_REV)				rcs_set_rev(rcs_optarg, &rev2);			else				cvs_log(LP_WARN, "ignored excessive -r option");			break;		case 'T':			/*			 * kept for compatibility			 */			break;		case 'V':			printf("%s\n", rcs_version);			exit(0);		default:			break;		}	}	argc -= rcs_optind;	argv += rcs_optind;	if (argc < 0) {		cvs_log(LP_ERR, "no input file");		(usage)();		exit(1);	}	if (baserev == RCS_HEAD_REV) {		cvs_log(LP_ERR, "no base revision number given");		(usage)();		exit(1);	}	for (i = 0; i < argc; i++) {		if (rcs_statfile(argv[i], fpath, sizeof(fpath)) < 0)			continue;		if ((file = rcs_open(fpath, RCS_READ)) == NULL)			continue;		if (rev2 == RCS_HEAD_REV)			frev = file->rf_head;		else			frev = rev2;		printf("RCS file: %s\n", fpath);		if ((bp = cvs_diff3(file, argv[i], baserev, frev)) == NULL) {			cvs_log(LP_ERR, "failed to merge");			rcs_close(file);			continue;		}		if (pipeout == 1) {			if (cvs_buf_putc(bp, '\0') < 0) {				rcs_close(file);				continue;			}			fcont = cvs_buf_release(bp);			printf("%s", fcont);			free(fcont);		} else {			/* XXX mode */			if (cvs_buf_write(bp, argv[i], 0644) < 0)				cvs_log(LP_ERR, "failed to write new file");			cvs_buf_free(bp);		}		if (diff3_conflicts > 0) {			cvs_log(LP_WARN, "%d conflict%s found during merge",			    diff3_conflicts, (diff3_conflicts > 1) ? "s": "");		}		rcs_close(file);	}	return (0);}