From ac02533e08798c85b4b8f3d8422f5c5f4c437031 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 15 Jan 2004 19:51:49 +0000 Subject: [PATCH] * gentls_offsets: Reinstate unlink of temp files. * fhandler_console.cc (fhandler_console::close): Fix debugging output. (fhandler_console::fixup_after_fork): Decrement open_fhs prior to call to fhandler_console::open since this would cause incrementing too much incrementing in child processes. (Probably needs to be handled more elegantly someday) (fhandler_console::fixup_after_exec): Ditto. --- winsup/cygwin/ChangeLog | 13 +++++++++++++ winsup/cygwin/fhandler_console.cc | 5 +++-- winsup/cygwin/gentls_offsets | 4 ++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index b52a26b8c..16aa73fe5 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,16 @@ +2004-01-15 Christopher Faylor + + * gentls_offsets: Reinstate unlink of temp files. + +2004-01-14 Christopher Faylor + + * fhandler_console.cc (fhandler_console::close): Fix debugging output. + (fhandler_console::fixup_after_fork): Decrement open_fhs prior to call + to fhandler_console::open since this would cause incrementing too much + incrementing in child processes. (Probably needs to be handled more + elegantly someday) + (fhandler_console::fixup_after_exec): Ditto. + 2004-01-14 Christopher Faylor * cygtls.h (_threadinfo::call): Remove regparm declaration to work diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc index 86c02009a..af825defb 100644 --- a/winsup/cygwin/fhandler_console.cc +++ b/winsup/cygwin/fhandler_console.cc @@ -680,8 +680,7 @@ fhandler_console::close (void) if (!cygheap->fdtab.in_vfork_cleanup () && --(cygheap->open_fhs) <= 0 && myself->ctty != TTY_CONSOLE) { - syscall_printf ("open_fhs %d, freeing console %p", cygheap->open_fhs, - myself->ctty); + syscall_printf ("open_fhs %d", cygheap->open_fhs); FreeConsole (); } debug_printf ("decremented open_fhs, now %d", cygheap->open_fhs); @@ -1761,6 +1760,7 @@ fhandler_console::fixup_after_fork (HANDLE) /* Windows does not allow duplication of console handles between processes so open the console explicitly. */ + cygheap->open_fhs--; /* The downside of storing this in cygheap. */ if (!open (O_NOCTTY | get_flags (), 0)) system_printf ("error opening console after fork, %E"); @@ -1791,6 +1791,7 @@ fhandler_console::fixup_after_exec (HANDLE) HANDLE h = get_handle (); HANDLE oh = get_output_handle (); + cygheap->open_fhs--; /* The downside of storing this in cygheap. */ if (!open (O_NOCTTY | get_flags (), 0)) { int sawerr = 0; diff --git a/winsup/cygwin/gentls_offsets b/winsup/cygwin/gentls_offsets index 434707b06..375b66840 100755 --- a/winsup/cygwin/gentls_offsets +++ b/winsup/cygwin/gentls_offsets @@ -5,7 +5,7 @@ open(TLS, $tls) or die "$0: couldn't open tls file \"$tls\" - $!\n"; my $struct = ''; my @fields = (); my $def = ''; -my $tls = join('', ); +$tls = join('', ); $tls =~ s/\n[^\n]*gentls_offsets[^\n]*\n(.+)\Z/$1/os; my $pre = $`; substr($tls, 0, length($pre)) = ''; @@ -75,5 +75,5 @@ open(OFFS, "/tmp/$$.a.out|") or die "$0: couldn't run \"/tmp/$$.a.out\" - $!\n"; print TLS_OUT ; close OFFS; close TLS_OUT; -# unlink "/tmp/$$.cc", "/tmp/$$.a.out"; +unlink "/tmp/$$.cc", "/tmp/$$.a.out"; exit(0);