mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
Merge mysql.com:/home/wax/mysql/mysql-4.0
into mysql.com:/home/wax/mysql/mysql-4.0chsize
This commit is contained in:
commit
5eb2c03f84
3 changed files with 41 additions and 16 deletions
|
@ -112,6 +112,7 @@ vva@eagle.mysql.r18.ru
|
|||
vva@genie.(none)
|
||||
walrus@kishkin.ru
|
||||
walrus@mysql.com
|
||||
wax@mysql.com
|
||||
worm@altair.is.lan
|
||||
zak@balfor.local
|
||||
zak@linux.local
|
||||
|
|
|
@ -276,6 +276,7 @@ inline double ulonglong2double(ulonglong value)
|
|||
#define HAVE_ISAM /* We want to have support for ISAM in 4.0 */
|
||||
#define HAVE_QUERY_CACHE
|
||||
#define SPRINTF_RETURNS_INT
|
||||
#define HAVE_SETFILEPOINTER /* SetFilePointer function for huge files */
|
||||
|
||||
#ifdef NOT_USED
|
||||
#define HAVE_SNPRINTF /* Gave link error */
|
||||
|
|
|
@ -36,24 +36,11 @@
|
|||
0 Ok
|
||||
1 Error
|
||||
*/
|
||||
|
||||
int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags)
|
||||
{
|
||||
DBUG_ENTER("my_chsize");
|
||||
DBUG_PRINT("my",("fd: %d length: %lu MyFlags: %d",fd,(ulong) newlength,
|
||||
MyFlags));
|
||||
|
||||
#ifdef HAVE_CHSIZE
|
||||
if (chsize(fd,(off_t) newlength))
|
||||
{
|
||||
DBUG_PRINT("error",("errno: %d",errno));
|
||||
my_errno=errno;
|
||||
if (MyFlags & MY_WME)
|
||||
my_error(EE_CANT_CHSIZE,MYF(ME_BELL+ME_WAITTANG),errno);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
#else
|
||||
/* if file is shorter, expand with null, else fill unused part with null */
|
||||
{
|
||||
my_off_t oldsize;
|
||||
|
@ -62,7 +49,42 @@ int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags)
|
|||
oldsize = my_seek(fd, 0L, MY_SEEK_END, MYF(MY_WME+MY_FAE));
|
||||
DBUG_PRINT("info",("old_size: %ld", (ulong) oldsize));
|
||||
|
||||
#ifdef HAVE_FTRUNCATE
|
||||
#ifdef HAVE_CHSIZE
|
||||
if (oldsize > newlength || filler == 0)
|
||||
{
|
||||
if (chsize(fd,(off_t) newlength))
|
||||
{
|
||||
DBUG_PRINT("error",("errno: %d",errno));
|
||||
my_errno=errno;
|
||||
if (MyFlags & MY_WME)
|
||||
my_error(EE_CANT_CHSIZE,MYF(ME_BELL+ME_WAITTANG),errno);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (filler == 0)
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
}
|
||||
#elif defined(HAVE_SETFILEPOINTER)
|
||||
if (oldsize > newlength)
|
||||
{
|
||||
LARGE_INTEGER new_length;
|
||||
HANDLE win_file;
|
||||
win_file= (HANDLE)_get_osfhandle(fd);
|
||||
new_length.QuadPart = newlength;
|
||||
if (SetFilePointerEx(win_file,new_length,NULL,FILE_BEGIN))
|
||||
{
|
||||
if (SetEndOfFile(win_file))
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
DBUG_PRINT("error",("errno: %d",errno));
|
||||
my_errno=errno;
|
||||
if (MyFlags & MY_WME)
|
||||
my_error(EE_CANT_CHSIZE,MYF(ME_BELL+ME_WAITTANG),errno);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
#elif defined(HAVE_FTRUNCATE)
|
||||
if (oldsize > newlength)
|
||||
{
|
||||
if (ftruncate(fd, (off_t) newlength))
|
||||
|
@ -99,5 +121,6 @@ int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags)
|
|||
DBUG_PRINT("error",("errno: %d",my_errno));
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
#endif
|
||||
} /* my_chsize */
|
||||
} /* my_chsize */
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue