=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rcs/rcsprog.c,v retrieving revision 1.96 retrieving revision 1.97 diff -u -r1.96 -r1.97 --- src/usr.bin/rcs/rcsprog.c 2006/04/11 08:07:35 1.96 +++ src/usr.bin/rcs/rcsprog.c 2006/04/12 08:23:30 1.97 @@ -1,4 +1,4 @@ -/* $OpenBSD: rcsprog.c,v 1.96 2006/04/11 08:07:35 ray Exp $ */ +/* $OpenBSD: rcsprog.c,v 1.97 2006/04/12 08:23:30 ray Exp $ */ /* * Copyright (c) 2005 Jean-Francois Brousseau * All rights reserved. @@ -75,16 +75,13 @@ _exit(1); } +/* + * Allocate an RCSNUM and store in . + */ void rcs_set_rev(const char *str, RCSNUM **rev) { - if (str == NULL) - return; - - if ((*rev != NULL) && (*rev != RCS_HEAD_REV)) - cvs_log(LP_WARN, "redefinition of revision number"); - - if ((*rev = rcsnum_parse(str)) == NULL) + if (str == NULL || (*rev = rcsnum_parse(str)) == NULL) fatal("bad revision number '%s'", str); } @@ -359,6 +356,36 @@ xfree(rcspath); return (0); +} + +/* + * Set to . Print warning if is redefined. + */ +void +rcs_setrevstr(char **str, char *new_str) +{ + if (new_str == NULL) + return; + if (*str != NULL) + cvs_log(LP_WARN, "redefinition of revision number"); + *str = new_str; +} + +/* + * Set or to , depending on which is not set. + * If both are set, error out. + */ +void +rcs_setrevstr2(char **str1, char **str2, char *new_str) +{ + if (new_str == NULL) + return; + if (*str1 == NULL) + *str1 = new_str; + else if (*str2 == NULL) + *str2 = new_str; + else + fatal("too many revision numbers"); } int