=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rcs/rcsclean.c,v retrieving revision 1.2 retrieving revision 1.3 diff -c -r1.2 -r1.3 *** src/usr.bin/rcs/rcsclean.c 2005/10/06 02:12:53 1.2 --- src/usr.bin/rcs/rcsclean.c 2005/10/06 11:46:03 1.3 *************** *** 1,4 **** ! /* $OpenBSD: rcsclean.c,v 1.2 2005/10/06 02:12:53 joris Exp $ */ /* * Copyright (c) 2005 Joris Vink * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: rcsclean.c,v 1.3 2005/10/06 11:46:03 joris Exp $ */ /* * Copyright (c) 2005 Joris Vink * All rights reserved. *************** *** 40,45 **** --- 40,47 ---- extern char *__progname; static int rcsclean_file(char *, RCSNUM *); + static int nflag = 0; + static int kflag = RCS_KWEXP_ERR; int rcsclean_main(int argc, char **argv) *************** *** 51,58 **** rev = RCS_HEAD_REV; ! while ((ch = getopt(argc, argv, "qr:V")) != -1) { switch (ch) { case 'q': verbose = 0; break; --- 53,72 ---- rev = RCS_HEAD_REV; ! while ((ch = getopt(argc, argv, "k:nqr:V")) != -1) { switch (ch) { + case 'k': + kflag = rcs_kflag_get(optarg); + if (RCS_KWEXP_INVAL(kflag)) { + cvs_log(LP_ERR, + "invalid RCS keyword expansion mode"); + (usage)(); + exit(1); + } + break; + case 'n': + nflag = 1; + break; case 'q': verbose = 0; break; *************** *** 110,123 **** --- 124,145 ---- RCSNUM *frev; BUF *b1, *b2; char *s1, *s2, *c1, *c2; + struct stat st; match = 1; + + if (stat(fname, &st) == -1) + return (-1); + if (rcs_statfile(fname, fpath, sizeof(fpath)) < 0) return (-1); if ((file = rcs_open(fpath, RCS_RDWR)) == NULL) return (-1); + if (!RCS_KWEXP_INVAL(kflag)) + rcs_kwexp_set(file, kflag); + if (rev == RCS_HEAD_REV) frev = file->rf_head; else *************** *** 154,160 **** if (match) { if (verbose) printf("rm -f %s\n", fname); ! (void)unlink(fname); } rcs_close(file); --- 176,183 ---- if (match) { if (verbose) printf("rm -f %s\n", fname); ! if (nflag == 0) ! (void)unlink(fname); } rcs_close(file);