=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/rcs.c,v retrieving revision 1.112 retrieving revision 1.113 diff -c -r1.112 -r1.113 *** src/usr.bin/cvs/rcs.c 2005/12/19 17:43:01 1.112 --- src/usr.bin/cvs/rcs.c 2005/12/20 16:55:21 1.113 *************** *** 1,4 **** ! /* $OpenBSD: rcs.c,v 1.112 2005/12/19 17:43:01 xsa Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: rcs.c,v 1.113 2005/12/20 16:55:21 xsa Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. *************** *** 457,472 **** return (0); strlcpy(fn, "/tmp/rcs.XXXXXXXXXX", sizeof(fn)); ! if ((fd = mkstemp(fn)) == -1 || ! (fp = fdopen(fd, "w+")) == NULL) { ! if (fd != -1) { ! unlink(fn); ! close(fd); ! } ! rcs_errno = RCS_ERR_ERRNO; ! cvs_log(LP_ERRNO, "failed to open temp RCS output file `%s'", ! fn); ! return (-1); } if (rfp->rf_head != NULL) --- 457,469 ---- return (0); strlcpy(fn, "/tmp/rcs.XXXXXXXXXX", sizeof(fn)); ! if ((fd = mkstemp(fn)) == -1) ! fatal("mkstemp: `%s': %s", fn, strerror(errno)); ! ! if ((fp = fdopen(fd, "w+")) == NULL) { ! fd = errno; ! unlink(fn); ! fatal("fdopen: %s", strerror(fd)); } if (rfp->rf_head != NULL) *************** *** 584,592 **** /* rename() not supported so we have to copy. */ if ((chmod(rfp->rf_path, S_IWUSR) == -1) && !(rfp->rf_flags & RCS_CREATE)) { ! cvs_log(LP_ERRNO, "failed to chmod `%s'", ! rfp->rf_path); ! return (-1); } if ((from_fd = open(fn, O_RDONLY)) == -1) { --- 581,588 ---- /* rename() not supported so we have to copy. */ if ((chmod(rfp->rf_path, S_IWUSR) == -1) && !(rfp->rf_flags & RCS_CREATE)) { ! fatal("chmod(%s, 0%o) failed", ! rfp->rf_path, S_IWUSR); } if ((from_fd = open(fn, O_RDONLY)) == -1) { *************** *** 1609,1621 **** pdp->rp_lines = 0; pdp->rp_pttype = RCS_TOK_ERR; ! pdp->rp_file = fopen(rfp->rf_path, "r"); ! if (pdp->rp_file == NULL) { ! rcs_errno = RCS_ERR_ERRNO; ! cvs_log(LP_ERRNO, "failed to open RCS file `%s'", rfp->rf_path); ! rcs_freepdata(pdp); ! return (-1); ! } pdp->rp_buf = (char *)xmalloc((size_t)RCS_BUFSIZE); pdp->rp_blen = RCS_BUFSIZE; --- 1605,1612 ---- pdp->rp_lines = 0; pdp->rp_pttype = RCS_TOK_ERR; ! if ((pdp->rp_file = fopen(rfp->rf_path, "r")) == NULL) ! fatal("fopen: `%s': %s", rfp->rf_path, strerror(errno)); pdp->rp_buf = (char *)xmalloc((size_t)RCS_BUFSIZE); pdp->rp_blen = RCS_BUFSIZE;