mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
Added fseeko(3) and ftello(3).
This commit is contained in:
parent
912b2f78f0
commit
064b69d2b6
3 changed files with 16 additions and 6 deletions
|
@ -15,7 +15,7 @@ typedef struct _FILE
|
||||||
void* user;
|
void* user;
|
||||||
size_t (*read_func)(void* ptr, size_t size, size_t nmemb, void* user);
|
size_t (*read_func)(void* ptr, size_t size, size_t nmemb, void* user);
|
||||||
size_t (*write_func)(const void* ptr, size_t size, size_t nmemb, void* user);
|
size_t (*write_func)(const void* ptr, size_t size, size_t nmemb, void* user);
|
||||||
int (*seek_func)(void* user, long offset, int whence);
|
int (*seek_func)(void* user, off_t offset, int whence);
|
||||||
long (*tell_func)(void* user);
|
long (*tell_func)(void* user);
|
||||||
void (*clearerr_func)(void* user);
|
void (*clearerr_func)(void* user);
|
||||||
int (*eof_func)(void* user);
|
int (*eof_func)(void* user);
|
||||||
|
|
|
@ -74,16 +74,16 @@ static size_t fdio_write(const void* ptr, size_t size, size_t nmemb, void* user)
|
||||||
return sofar;
|
return sofar;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fdio_seek(void* user, long offset, int whence)
|
static int fdio_seek(void* user, off_t offset, int whence)
|
||||||
{
|
{
|
||||||
fdio_t* fdio = (fdio_t*) user;
|
fdio_t* fdio = (fdio_t*) user;
|
||||||
return (int) lseek(fdio->fd, offset, whence);
|
return (int) lseek(fdio->fd, offset, whence);
|
||||||
}
|
}
|
||||||
|
|
||||||
static long fdio_tell(void* user)
|
static off_t fdio_tell(void* user)
|
||||||
{
|
{
|
||||||
fdio_t* fdio = (fdio_t*) user;
|
fdio_t* fdio = (fdio_t*) user;
|
||||||
return (int) lseek(fdio->fd, 0, SEEK_CUR);
|
return lseek(fdio->fd, 0, SEEK_CUR);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fdio_clearerr(void* user)
|
static void fdio_clearerr(void* user)
|
||||||
|
|
|
@ -91,11 +91,16 @@ size_t fwrite(const void* ptr, size_t size, size_t nmemb, FILE* fp)
|
||||||
return sofar;
|
return sofar;
|
||||||
}
|
}
|
||||||
|
|
||||||
int fseek(FILE* fp, long offset, int whence)
|
int fseeko(FILE* fp, off_t offset, int whence)
|
||||||
{
|
{
|
||||||
return (fp->seek_func) ? fp->seek_func(fp->user, offset, whence) : 0;
|
return (fp->seek_func) ? fp->seek_func(fp->user, offset, whence) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int fseek(FILE* fp, long offset, int whence)
|
||||||
|
{
|
||||||
|
return fseeko(fp, offset, whence);
|
||||||
|
}
|
||||||
|
|
||||||
void clearerr(FILE* fp)
|
void clearerr(FILE* fp)
|
||||||
{
|
{
|
||||||
if ( fp->clearerr_func ) { fp->clearerr_func(fp->user); }
|
if ( fp->clearerr_func ) { fp->clearerr_func(fp->user); }
|
||||||
|
@ -119,12 +124,17 @@ void rewind(FILE* fp)
|
||||||
clearerr(fp);
|
clearerr(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
long ftell(FILE* fp)
|
off_t ftello(FILE* fp)
|
||||||
{
|
{
|
||||||
if ( !fp->tell_func ) { errno = EBADF; return -1; }
|
if ( !fp->tell_func ) { errno = EBADF; return -1; }
|
||||||
return fp->tell_func(fp->user);
|
return fp->tell_func(fp->user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long ftell(FILE* fp)
|
||||||
|
{
|
||||||
|
return (long) ftello(fp);
|
||||||
|
}
|
||||||
|
|
||||||
int fflush(FILE* fp)
|
int fflush(FILE* fp)
|
||||||
{
|
{
|
||||||
if ( !fp )
|
if ( !fp )
|
||||||
|
|
Loading…
Reference in a new issue