mirror of
https://github.com/Fennix-Project/Userspace.git
synced 2025-05-27 15:04:25 +00:00
Implement fseek
This commit is contained in:
parent
d0ec077c09
commit
f48511c6ff
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
#define SEEK_SET 0
|
#define SEEK_SET 0
|
||||||
#define SEEK_CUR 1
|
#define SEEK_CUR 1
|
||||||
@ -29,7 +30,7 @@ extern "C"
|
|||||||
FILE *fopen(const char *filename, const char *mode);
|
FILE *fopen(const char *filename, const char *mode);
|
||||||
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
|
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
|
||||||
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
|
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
|
||||||
int fseek(FILE *stream, long offset, int whence);
|
off_t fseek(FILE *stream, long offset, int whence);
|
||||||
long ftell(FILE *stream);
|
long ftell(FILE *stream);
|
||||||
int fclose(FILE *fp);
|
int fclose(FILE *fp);
|
||||||
int fflush(FILE *stream);
|
int fflush(FILE *stream);
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
typedef unsigned int _dev_t;
|
typedef unsigned int _dev_t;
|
||||||
typedef unsigned short _ino_t;
|
typedef unsigned short _ino_t;
|
||||||
typedef unsigned short _mode_t;
|
typedef unsigned short _mode_t;
|
||||||
typedef int _off_t;
|
typedef long _off_t;
|
||||||
|
|
||||||
#define dev_t _dev_t
|
#define dev_t _dev_t
|
||||||
#define ino_t _ino_t
|
#define ino_t _ino_t
|
||||||
|
@ -35,22 +35,13 @@ int fclose(FILE *fp)
|
|||||||
return syscall1(_FileClose, (uint64_t)KP);
|
return syscall1(_FileClose, (uint64_t)KP);
|
||||||
}
|
}
|
||||||
|
|
||||||
int fseek(FILE *stream, long offset, int whence)
|
off_t fseek(FILE *stream, long offset, int whence)
|
||||||
{
|
{
|
||||||
switch (whence)
|
off_t new_offset = syscall3(_FileSeek, stream->KernelPrivate, offset, whence);
|
||||||
{
|
if (IsSyscallError(new_offset))
|
||||||
case SEEK_SET:
|
|
||||||
stream->offset = offset;
|
|
||||||
break;
|
|
||||||
case SEEK_CUR:
|
|
||||||
break;
|
|
||||||
case SEEK_END:
|
|
||||||
// stream->offset = syscall1(_FileLength, (uint64_t)File->KernelPrivate) + offset;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
stream->offset = new_offset;
|
||||||
return stream->offset;
|
return new_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
long ftell(FILE *stream)
|
long ftell(FILE *stream)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user