diff options
Diffstat (limited to 'usr.bin/cvs/update.c')
-rw-r--r-- | usr.bin/cvs/update.c | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/usr.bin/cvs/update.c b/usr.bin/cvs/update.c index ac7792d48d6..e4ef04e14b9 100644 --- a/usr.bin/cvs/update.c +++ b/usr.bin/cvs/update.c @@ -1,4 +1,4 @@ -/* $OpenBSD: update.c,v 1.153 2008/06/14 03:58:29 tobias Exp $ */ +/* $OpenBSD: update.c,v 1.154 2008/06/14 04:34:08 tobias Exp $ */ /* * Copyright (c) 2006 Joris Vink <joris@openbsd.org> * @@ -351,24 +351,29 @@ cvs_update_local(struct cvs_file *cf) else cf->file_status = FILE_CHECKOUT; - cf->file_rcsrev = rcs_head_get(cf->file_rcs); + if ((cf->file_rcsrev = rcs_head_get(cf->file_rcs)) == NULL) + fatal("no head revision in RCS file for %s", + cf->file_path); /* might be a bit overkill */ if (cvs_server_active == 1) cvs_server_clear_sticky(cf->file_wd); } - if (print_stdout && cf->file_status != FILE_UNKNOWN && - !cf->file_rcs->rf_dead) { - rcsnum_tostr(cf->file_rcsrev, rbuf, sizeof(rbuf)); - if (verbosity > 1) { - cvs_log(LP_RCS, RCS_DIFF_DIV); - cvs_log(LP_RCS, "Checking out %s", cf->file_path); - cvs_log(LP_RCS, "RCS: %s", cf->file_rpath); - cvs_log(LP_RCS, "VERS: %s", rbuf); - cvs_log(LP_RCS, "***************"); + if (print_stdout) { + if (cf->file_status != FILE_UNKNOWN && cf->file_rcs != NULL && + cf->file_rcsrev != NULL && !cf->file_rcs->rf_dead) { + rcsnum_tostr(cf->file_rcsrev, rbuf, sizeof(rbuf)); + if (verbosity > 1) { + cvs_log(LP_RCS, RCS_DIFF_DIV); + cvs_log(LP_RCS, "Checking out %s", + cf->file_path); + cvs_log(LP_RCS, "RCS: %s", cf->file_rpath); + cvs_log(LP_RCS, "VERS: %s", rbuf); + cvs_log(LP_RCS, "***************"); + } + cvs_checkout_file(cf, cf->file_rcsrev, tag, CO_DUMP); } - cvs_checkout_file(cf, cf->file_rcsrev, tag, CO_DUMP); return; } @@ -376,7 +381,7 @@ cvs_update_local(struct cvs_file *cf) if (cf->file_ent->ce_opts == NULL) { if (kflag) cf->file_status = FILE_CHECKOUT; - } else { + } else if (cf->file_rcs != NULL) { if (strlen(cf->file_ent->ce_opts) < 3) fatal("malformed option for file %s", cf->file_path); @@ -631,6 +636,12 @@ update_join_file(struct cvs_file *cf) goto out; } + if (cf->file_rcsrev == NULL) { + cvs_printf("non-mergable file: %s has no head revision!\n", + cf->file_path); + goto out; + } + if (rev1 == NULL || !strcmp(state1, RCS_STATE_DEAD)) { if (cf->fd != -1) { cvs_printf("%s exists but has been added in %s\n", |