=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/commit.c,v retrieving revision 1.120 retrieving revision 1.121 diff -c -r1.120 -r1.121 *** src/usr.bin/cvs/commit.c 2008/01/28 20:31:07 1.120 --- src/usr.bin/cvs/commit.c 2008/01/28 21:26:51 1.121 *************** *** 1,4 **** ! /* $OpenBSD: commit.c,v 1.120 2008/01/28 20:31:07 tobias Exp $ */ /* * Copyright (c) 2006 Joris Vink * Copyright (c) 2006 Xavier Santolaria --- 1,4 ---- ! /* $OpenBSD: commit.c,v 1.121 2008/01/28 21:26:51 tobias Exp $ */ /* * Copyright (c) 2006 Joris Vink * Copyright (c) 2006 Xavier Santolaria *************** *** 54,70 **** int cvs_commit(int argc, char **argv) { ! int ch; char *arg = "."; int flags; struct cvs_recursion cr; flags = CR_RECURSE_DIRS; while ((ch = getopt(argc, argv, cvs_cmd_commit.cmd_opts)) != -1) { switch (ch) { case 'F': logmsg = cvs_logmsg_read(optarg); break; case 'f': break; --- 54,75 ---- int cvs_commit(int argc, char **argv) { ! int ch, Fflag, mflag; char *arg = "."; int flags; struct cvs_recursion cr; flags = CR_RECURSE_DIRS; + Fflag = mflag = 0; while ((ch = getopt(argc, argv, cvs_cmd_commit.cmd_opts)) != -1) { switch (ch) { case 'F': + /* free previously assigned value */ + if (logmsg != NULL) + xfree(logmsg); logmsg = cvs_logmsg_read(optarg); + Fflag = 1; break; case 'f': break; *************** *** 72,78 **** --- 77,87 ---- flags &= ~CR_RECURSE_DIRS; break; case 'm': + /* free previously assigned value */ + if (logmsg != NULL) + xfree(logmsg); logmsg = xstrdup(optarg); + mflag = 1; break; case 'R': flags |= CR_RECURSE_DIRS; *************** *** 86,91 **** --- 95,104 ---- argc -= optind; argv += optind; + + /* -F and -m are mutually exclusive */ + if (Fflag && mflag) + fatal("cannot specify both a log file and a message"); TAILQ_INIT(&files_affected); TAILQ_INIT(&files_added);