diff -r 089696e0c603 tools/ioemu/target-i386-dm/exec-dm.c --- a/tools/ioemu/target-i386-dm/exec-dm.c Thu May 17 11:42:46 2007 +0100 +++ b/tools/ioemu/target-i386-dm/exec-dm.c Thu May 31 20:50:51 2007 -0400 @@ -124,7 +124,6 @@ static int io_mem_nb = 1; static int io_mem_nb = 1; /* log support */ -char *logfilename = "/tmp/qemu.log"; FILE *logfile; int loglevel; @@ -166,29 +165,28 @@ void cpu_set_log(int log_flags) void cpu_set_log(int log_flags) { loglevel = log_flags; + if (!logfile) + logfile = stderr; +} + +void cpu_set_log_filename(const char *filename) +{ + logfile = fopen(filename, "w"); if (!logfile) { - logfile = fopen(logfilename, "w"); - if (!logfile) { - perror(logfilename); - _exit(1); - } + perror(filename); + _exit(1); + } #if !defined(CONFIG_SOFTMMU) - /* must avoid mmap() usage of glibc by setting a buffer "by hand" */ - { - static uint8_t logfile_buf[4096]; - setvbuf(logfile, logfile_buf, _IOLBF, sizeof(logfile_buf)); - } + /* must avoid mmap() usage of glibc by setting a buffer "by hand" */ + { + static uint8_t logfile_buf[4096]; + setvbuf(logfile, logfile_buf, _IOLBF, sizeof(logfile_buf)); + } #else - setvbuf(logfile, NULL, _IOLBF, 0); -#endif - stdout = logfile; - stderr = logfile; - } -} - -void cpu_set_log_filename(const char *filename) -{ - logfilename = strdup(filename); + setvbuf(logfile, NULL, _IOLBF, 0); +#endif + stdout = logfile; + stderr = logfile; } /* mask must never be zero, except for A20 change call */ diff -r 089696e0c603 tools/ioemu/vl.c --- a/tools/ioemu/vl.c Thu May 17 11:42:46 2007 +0100 +++ b/tools/ioemu/vl.c Thu May 31 20:51:20 2007 -0400 @@ -7144,9 +7144,7 @@ int main(int argc, char **argv) nb_nics = 0; /* default mac address of the first network interface */ - /* init debug */ - sprintf(qemu_dm_logfilename, "/var/log/xen/qemu-dm.%ld.log", (long)getpid()); - cpu_set_log_filename(qemu_dm_logfilename); + /* Init logs to stderr to start with */ cpu_set_log(0); optind = 1; @@ -7525,7 +7523,7 @@ int main(int argc, char **argv) semihosting_enabled = 1; break; case QEMU_OPTION_domainname: - strncat(domain_name, optarg, sizeof(domain_name) - 20); + strncpy(domain_name, optarg, sizeof(domain_name) - 1); break; case QEMU_OPTION_d: domid = atoi(optarg); @@ -7547,6 +7545,10 @@ int main(int argc, char **argv) } } } + + /* Now send logs to our named config */ + sprintf(qemu_dm_logfilename, "/var/log/xen/qemu-dm-%s.log", domain_name); + cpu_set_log_filename(qemu_dm_logfilename); #ifndef _WIN32 if (daemonize && !nographic && vnc_display == NULL && vncunused == 0) {