Thu Oct 24 17:32:57 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>

* hurd/hurdsig.c (write_corefile): If we can't create the core
	file, still call crash_dump_task with a null FILE arg.  Maybe it
	won't actually need the file.
This commit is contained in:
Thomas Bushnell, BSG 1996-10-31 17:30:56 +00:00
parent 1c404962af
commit 78abf56371

View File

@ -153,17 +153,16 @@ write_corefile (int signo, const struct hurd_signal_detail *detail)
return 0; return 0;
/* Get a port to the directory where the new core file will reside. */ /* Get a port to the directory where the new core file will reside. */
file = MACH_PORT_NULL;
name = _hurdsig_getenv ("COREFILE"); name = _hurdsig_getenv ("COREFILE");
if (name == NULL) if (name == NULL)
name = "core"; name = "core";
coredir = __file_name_split (name, (char **) &name); coredir = __file_name_split (name, (char **) &name);
if (coredir == MACH_PORT_NULL) if (coredir != MACH_PORT_NULL)
return 0;
/* Create the new file, but don't link it into the directory yet. */ /* Create the new file, but don't link it into the directory yet. */
if (err = __dir_mkfile (coredir, O_WRONLY|O_CREAT, __dir_mkfile (coredir, O_WRONLY|O_CREAT,
0600 & ~_hurd_umask, /* XXX ? */ 0600 & ~_hurd_umask, /* XXX ? */
&file)) &file))
return 0;
/* Call the core dumping server to write the core file. */ /* Call the core dumping server to write the core file. */
err = __crash_dump_task (coreserver, err = __crash_dump_task (coreserver,
@ -174,13 +173,14 @@ write_corefile (int signo, const struct hurd_signal_detail *detail)
_hurd_ports[INIT_PORT_CTTYID].port, _hurd_ports[INIT_PORT_CTTYID].port,
MACH_MSG_TYPE_COPY_SEND); MACH_MSG_TYPE_COPY_SEND);
__mach_port_deallocate (__mach_task_self (), coreserver); __mach_port_deallocate (__mach_task_self (), coreserver);
if (! err)
if (! err && file != MACH_PORT_NULL)
/* The core dump into FILE succeeded, so now link it into the /* The core dump into FILE succeeded, so now link it into the
directory. */ directory. */
err = __dir_link (file, coredir, name, 1); err = __dir_link (file, coredir, name, 1);
__mach_port_deallocate (__mach_task_self (), file); __mach_port_deallocate (__mach_task_self (), file);
__mach_port_deallocate (__mach_task_self (), coredir); __mach_port_deallocate (__mach_task_self (), coredir);
return !err; return !err && file != MACH_PORT_NULL;
} }