=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/admin.c,v retrieving revision 1.39 retrieving revision 1.40 diff -c -r1.39 -r1.40 *** src/usr.bin/cvs/admin.c 2006/11/13 12:51:58 1.39 --- src/usr.bin/cvs/admin.c 2006/12/31 15:33:23 1.40 *************** *** 1,4 **** ! /* $OpenBSD: admin.c,v 1.39 2006/11/13 12:51:58 xsa Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * Copyright (c) 2005 Joris Vink --- 1,4 ---- ! /* $OpenBSD: admin.c,v 1.40 2006/12/31 15:33:23 xsa Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * Copyright (c) 2005 Joris Vink *************** *** 43,52 **** static int runflags = 0; static int lkmode = RCS_LOCK_INVAL; ! static char *alist = NULL; ! static char *comment = NULL; ! static char *elist = NULL; ! static char *orange = NULL; int cvs_admin(int argc, char **argv) --- 43,50 ---- static int runflags = 0; static int lkmode = RCS_LOCK_INVAL; ! static char *alist, *comment, *elist, *logmsg, *logstr, *orange; ! static RCSNUM *logrev; int cvs_admin(int argc, char **argv) *************** *** 57,62 **** --- 55,62 ---- flags = CR_RECURSE_DIRS; + alist = comment = elist = logmsg = logstr = orange = NULL; + while ((ch = getopt(argc, argv, cvs_cmd_admin.cmd_opts)) != -1) { switch (ch) { case 'A': *************** *** 87,92 **** --- 87,93 ---- case 'l': break; case 'm': + logstr = optarg; break; case 'N': break; *************** *** 226,231 **** --- 227,254 ---- } /* no synced anymore */ cf->file_rcs->rf_flags &= ~RCS_SYNCED; + } + + if (logstr != NULL) { + if ((logmsg = strchr(logstr, ':')) == NULL) { + cvs_log(LP_ERR, "missing log message"); + return; + } + + *logmsg++ = '\0'; + if ((logrev = rcsnum_parse(logstr)) == NULL) { + cvs_log(LP_ERR, "`%s' bad revision number", logstr); + return; + } + + if (rcs_rev_setlog(cf->file_rcs, logrev, logmsg) < 0) { + cvs_log(LP_ERR, "failed to set logmsg for `%s' to `%s'", + logstr, logmsg); + rcsnum_free(logrev); + return; + } + + rcsnum_free(logrev); } if (orange != NULL) {