=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rcs/ci.c,v retrieving revision 1.15 retrieving revision 1.16 diff -c -r1.15 -r1.16 *** src/usr.bin/rcs/ci.c 2005/10/09 21:17:59 1.15 --- src/usr.bin/rcs/ci.c 2005/10/10 14:21:37 1.16 *************** *** 1,4 **** ! /* $OpenBSD: ci.c,v 1.15 2005/10/09 21:17:59 niallo Exp $ */ /* * Copyright (c) 2005 Niall O'Higgins * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: ci.c,v 1.16 2005/10/10 14:21:37 niallo Exp $ */ /* * Copyright (c) 2005 Niall O'Higgins * All rights reserved. *************** *** 69,87 **** int checkin_main(int argc, char **argv) { ! int i, ch, dflag, flags, lkmode, interactive, rflag; mode_t fmode; RCSFILE *file; RCSNUM *frev, *newrev; char fpath[MAXPATHLEN]; char *rcs_msg, *filec, *deltatext, *username; BUF *bp; flags = RCS_RDWR; file = NULL; rcs_msg = NULL; newrev = NULL; ! fmode = lkmode = dflag = verbose = rflag = 0; interactive = 1; if ((username = getlogin()) == NULL) { --- 69,88 ---- int checkin_main(int argc, char **argv) { ! int i, ch, dflag, flags, lkmode, interactive, rflag, status; mode_t fmode; RCSFILE *file; RCSNUM *frev, *newrev; char fpath[MAXPATHLEN]; char *rcs_msg, *filec, *deltatext, *username; + struct rcs_lock *lkp; BUF *bp; flags = RCS_RDWR; file = NULL; rcs_msg = NULL; newrev = NULL; ! fmode = lkmode = dflag = verbose = rflag = status = 0; interactive = 1; if ((username = getlogin()) == NULL) { *************** *** 167,172 **** --- 168,195 ---- frev = file->rf_head; /* + * Check for a lock belonging to this user. If none, + * abort check-in. + */ + if (TAILQ_EMPTY(&(file->rf_locks))) { + cvs_log(LP_ERR, "%s: no lock set by %s", fpath, + username); + status = 1; + continue; + } else { + TAILQ_FOREACH(lkp, &(file->rf_locks), rl_list) { + if ((strcmp(lkp->rl_name, username) != 0) + && (rcsnum_cmp(lkp->rl_num, frev, 0))) { + cvs_log(LP_ERR, + "%s: no lock set by %s", fpath, + username); + status = 1; + continue; + } + } + } + + /* * If no log message specified, get it interactively. */ if (rcs_msg == NULL) *************** *** 263,269 **** } } ! return (0); } static char * --- 286,292 ---- } } ! return (status); } static char *