=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/rcs.c,v retrieving revision 1.268 retrieving revision 1.269 diff -c -r1.268 -r1.269 *** src/usr.bin/cvs/rcs.c 2008/06/10 16:05:04 1.268 --- src/usr.bin/cvs/rcs.c 2008/06/10 20:30:17 1.269 *************** *** 1,4 **** ! /* $OpenBSD: rcs.c,v 1.268 2008/06/10 16:05:04 joris Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: rcs.c,v 1.269 2008/06/10 20:30:17 joris Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. *************** *** 244,249 **** --- 244,250 ---- mode_t fmode; RCSFILE *rfp; va_list vap; + struct stat st; struct rcs_delta *rdp; struct rcs_lock *lkr; *************** *** 255,260 **** --- 256,265 ---- mode = va_arg(vap, int); va_end(vap); fmode = (mode_t)mode; + } else { + if (fstat(fd, &st) == -1) + fatal("rcs_open: %s: fstat: %s", path, strerror(errno)); + fmode = st.st_mode; } fmode &= ~cvs_umask; *************** *** 498,503 **** --- 503,509 ---- } fputs("@\n", fp); } + if (fchmod(fd, rfp->rf_mode) == -1) { saved_errno = errno; (void)unlink(fn);