=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rcs/rcsprog.c,v retrieving revision 1.67 retrieving revision 1.68 diff -c -r1.67 -r1.68 *** src/usr.bin/rcs/rcsprog.c 2006/03/08 12:25:34 1.67 --- src/usr.bin/rcs/rcsprog.c 2006/03/08 20:19:39 1.68 *************** *** 1,4 **** ! /* $OpenBSD: rcsprog.c,v 1.67 2006/03/08 12:25:34 xsa Exp $ */ /* * Copyright (c) 2005 Jean-Francois Brousseau * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: rcsprog.c,v 1.68 2006/03/08 20:19:39 joris Exp $ */ /* * Copyright (c) 2005 Jean-Francois Brousseau * All rights reserved. *************** *** 64,73 **** --- 64,83 ---- { "ident", ident_main, ident_usage }, }; + struct cvs_wklhead rcs_temp_files; + + void sighdlr(int); static void rcs_set_description(RCSFILE *, const char *); static void rcs_attach_symbol(RCSFILE *, const char *); void + sighdlr(int sig) + { + cvs_worklist_clean(&rcs_temp_files, cvs_worklist_unlink); + _exit(1); + } + + void rcs_set_rev(const char *str, RCSNUM **rev) { RCSNUM *t; *************** *** 330,335 **** --- 340,346 ---- ret = -1; rcs_optind = 1; cvs_log_init(LD_STD, 0); + SLIST_INIT(&rcs_temp_files); cmd_argc = 0; cmd_argv[cmd_argc++] = argv[0]; *************** *** 349,354 **** --- 360,372 ---- for (ret = 1; ret < argc; ret++) cmd_argv[cmd_argc++] = argv[ret]; + + signal(SIGHUP, sighdlr); + signal(SIGINT, sighdlr); + signal(SIGQUIT, sighdlr); + signal(SIGABRT, sighdlr); + signal(SIGALRM, sighdlr); + signal(SIGTERM, sighdlr); for (i = 0; i < (sizeof(programs)/sizeof(programs[0])); i++) if (strcmp(__progname, programs[i].prog_name) == 0) {