msvcrt: Implemented _chsize_s.
This commit is contained in:
parent
b436087217
commit
3bb2c11757
|
@ -725,7 +725,7 @@
|
||||||
@ cdecl -arch=i386 -norelay _chkesp() msvcrt._chkesp
|
@ cdecl -arch=i386 -norelay _chkesp() msvcrt._chkesp
|
||||||
@ cdecl _chmod(str long) msvcrt._chmod
|
@ cdecl _chmod(str long) msvcrt._chmod
|
||||||
@ cdecl _chsize(long long) msvcrt._chsize
|
@ cdecl _chsize(long long) msvcrt._chsize
|
||||||
@ stub _chsize_s
|
@ cdecl _chsize_s(long int64) msvcrt._chsize_s
|
||||||
@ cdecl _clearfp() msvcrt._clearfp
|
@ cdecl _clearfp() msvcrt._clearfp
|
||||||
@ cdecl _close(long) msvcrt._close
|
@ cdecl _close(long) msvcrt._close
|
||||||
@ cdecl _commit(long) msvcrt._commit
|
@ cdecl _commit(long) msvcrt._commit
|
||||||
|
|
|
@ -1073,7 +1073,7 @@
|
||||||
@ cdecl -arch=i386 -norelay _chkesp() msvcrt._chkesp
|
@ cdecl -arch=i386 -norelay _chkesp() msvcrt._chkesp
|
||||||
@ cdecl _chmod(str long) msvcrt._chmod
|
@ cdecl _chmod(str long) msvcrt._chmod
|
||||||
@ cdecl _chsize(long long) msvcrt._chsize
|
@ cdecl _chsize(long long) msvcrt._chsize
|
||||||
@ stub _chsize_s
|
@ cdecl _chsize_s(long int64) msvcrt._chsize_s
|
||||||
@ cdecl _clearfp() msvcrt._clearfp
|
@ cdecl _clearfp() msvcrt._clearfp
|
||||||
@ cdecl _close(long) msvcrt._close
|
@ cdecl _close(long) msvcrt._close
|
||||||
@ cdecl _commit(long) msvcrt._commit
|
@ cdecl _commit(long) msvcrt._commit
|
||||||
|
|
|
@ -389,7 +389,7 @@
|
||||||
@ cdecl -arch=i386 -norelay _chkesp() msvcrt._chkesp
|
@ cdecl -arch=i386 -norelay _chkesp() msvcrt._chkesp
|
||||||
@ cdecl _chmod(str long) msvcrt._chmod
|
@ cdecl _chmod(str long) msvcrt._chmod
|
||||||
@ cdecl _chsize(long long) msvcrt._chsize
|
@ cdecl _chsize(long long) msvcrt._chsize
|
||||||
@ stub _chsize_s
|
@ cdecl _chsize_s(long int64) msvcrt._chsize_s
|
||||||
@ cdecl _clearfp() msvcrt._clearfp
|
@ cdecl _clearfp() msvcrt._clearfp
|
||||||
@ cdecl _close(long) msvcrt._close
|
@ cdecl _close(long) msvcrt._close
|
||||||
@ cdecl _commit(long) msvcrt._commit
|
@ cdecl _commit(long) msvcrt._commit
|
||||||
|
|
|
@ -372,7 +372,7 @@
|
||||||
@ cdecl -arch=i386 -norelay _chkesp() msvcrt._chkesp
|
@ cdecl -arch=i386 -norelay _chkesp() msvcrt._chkesp
|
||||||
@ cdecl _chmod(str long) msvcrt._chmod
|
@ cdecl _chmod(str long) msvcrt._chmod
|
||||||
@ cdecl _chsize(long long) msvcrt._chsize
|
@ cdecl _chsize(long long) msvcrt._chsize
|
||||||
@ stub _chsize_s
|
@ cdecl _chsize_s(long int64) msvcrt._chsize_s
|
||||||
@ cdecl _clearfp() msvcrt._clearfp
|
@ cdecl _clearfp() msvcrt._clearfp
|
||||||
@ cdecl _close(long) msvcrt._close
|
@ cdecl _close(long) msvcrt._close
|
||||||
@ cdecl _commit(long) msvcrt._commit
|
@ cdecl _commit(long) msvcrt._commit
|
||||||
|
|
|
@ -1259,15 +1259,17 @@ int CDECL MSVCRT_fseek(MSVCRT_FILE* file, MSVCRT_long offset, int whence)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* _chsize (MSVCRT.@)
|
* _chsize_s (MSVCRT.@)
|
||||||
*/
|
*/
|
||||||
int CDECL MSVCRT__chsize(int fd, MSVCRT_long size)
|
int CDECL MSVCRT__chsize_s(int fd, __int64 size)
|
||||||
{
|
{
|
||||||
LONG cur, pos;
|
__int64 cur, pos;
|
||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
BOOL ret = FALSE;
|
BOOL ret = FALSE;
|
||||||
|
|
||||||
TRACE("(fd=%d, size=%d)\n", fd, size);
|
TRACE("(fd=%d, size=%s)\n", fd, wine_dbgstr_longlong(size));
|
||||||
|
|
||||||
|
if (!MSVCRT_CHECK_PMT(size >= 0)) return MSVCRT_EINVAL;
|
||||||
|
|
||||||
LOCK_FILES();
|
LOCK_FILES();
|
||||||
|
|
||||||
|
@ -1275,10 +1277,10 @@ int CDECL MSVCRT__chsize(int fd, MSVCRT_long size)
|
||||||
if (handle != INVALID_HANDLE_VALUE)
|
if (handle != INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
/* save the current file pointer */
|
/* save the current file pointer */
|
||||||
cur = MSVCRT__lseek(fd, 0, SEEK_CUR);
|
cur = MSVCRT__lseeki64(fd, 0, SEEK_CUR);
|
||||||
if (cur >= 0)
|
if (cur >= 0)
|
||||||
{
|
{
|
||||||
pos = MSVCRT__lseek(fd, size, SEEK_SET);
|
pos = MSVCRT__lseeki64(fd, size, SEEK_SET);
|
||||||
if (pos >= 0)
|
if (pos >= 0)
|
||||||
{
|
{
|
||||||
ret = SetEndOfFile(handle);
|
ret = SetEndOfFile(handle);
|
||||||
|
@ -1286,12 +1288,21 @@ int CDECL MSVCRT__chsize(int fd, MSVCRT_long size)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* restore the file pointer */
|
/* restore the file pointer */
|
||||||
MSVCRT__lseek(fd, cur, SEEK_SET);
|
MSVCRT__lseeki64(fd, cur, SEEK_SET);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UNLOCK_FILES();
|
UNLOCK_FILES();
|
||||||
return ret ? 0 : -1;
|
return ret ? 0 : *MSVCRT__errno();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
* _chsize (MSVCRT.@)
|
||||||
|
*/
|
||||||
|
int CDECL MSVCRT__chsize(int fd, MSVCRT_long size)
|
||||||
|
{
|
||||||
|
/* _chsize_s returns errno on failure but _chsize should return -1 */
|
||||||
|
return MSVCRT__chsize_s( fd, size ) == 0 ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
|
|
|
@ -356,7 +356,7 @@
|
||||||
@ cdecl -arch=i386 -norelay _chkesp()
|
@ cdecl -arch=i386 -norelay _chkesp()
|
||||||
@ cdecl _chmod(str long) MSVCRT__chmod
|
@ cdecl _chmod(str long) MSVCRT__chmod
|
||||||
@ cdecl _chsize(long long) MSVCRT__chsize
|
@ cdecl _chsize(long long) MSVCRT__chsize
|
||||||
# stub _chsize_s(long int64)
|
@ cdecl _chsize_s(long int64) MSVCRT__chsize_s
|
||||||
# stub _chvalidator(long long)
|
# stub _chvalidator(long long)
|
||||||
# stub _chvalidator_l(ptr long long)
|
# stub _chvalidator_l(ptr long long)
|
||||||
@ cdecl _clearfp()
|
@ cdecl _clearfp()
|
||||||
|
|
|
@ -87,6 +87,7 @@ extern "C" {
|
||||||
int __cdecl _access(const char*,int);
|
int __cdecl _access(const char*,int);
|
||||||
int __cdecl _chmod(const char*,int);
|
int __cdecl _chmod(const char*,int);
|
||||||
int __cdecl _chsize(int,__msvcrt_ulong);
|
int __cdecl _chsize(int,__msvcrt_ulong);
|
||||||
|
int __cdecl _chsize_s(int,__int64);
|
||||||
int __cdecl _close(int);
|
int __cdecl _close(int);
|
||||||
int __cdecl _commit(int);
|
int __cdecl _commit(int);
|
||||||
int __cdecl _creat(const char*,int);
|
int __cdecl _creat(const char*,int);
|
||||||
|
|
Loading…
Reference in New Issue