diff options
author | unknown <marko@hundin.mysql.fi> | 2004-08-06 15:55:50 +0300 |
---|---|---|
committer | unknown <marko@hundin.mysql.fi> | 2004-08-06 15:55:50 +0300 |
commit | fc4364e3509f9fa625e65f9e124b8133aa103f76 (patch) | |
tree | c1d7d9cd3e693926714ec72a5dba2d8ea59dde2d /innobase/os | |
parent | 06cd2efc2e231d0526091e3e9e4dc47985a8081c (diff) | |
download | mariadb-git-fc4364e3509f9fa625e65f9e124b8133aa103f76.tar.gz |
InnoDB: Add option for disabling innodb_status.<pid> files.
InnoDB: Implement tmpfile() differently on Windows (Bug #3998)
innobase/dict/dict0dict.c:
Check the return value of os_file_create_tmpfile(),
as it can now return NULL
innobase/include/os0file.h:
Note that os_file_create_tmpfile() can now return NULL
innobase/include/srv0srv.h:
Add a new server flag (srv_innodb_status) to disable
the creation of innodb_status.<pid> files
innobase/lock/lock0lock.c:
Check the return value of os_file_create_tmpfile(),
as it can now return NULL
innobase/os/os0file.c:
os_file_create_tmpfile(): separate implementation for Win32;
errors will be reported but will not cause assertion failure
innobase/srv/srv0srv.c:
Add a new server flag (srv_innodb_status) to disable
the creation of innodb_status.<pid> files
innobase/srv/srv0start.c:
innobase_start_or_create_for_mysql(): create srv_monitor_file
with tmpfile() or with a visible name "innodb_status.<pid>",
depending on the setting of the flag srv_innodb_status.
sql/ha_innodb.cc:
innobase_init(): initialize srv_innodb_status
update_table_comment(), get_foreign_key_create_info(): replace
tmpfile() with os_file_create_tmpfile()
sql/ha_innodb.h:
Add new Boolean flag, innobase_create_status_file.
sql/mysqld.cc:
Add new Boolean flag, innodb_status_file
Diffstat (limited to 'innobase/os')
-rw-r--r-- | innobase/os/os0file.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/innobase/os/os0file.c b/innobase/os/os0file.c index a70333ba6ab..c33066b1476 100644 --- a/innobase/os/os0file.c +++ b/innobase/os/os0file.c @@ -377,16 +377,33 @@ Creates a temporary file. In case of error, causes abnormal termination. */ FILE* os_file_create_tmpfile(void) /*========================*/ - /* out: temporary file handle (never NULL) */ + /* out: temporary file handle, or NULL */ { - FILE* file = tmpfile(); + FILE* file; +#ifdef __WIN__ + int fd = -1; + char* name; + file = NULL; + if (NULL == (name = tempnam(fil_path_to_mysql_datadir, "ib")) + || -1 == (fd = _open(name, _O_CREAT | _O_EXCL | _O_RDWR + | _O_SEQUENTIAL | _O_SHORT_LIVED | _O_TEMPORARY)) + || NULL == (file = fdopen(fd, "w+b"))) { + ut_print_timestamp(stderr); + fprintf(stderr, " InnoDB: Error: unable to create" + " temporary file %s\n", name ? name : "name"); + if (fd != -1) { + _close(fd); + } + } + free(name); +#else /* __WIN__ */ + file = tmpfile(); if (file == NULL) { ut_print_timestamp(stderr); fputs(" InnoDB: Error: unable to create temporary file\n", stderr); - os_file_handle_error(NULL, "tmpfile"); - ut_error; } +#endif /* __WIN__ */ return(file); } |