add support for seeking to the end of a file
This commit is contained in:
@ -767,8 +767,14 @@ bigint platform::ftell(FILE *fp)
|
||||
int platform::fseek(FILE *fp, bigint pos)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
if (pos == platform::END_OF_FILE)
|
||||
return ::_fseeki64(fp, 0, SEEK_END);
|
||||
else
|
||||
return ::_fseeki64(fp, (__int64) pos, SEEK_SET);
|
||||
#else
|
||||
if (pos == platform::END_OF_FILE)
|
||||
return ::fseek(fp, 0, SEEK_END);
|
||||
else
|
||||
return ::fseek(fp, (long) pos, SEEK_SET);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -263,7 +263,12 @@ namespace platform {
|
||||
|
||||
bigint ftell(FILE *fp);
|
||||
|
||||
/*! constant to seek to the end of the file */
|
||||
constexpr bigint END_OF_FILE = -1;
|
||||
|
||||
/*! Set absolute file position
|
||||
*
|
||||
* If the absolute position is END_OF_FILE, then position at the end of the file.
|
||||
*
|
||||
* \param fp FILE pointer of the given file
|
||||
* \param pos new position of the FILE pointer
|
||||
|
||||
@ -170,7 +170,9 @@ TEST(Platform, fseek_ftell)
|
||||
ASSERT_EQ(platform::fseek(fp, 15), 0);
|
||||
ASSERT_EQ(fgetc(fp), '6');
|
||||
fflush(fp);
|
||||
fseek(fp, -1, SEEK_END);
|
||||
ASSERT_EQ(platform::fseek(fp, platform::END_OF_FILE), 0);
|
||||
ASSERT_EQ(platform::ftell(fp), 21);
|
||||
ASSERT_EQ(platform::fseek(fp, 20), 0);
|
||||
ASSERT_EQ(fgetc(fp), 0);
|
||||
ASSERT_EQ(platform::ftell(fp), 21);
|
||||
fclose(fp);
|
||||
|
||||
Reference in New Issue
Block a user