Commit 48260e9d authored by unknown's avatar unknown

InnoDB portability fix: new function os_file_set_eof()


innobase/include/os0file.h:
  Add os_file_set_eof()
innobase/os/os0file.c:
  Add os_file_set_eof()
innobase/srv/srv0srv.c:
  Replace chsize() or ftruncate() with os_file_set_eof()
sql/ha_innodb.cc:
  Replace my_chsize() with os_file_set_eof()
parent 7d918f21
......@@ -227,6 +227,14 @@ os_file_set_size(
size */
ulint size_high);/* in: most significant 32 bits of size */
/***************************************************************************
Truncates a file at its current position. */
ibool
os_file_set_eof(
/*============*/
/* out: TRUE if success */
FILE* file); /* in: file to be truncated */
/***************************************************************************
Flushes the write buffers of a given file to the disk. */
ibool
......
......@@ -1031,6 +1031,23 @@ error_handling:
return(FALSE);
}
/***************************************************************************
Truncates a file at its current position. */
ibool
os_file_set_eof(
/*============*/
/* out: TRUE if success */
FILE* file) /* in: file to be truncated */
{
#ifdef __WIN__
HANDLE h = (HANDLE) _get_osfhandle(fileno(file));
return(SetEndOfFile(h));
#else /* __WIN__ */
return(!ftruncate(fileno(file), ftell(file)));
#endif /* __WIN__ */
}
/***************************************************************************
Flushes the write buffers of a given file to the disk. */
......
......@@ -1609,11 +1609,7 @@ loop:
mutex_enter(&srv_monitor_file_mutex);
rewind(srv_monitor_file);
srv_printf_innodb_monitor(srv_monitor_file);
#ifdef __WIN__
chsize(fileno(srv_monitor_file), ftell(srv_monitor_file));
#else /* __WIN__ */
ftruncate(fileno(srv_monitor_file), ftell(srv_monitor_file));
#endif /* __WIN__ */
os_file_set_eof(srv_monitor_file);
mutex_exit(&srv_monitor_file_mutex);
if (srv_print_innodb_tablespace_monitor
......
......@@ -4648,7 +4648,7 @@ innodb_show_status(
rewind(srv_monitor_file);
srv_printf_innodb_monitor(srv_monitor_file);
flen = ftell(srv_monitor_file);
my_chsize(fileno(srv_monitor_file), flen, 0, MYF(0));
os_file_set_eof(srv_monitor_file);
if(flen > 64000 - 1) {
flen = 64000 - 1;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment