From owner-p4-projects@FreeBSD.ORG Wed Apr 14 23:03:13 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F21F316A4D0; Wed, 14 Apr 2004 23:03:12 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C56DB16A4CE for ; Wed, 14 Apr 2004 23:03:12 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id BF01D43D1D for ; Wed, 14 Apr 2004 23:03:12 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.10/8.12.10) with ESMTP id i3F63CGe080362 for ; Wed, 14 Apr 2004 23:03:12 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i3F63Cav080359 for perforce@freebsd.org; Wed, 14 Apr 2004 23:03:12 -0700 (PDT) (envelope-from marcel@freebsd.org) Date: Wed, 14 Apr 2004 23:03:12 -0700 (PDT) Message-Id: <200404150603.i3F63Cav080359@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 51083 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Apr 2004 06:03:13 -0000 http://perforce.freebsd.org/chv.cgi?CH=51083 Change 51083 by marcel@marcel_nfs on 2004/04/14 23:03:05 close the command file descriptor before we fork/exec gdb(1) and make sure we unlink the (temporary) command file in all normal cases (for now) by registering an atexit() function. Affected files ... .. //depot/projects/gdb/usr.bin/kgdb/main.c#3 edit Differences ... ==== //depot/projects/gdb/usr.bin/kgdb/main.c#3 (text+ko) ==== @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -45,6 +46,14 @@ int cmdfile_fd; static void +atexit_unlink_cmdfile(void) +{ + close(cmdfile_fd); /* Is likely closed already. */ + unlink(cmdfile_name); + free(cmdfile_name); +} + +static void mkpipe(int *rd, int *wr) { int f[2]; @@ -62,6 +71,8 @@ int in, out; int f, fmax; + close(cmdfile_fd); + mkpipe(&in, &gdb_in); mkpipe(&gdb_out, &out); @@ -97,6 +108,7 @@ cmdfile_fd = mkstemp(cmdfile_name); if (cmdfile_fd == -1) err(1, "mkstemp(3)"); + atexit(atexit_unlink_cmdfile); if (write(cmdfile_fd, set_prompt, sizeof(set_prompt) - 1) < 0) err(1, "write(2)"); }